Development - noonsup1919/FaceDetection_CPE_KU_SRC GitHub Wiki

การพัฒนาระบบ

เราจะใช้ ImageAI ในการตรวจจับวัตถุบนภาพและแยกแต่ละวัตถุออกจากภาพ Model ที่ใช้ในการ Detection คือ RetinaNet, YOLOv3 และ TinyYOLOv3 พร้อมการประมวลผลแบบเรียลไทม์ ขั้นตอนแรกของการศึกษาพัฒนา เราได้นำรูปภาพเข้ามาเพื่อตรวจจับวัตถุแล้วแสดงค่า ได้ค่าออกมาว่ามีวัตถุอะไรบ้าง ซึ่งได้ผลลัพธ์ดังนี้

ขั้นตอนต่อมาเราทำการศึกษา ซึ่งพบว่าสามารถตรวจจับวัตถุเฉพาะอย่างได้ เราจึงพัฒนาและได้กำหนดวัตถุที่ต้องการตรวจจับ หลังจากนั้นเราพบว่า OpenCV สามารถตรวจจับวัตถุแบบเรียลไทม์ได้ เราจึงนำกล้อง Webcam มาใช้ในการแสดงค่าแบบเรียลไทม์

INTEGRATION 1

  1. แสดงภาพเว็ปแคมใน QT

เริ่มแรกเราได้ทำการออกแบบหน้าโปรแกรมจาก qt Creator ซึ่งเป็นโปรแกรมในการออกแบบ GUI จากนั้นเราได้ทำการแปลงไฟล์จากไฟล์ที่เป็นนามสกุล .ui เป็นนามสกุล .py เพื่อนำไปทำการแสดงภาพเเว็ปแคม จากการศึกษา เราสามารถใช้ภาพจากเว็ปแคมเพื่อแสดงผลแบบเรียลไทม์ได้โดยตรง วิธีการออกแบบและแปลงไฟล์อยู่ในหมวด Design

2. กดปุ่ม Play,Pause ได้

หลังจากที่เราออกแบบหน้าตา GUI ด้วยโปรแกรม qt Creator แล้ว เราได้ทำการเพิ่มโค้ดเพื่อแสดงภาพจากปุ่ม Play และทำการหยุดแสดงภาพจากปุ่ม Pause ได้

INTEGRATION 2

  1. ตรวจจับใบหน้า

เราตรวจจับใบหน้าด้วยวิธีการ Haar-features ในที่นี้ Haar Cascade (การรวมตัวจำแนกกลุ่มแบบต่อเรียง) เป็น Feature หนึ่งในไลบรารี่ของ OpenCV ซึ่งแนวคิดนี้คือการพิจารณาจากรูปสี่เหลี่ยมที่อยู่ติดกัน พื้นที่ต่างๆในภาพจะถูกกำหนดและปรากฏในหน้าต่างการตรวจสอบ โดยพิจารณาในรูปแบบต่างๆ จากนั้นทำการสรุปความเข้มของแต่ละพิกเซลจากแต่ละส่วนของภาพและคำนวณผลรวมเพื่อทำการระบุว่าบริเวณนั้นๆ ในที่นี้คือการพิจารณารูปของใบหน้า และใช้ detectMultiscale ซึ่งเป็น module ของ OpenCV

หลังจากที่ทำการ detect ใบหน้าด้วยวิธี Haar-features แล้วเราจึงกำหนด frame เพื่อให้เห็นส่วนของใบหน้าที่เกิดจากการ detect ชัดเจนขึ้น

scaleFactor คือค่าระบุจำนวนภาพที่จะลดลงในแต่ละขนาดภาพ ถ้าค่าเท่ากับ 1 จะไม่มีผลต่อภาพ แต่ถ้ามากกว่า 1 จะทำให้ภาพขยาย และถ้า น้อยกว่า 1 จะได้ภาพย่อ วิธีนี้ช่วยให้อัลกอริทึมตรวจจับใบหน้าได้ดีขึ้น ในที่นี้เราเซตค่าเท่ากับ 1.3

  1. เลือกเงื่อนไขในการตรวจจับ

เราสามรถจับหน้าของบุคคลที่เราต้องการได้โดยใช้ปุ่มกด Capture และรูปภาพที่ถูก Capture ไว้จะเก็บไว้ในโฟล์เดอร์ที่เราสร้างไว้

เเล้วยังสามารถเลือกระดับปรับโฟกัสใบหน้าได้อย่างระเอียดด้วยการปรับการสไลด์บาร์นั้นคือ Neighbors การทำงาน ค่าที่สูงกว่าจะส่งผลให้มีการตรวจจับน้อยลง แต่จะตรวจจับได้คุณภาพที่สูงขึ้น แต่ค่าที่น้อยกว่าจะส่งผลทำให้มีการตรวจจับมากขึ้นแต่จะตรวจจับได้คุณภาพที่ต่ำลง

INTEGRATION 3

  1. แสดงผลลัพธ์