นี่คือการใช้งาน CNN ในชีวิตจริงบน Python 3, Keras และ TensorFlow เราทำงานใน 2 ขั้นตอนหลักโดยใช้ Preprocess.py
ซึ่งสร้างรูปภาพหลักที่ไม่มีข้อผิดพลาด ซึ่งต่อมาจะถูกป้อนไปยังโมเดล CNN ใน train.py
ซึ่งจะฝึกและบันทึกโมเดล CNN
ตัวแก้แคปต์ชานี้ได้รับการพัฒนาเพื่อใช้และปัจจุบันใช้ใน metu-NTE-scraper เพื่อหลีกเลี่ยงการป้องกันแคปต์ชาพอร์ทัลนักเรียนของ METU สำหรับการตรวจสอบความจุของหลักสูตร https://student.metu.edu.tr/ แต่คุณสามารถใช้มันในแอปพลิเคชันของคุณด้วยขั้นตอนง่าย ๆ ซึ่งอธิบายไว้ในวิธีใช้งาน? ส่วน.
ฉันฝึก CNN โดยใช้ TensorFlow เพื่อจัดประเภทรูปภาพของตัวเลข captcha หลังจากการแยกตัวเลข แบบจำลองนี้ประกอบด้วยเลเยอร์แบบหมุนวน 2 ชั้นและชั้นรวมกลุ่มตามด้วยเลเยอร์ที่เชื่อมต่อกันอย่างสมบูรณ์ ฉันฝึกแบบจำลองบนชุดข้อมูลภาพ captcha 10,000 ภาพ ซึ่งต่อมาถูกแบ่งออกเป็นภาพ 60,000 หลัก และได้ความแม่นยำในการทดสอบ 99.94% ในชุดทดสอบ img 12,000 หลัก
ฝึกฝนและทดสอบความแม่นยำของแบบจำลองคือ:
หมายเหตุ: คุณสามารถดูรูปภาพการตอบสนองของเซลล์ประสาทที่เปิดใช้งานบางส่วนได้ด้านล่างขั้นตอนการเตรียมประมวลผล 4 ขั้นตอน
predict.py
ไปยังโปรแกรมหลามของคุณ: Import predict
predict_captcha
โดยใช้เส้นทางไฟล์ของภาพ captcha เป็นอาร์กิวเมนต์เดียวในการทำนาย captcha filepath="pathtocaptchaimage"
prediction=predict.predict_captcha(filepath)
เพื่อช่วยในการทำความเข้าใจตัวแยกตัวเลขและแบบจำลอง เราจะแสดงภาพขั้นตอนให้คุณ
Preprocess.py
ทำงานใน 4 ขั้นตอนเพื่อสร้างภาพหลักซึ่งแสดงด้านล่างพร้อมกับการเปิดใช้งานโมเดลในตอนท้าย
ในขั้นตอนแรก เราจะล้างอาร์ติแฟกต์ของรูปภาพ captcha ซึ่งรวบรวมโดยใช้ SampleCollecter.py
รูปภาพต้นฉบับ | หลังจากนำสิ่งประดิษฐ์ออกแล้ว |
---|---|
ต่อมาภาพที่ไร้สิ่งประดิษฐ์จะถูกตัดเพื่อผูกหลักของแคปช่า
หลังจากนำสิ่งประดิษฐ์ออกแล้ว | ตัดแล้ว |
---|---|
K-mean แบบถ่วงน้ำหนักมากกว่าจะใช้ในการค้นหาจุดศูนย์กลางของแต่ละหลัก
ตัดแล้ว | เซนทรอยด์ |
---|---|
สุดท้ายนี้ เราสร้างภาพดิจิทัลโดยใช้เซนทรอยด์ที่พบจากเคมีน
เซนทรอยด์ | ตัวเลข |
---|---|
หลังจากดึงตัวเลขออกมาแล้ว แบบจำลองของ CNN ใช้เพื่อทำนายภาพแคปต์ชา นี่คือเซลล์ประสาทกระตุ้นการทำงานที่สร้างขึ้นสำหรับเลเยอร์ convolutional สุดท้ายของ CNN ภาพเหล่านี้ถูกสร้างขึ้นโดยแยกเอาต์พุตของเลเยอร์บิดสุดท้ายแล้วแสดงเป็นภาพ รูปภาพการเปิดใช้งานด้านล่างแสดงการตอบสนองของตัวกรองบางตัวในเลเยอร์บิดเกลียวสุดท้ายของรูปภาพ 2 หลัก
ตัวเลขที่แยกออกมา | การเปิดใช้งาน 10 | การเปิดใช้งาน 18 | การเปิดใช้งาน 26 | การเปิดใช้งาน 29 |
---|---|---|---|---|
หมายเหตุ: หากต้องการดูการตอบสนองของเซลล์ประสาทอื่นๆ คุณสามารถตรวจสอบการเปิดใช้งานได้