คำอธิบาย
โปรแกรมตรวจจับใบหน้า (Face Detection)
การตรวจจับใบหน้าด้วย OpenCV ใน Python
การตรวจจับใบหน้าเป็นหนึ่งในฟีเจอร์ที่น่าสนใจในสาขาวิทยาการคอมพิวเตอร์และการประมวลผลภาพ การใช้งาน Python ในการตรวจจับใบหน้านั้นเป็นทางเลือกที่ยอดเยี่ยมเนื่องจากมีไลบรารีที่ใช้งานง่ายและมีประสิทธิภาพ ในบทความนี้ เราจะมาดูวิธีการตรวจจับใบหน้าโดยใช้ ภาษา Pythonและไลบรารี OpenCV
OpenCV (Open Source Computer Vision Library)
OpenCV คือไลบรารีที่เป็น Open Source สำหรับการประมวลผลภาพและวิดีโอในด้านวิทยาการคอมพิวเตอร์ ไลบรารีนี้ถูกพัฒนาโดย Intel ในปี 1999 และตอนนี้ได้กลายเป็นหนึ่งในไลบรารีที่นิยมที่สุดในสาขา Computer Vision มันเขียนด้วยภาษา C/C++ และมีการรองรับหลายภาษาอื่นๆ เช่น Python, Java และอื่นๆ
ขั้นตอนการนำ OpenCV มาใช้กับ Python
การติดตั้ง OpenCV ก่อนที่จะเริ่มต้น เราต้องติดตั้ง OpenCV ใน Python
โหลดและการแสดงภาพ ในการทำงานกับภาพ, เราต้องโหลดภาพเข้ามาในโปรแกรมก่อน แล้วทำการแปลงเป็นภาพ ขาว-ดำ เพื่อให้ภาพมีขนาดเล็กลง การประมวลผลจะไวมากยิ่งขึ้น
การตรวจจับใบหน้า การตรวจจับใบหน้าทำได้โดยใช้ pre-trained models ที่มีอยู่ใน OpenCV เราจะใช้ Cascade Classifier ซึ่งเป็นวิธีการตรวจจับวัตถุ
สร้างกรอบสี่เหลี่ยม โดยการใช้การ Plot เป็นสี่เหลี่ยมที่ผลลัพธ์ที่ได้ บันทึกผลลัพธ์ที่ได้
Cascades
การที่คอมพิวเตอร์จะหาใบหน้าบนรูปเจอ มันจะต้องเข้าไปดูในส่วนย่อยของภาพ เข้าไปเช็ค classifier ที่อาจะมีหลายพัน หลายหมื่นตัว เทียบกับข้อมูลใบหน้าที่มันเรียนรู้มา แล้วหากมีองค์ประกอบที่ตรงกับสิ่งที่เรียนรู้มาในระดับที่รับได้จึงแจ้งว่ามีการตรวจจับใบหน้า
วิธีการทำงานนี้ทำให้เกิดงานหนักในการคำนวนได้อย่างมหาศาล จึงเกิดสิ่งที่เรียกว่า cascades ขึ้นมา ซึ่ง cascades หากแปลเป็นภาษาไทยแปลว่าน้ำตกขั้นบันได และเช่นเดียวกัน cascades อาศัยการทำงานที่ดูคล้ายๆ กัน
Cascades จะแบ่งการตรวจจับออกเป็น stages ที่ประกอบไปด้วยส่วนหนึ่งของการตรวจจับ classifier ที่ต้องการใช้ เมื่อตรวจ stages หนึ่งเสร็จก็จะตรวจจับ stages ถัดไป และทำงานเป็นขั้นบันไดอย่างงี้ไปเรื่อยจนมีความมั่นใจในการเจอใบหน้า
หากข้อมูลใดไม่สามารถแสดงให้เห็นลักษณะของใบหน้าได้ใน stages ที่ตรวจเช็ค ข้อมูลนั้นจะถูกข้ามไป และไปคำนวนในภาพส่วนถัดไปทันที ซึ่ง cascades อาจมี 30 -50 stages การทิ้งการคำนวนโดยที่ไม่ต้องตรวจเช็ค Classifier ทั้งหมด ทำให้การคำนวนมีประสิทธิภาพมากยิ่งขึ้น และระบบการทำงานแบบนี้เรียกว่า cascades นั่นเอง
Haar Cascades
เป็น Object Detection Algorithm ใช้ในการตรวจจับวัตถุแบบ real-time อ้างอิงจากงานวิจัยของ Paul Viola และ Michael Jones ชื่อ “Rapid Object Detection using a Boosted Cascade of Simple Features” published in 2001
โดยหลักการทำงานของ Haar Cascades จะอ่านข้อมูล pixel ของรูป และนำมาเปรียบเทียบกับ feature ที่มีอยู่บนใบหน้าซึ่ง Haar Cascades สามารถปรับแต่งเพื่อตรวจจับวัตถุได้หลายอย่าง และเก็บข้อมูลในการตรวจ และโปรแกรมที่ถูกปรับแต่งเพื่อค้นหาวัตถุต่างๆ เก็บไว้ในรูปของไฟล์ xml ซึ่งหากเราต้องการตรวจจับใบหน้า เราต้องนำไฟล์ cascades ที่ปรับแต่งสำหรับการจับใบหน้านั่นเอง
โปรแกรมที่ใช้
1. python
2. opencv