Development - noonsup1919/FaceDetection_CPE_KU_SRC GitHub Wiki
การพัฒนาระบบ
เราจะใช้ ImageAI ในการตรวจจับวัตถุบนภาพและแยกแต่ละวัตถุออกจากภาพ Model ที่ใช้ในการ Detection คือ RetinaNet, YOLOv3 และ TinyYOLOv3 พร้อมการประมวลผลแบบเรียลไทม์ ขั้นตอนแรกของการศึกษาพัฒนา เราได้นำรูปภาพเข้ามาเพื่อตรวจจับวัตถุแล้วแสดงค่า ได้ค่าออกมาว่ามีวัตถุอะไรบ้าง ซึ่งได้ผลลัพธ์ดังนี้
ขั้นตอนต่อมาเราทำการศึกษา ซึ่งพบว่าสามารถตรวจจับวัตถุเฉพาะอย่างได้ เราจึงพัฒนาและได้กำหนดวัตถุที่ต้องการตรวจจับ หลังจากนั้นเราพบว่า OpenCV สามารถตรวจจับวัตถุแบบเรียลไทม์ได้ เราจึงนำกล้อง Webcam มาใช้ในการแสดงค่าแบบเรียลไทม์
INTEGRATION 1
- แสดงภาพเว็ปแคมใน QT
เริ่มแรกเราได้ทำการออกแบบหน้าโปรแกรมจาก qt Creator ซึ่งเป็นโปรแกรมในการออกแบบ GUI จากนั้นเราได้ทำการแปลงไฟล์จากไฟล์ที่เป็นนามสกุล .ui เป็นนามสกุล .py เพื่อนำไปทำการแสดงภาพเเว็ปแคม จากการศึกษา เราสามารถใช้ภาพจากเว็ปแคมเพื่อแสดงผลแบบเรียลไทม์ได้โดยตรง
วิธีการออกแบบและแปลงไฟล์อยู่ในหมวด Design
2. กดปุ่ม Play,Pause ได้
หลังจากที่เราออกแบบหน้าตา GUI ด้วยโปรแกรม qt Creator แล้ว เราได้ทำการเพิ่มโค้ดเพื่อแสดงภาพจากปุ่ม Play และทำการหยุดแสดงภาพจากปุ่ม Pause ได้
INTEGRATION 2
- ตรวจจับใบหน้า
เราตรวจจับใบหน้าด้วยวิธีการ Haar-features ในที่นี้ Haar Cascade (การรวมตัวจำแนกกลุ่มแบบต่อเรียง) เป็น Feature หนึ่งในไลบรารี่ของ OpenCV ซึ่งแนวคิดนี้คือการพิจารณาจากรูปสี่เหลี่ยมที่อยู่ติดกัน พื้นที่ต่างๆในภาพจะถูกกำหนดและปรากฏในหน้าต่างการตรวจสอบ โดยพิจารณาในรูปแบบต่างๆ จากนั้นทำการสรุปความเข้มของแต่ละพิกเซลจากแต่ละส่วนของภาพและคำนวณผลรวมเพื่อทำการระบุว่าบริเวณนั้นๆ ในที่นี้คือการพิจารณารูปของใบหน้า และใช้ detectMultiscale ซึ่งเป็น module ของ OpenCV
หลังจากที่ทำการ detect ใบหน้าด้วยวิธี Haar-features แล้วเราจึงกำหนด frame เพื่อให้เห็นส่วนของใบหน้าที่เกิดจากการ detect ชัดเจนขึ้น
scaleFactor คือค่าระบุจำนวนภาพที่จะลดลงในแต่ละขนาดภาพ ถ้าค่าเท่ากับ 1 จะไม่มีผลต่อภาพ แต่ถ้ามากกว่า 1 จะทำให้ภาพขยาย และถ้า น้อยกว่า 1 จะได้ภาพย่อ วิธีนี้ช่วยให้อัลกอริทึมตรวจจับใบหน้าได้ดีขึ้น ในที่นี้เราเซตค่าเท่ากับ 1.3
- เลือกเงื่อนไขในการตรวจจับ
เราสามรถจับหน้าของบุคคลที่เราต้องการได้โดยใช้ปุ่มกด Capture และรูปภาพที่ถูก Capture ไว้จะเก็บไว้ในโฟล์เดอร์ที่เราสร้างไว้
เเล้วยังสามารถเลือกระดับปรับโฟกัสใบหน้าได้อย่างระเอียดด้วยการปรับการสไลด์บาร์นั้นคือ Neighbors การทำงาน ค่าที่สูงกว่าจะส่งผลให้มีการตรวจจับน้อยลง แต่จะตรวจจับได้คุณภาพที่สูงขึ้น แต่ค่าที่น้อยกว่าจะส่งผลทำให้มีการตรวจจับมากขึ้นแต่จะตรวจจับได้คุณภาพที่ต่ำลง
INTEGRATION 3
- แสดงผลลัพธ์