- ข้อกำหนดเบื้องต้น
- การจดจำใบหน้าทำงานร่วมกับ OpenCV อย่างไร
- การตรวจจับใบหน้าโดยใช้ Cascade Classifiers ใน OpenCV
การจดจำใบหน้ากำลังได้รับความนิยมมากขึ้นเรื่อย ๆ และพวกเราส่วนใหญ่ก็ใช้มันอยู่แล้วโดยที่ไม่รู้ตัว ไม่ว่าจะเป็นคำแนะนำแท็ก Facebook ง่ายๆหรือตัวกรอง Snapchat หรือการเฝ้าระวังความปลอดภัยของสนามบินขั้นสูงการจดจำใบหน้าได้ทำงานอย่างมหัศจรรย์แล้ว จีนเริ่มใช้การจดจำใบหน้าในโรงเรียนเพื่อตรวจสอบการเข้าเรียนและพฤติกรรมของนักเรียน ร้านค้าปลีกเริ่มใช้การจดจำใบหน้าเพื่อจัดหมวดหมู่ลูกค้าและแยกผู้ที่มีประวัติฉ้อโกง ด้วยการเปลี่ยนแปลงอื่น ๆ อีกมากมายไม่ต้องสงสัยเลยว่าเทคโนโลยีนี้จะมีให้เห็นทุกที่ในอนาคตอันใกล้นี้
ในการกวดวิชานี้เราจะได้เรียนรู้วิธีการที่เราสามารถสร้างของเราเองระบบจดจำใบหน้าโดยใช้ห้องสมุด OpenCV ในราสเบอร์รี่ Pi ข้อดีของการติดตั้งระบบนี้บน Raspberry Pi แบบพกพาคือคุณสามารถติดตั้งได้ทุกที่เพื่อใช้เป็นระบบเฝ้าระวัง เช่นเดียวกับระบบจดจำใบหน้าทั้งหมดบทช่วยสอนจะเกี่ยวข้องกับสคริปต์ python สองตัวหนึ่งคือโปรแกรมเทรนเนอร์ซึ่งจะวิเคราะห์ชุดภาพถ่ายของบุคคลใดบุคคลหนึ่งและสร้างชุดข้อมูล (ไฟล์ YML) โปรแกรมที่สองคือโปรแกรม Recognizerซึ่งตรวจจับใบหน้าแล้วใช้ไฟล์ YML นี้เพื่อจดจำใบหน้าและเอ่ยชื่อบุคคล ทั้งสองโปรแกรมที่เราจะพูดถึงในที่นี้มีไว้สำหรับ Raspberry Pi (Linux) แต่จะทำงานบนคอมพิวเตอร์ Windows ด้วยการเปลี่ยนแปลงเล็กน้อย เรามีชุดบทเรียนสำหรับผู้เริ่มต้นสำหรับการเริ่มต้นใช้งาน OpenCV อยู่แล้วคุณสามารถตรวจสอบบทช่วยสอน OpenCV ทั้งหมดได้ที่นี่
ข้อกำหนดเบื้องต้น
อย่างที่บอกไปก่อนหน้านี้เราจะใช้ OpenCV Library เพื่อตรวจจับและจดจำใบหน้า ดังนั้นอย่าลืมติดตั้ง OpenCV Library บน Pi ก่อนดำเนินการตามบทช่วยสอนนี้ เพิ่มพลังให้ Pi ของคุณด้วยอะแดปเตอร์ 2A และเชื่อมต่อกับจอภาพแสดงผลผ่านสาย HDMI เนื่องจากเราจะไม่สามารถรับสัญญาณวิดีโอผ่าน SSH ได้
นอกจากนี้ฉันจะไม่อธิบายว่า OpenCV ทำงานอย่างไรหากคุณสนใจที่จะเรียนรู้การประมวลผลภาพลองดูพื้นฐาน OpenCV และแบบฝึกหัดการประมวลผลภาพขั้นสูง คุณยังสามารถเรียนรู้เกี่ยวกับรูปทรงการตรวจจับหยดน้ำและอื่น ๆ ได้ในบทช่วยสอนการแบ่งส่วนภาพนี้
การจดจำใบหน้าทำงานร่วมกับ OpenCV อย่างไร
ก่อนที่เราจะเริ่มสิ่งสำคัญคือต้องเข้าใจว่าการตรวจจับใบหน้าและการจดจำใบหน้าเป็นสองสิ่งที่แตกต่างกัน ในการตรวจจับใบหน้าจะตรวจพบใบหน้าของบุคคลเท่านั้นซอฟต์แวร์จะไม่มีความคิดว่าบุคคลนั้นคือใคร ในการจดจำใบหน้าซอฟต์แวร์จะไม่เพียง แต่ตรวจจับใบหน้าเท่านั้น แต่ยังจดจำบุคคลนั้นด้วย ตอนนี้ควรชัดเจนว่าเราจำเป็นต้องทำการตรวจจับใบหน้าก่อนที่จะทำการจดจำใบหน้า คงเป็นไปไม่ได้ที่ฉันจะอธิบายว่า OpenCV ตรวจจับใบหน้าหรือวัตถุอื่น ๆ สำหรับเรื่องนั้นได้อย่างไร ดังนั้นหากคุณอยากรู้ว่าคุณสามารถทำตามบทแนะนำการตรวจจับวัตถุนี้ได้
ฟีดวิดีโอจากเว็บแคมไม่ได้มีอะไรมากไปกว่าการอัปเดตภาพนิ่งเป็นลำดับยาว ๆ ทีละภาพ และแต่ละภาพเหล่านี้เป็นเพียงการรวบรวมพิกเซลที่มีค่าต่างกันมารวมกันในตำแหน่งตามลำดับ แล้วโปรแกรมจะตรวจจับใบหน้าจากพิกเซลเหล่านี้และจดจำบุคคลที่อยู่ในนั้นได้อย่างไร? มีอัลกอริทึมมากมายอยู่เบื้องหลังและพยายามอธิบายว่ามันอยู่นอกเหนือขอบเขตของบทความนี้ แต่เนื่องจากเราใช้ไลบรารี OpenCV จึงง่ายมากที่จะทำการจดจำใบหน้าโดยไม่ต้องเจาะลึกลงไปในแนวคิด
การตรวจจับใบหน้าโดยใช้ Cascade Classifiers ใน OpenCV
เฉพาะในกรณีที่เราสามารถตรวจจับใบหน้าเราจะสามารถจดจำใบหน้านั้นได้ ในการตรวจจับวัตถุเช่นใบหน้า OpenCV ใช้สิ่งที่เรียกว่า Classifiers Classifiers เหล่านี้เป็นชุดข้อมูลที่ได้รับการฝึกฝนมาก่อน (ไฟล์ XML) ซึ่งสามารถใช้เพื่อตรวจจับวัตถุเฉพาะในกรณีของเราที่เป็นใบหน้า คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับตัวแยกประเภทการตรวจจับใบหน้าได้ที่นี่ นอกเหนือจากการตรวจจับใบหน้าแล้ว Classifiers ยังสามารถตรวจจับวัตถุอื่น ๆ เช่นจมูกดวงตาป้ายทะเบียนรถรอยยิ้มเป็นต้นสามารถดาวน์โหลดรายชื่อ Case Classifiers ได้จากไฟล์ ZIP ด้านล่าง
ตัวแยกประเภทสำหรับการตรวจจับวัตถุใน Python
อีกทางเลือกหนึ่ง OpenCV ยังช่วยให้คุณสามารถสร้างตัวจำแนกประเภทของคุณเองซึ่งสามารถใช้เพื่อตรวจจับวัตถุอื่น ๆ ในรูปภาพได้โดยการฝึกอบรมตัวแยกประเภทคาสเคดของคุณ ในบทช่วยสอนนี้เราจะใช้ลักษณนามที่เรียกว่า“ haarcascade_frontalface_default.xml”ซึ่งจะตรวจจับใบหน้าจากตำแหน่งด้านหน้า เราจะเห็น