ระบบการตรวจจับใบหน้า โดยใช้การรู้จำใบหน้าหรือเรียกว่า Face Recognition

ผู้เขียนบทความ : นายพุฒิพร จันทร์กลั่น COE #12

1. ความเป็นมา

        เทคโนโลยีนั้นเป็นสิ่งที่มีความสำคัญสำหรับมนุษย์เป็นอย่างมาก เพราะทำให้มนุษย์เรามีการพัฒนาทำให้เกิดความก้าวหน้าและทำให้เกิดสิ่งประดิษฐ์ใหม่ๆขึ้นมากมายและยิ่งนับวันเทคโนโลยีนั้นก็ยิ่งมีการพัฒนาไปอย่างไม่หยุดนิ่ง
        หนึ่งในนั้นคือ เทคโนโลยีในปัจจุบันมีการพัฒนาก้าวไกล และถูกนำมาใช้ประโยชน์ในชีวิตประจำวันหลายอย่าง หนึ่งในเทคโนโลยีเหล่าที่มีบทบาทกับชีวิตของเรามากที่สุดก็คือ เทคโนโลยีการรู้จดจำใบหน้า หรือที่เรารู้จักกันในชื่อ ระบบสแกนใบหน้า เทคโนโลยีที่นิยมนำมาใช้สร้างระบบรักษาความปลอดภัยด้วยการจดจำใบหน้า แต่ว่าเทคโนโลยีการรู้จดจำใบหน้านี้สามารถพัฒนาไปได้ไกล เกินกว่าที่ทำได้แค่จดจำใบหน้าของเราเท่านั้น 
        ดังนั้นจึงได้เกิดแนวคิดในการสร้างระบบการตรวจจับใบหน้าของผู้เข้าใช้เพื่อช่วยให้การใช้ทรัพยากรมนุษย์ และเพิ่มประสิทธิภาพมากยิ่งขึ้น สะดวกต่อการตรวจใช้งาน ช่วยลดปัญหาข้อผิดพลาดและล่าช้าอีกทั้งยังได้ช่วยแกปัญหาของปริมาณเอกสารที่เพิ่มปริมาณขึ้นด้วย จึงกล่าวได้ว่าระบบจะช่วยให้การจัดการและบริหารเป็นเรื่องที่ไม่ยุ่งยากซับซ้อนเหมือนปัจจุบันอีกต่อไป

2. วัตถุประสงค์

  1. เพื่อลดการใช้ทรัพยากรมนุษย์โดยใช้เทคโนโลยีอัตโนมัติเข้ามาแทน
  2. เพื่อพัฒนาโปรแกรมรู้จำใบหน้าบุคคลซึ่งสามารถทำงานบนเครื่องคอมพิวเตอร์ 
  3. เพื่อพัฒนาระบบรู้จำใบหน้าสำหรับการตรวจจับใบหน้า

3. ขอบเขต

  1. การใช้งานสแกนใบหน้าต้องอยู่ในลักษณะหน้าตรง ไม่สวมแว่น
  2. ระยะการสแกนใบหน้าจะต้องให้หน้าอยู่ในระยะไม่เกิน 60 เซนติเมตร
  3. มีความถูกต้องในการสแกนใบหน้าไม่น้อยกว่า 80%
  4. เป็นการพัฒนาระบบโดยการใช้ภาษา python
  5. ระบบสามารถเพิ่ม ลบ ข้อมูลบุคคลในฐานข้อมูลได้
  6. ระบบสามารถทำงานเชื่อมต่อกับ Vision Camera
  7. สภาพแวดล้อมเอื่อต่อการใช้งาน Vision Camera
  8. ความละเอียดของ Camera ที่ใช้ในการทดลองจะเป็นแบบ FullHD 1080p

4. ประโยชน์ที่สามารถได้รับ

  1. ช่วยให้ประหยัดเวลาในการตรวจจับใบหน้า
  2. เป็นการใช้เทคโนโลยีให้เกิดประโยชน์
  3. ช่วยเพิ่มความสะดวกสบายในการตรวจจับใบหน้า

5. ความรู้ที่เกี่ยวข้อง

        ระบบการรู้จำใบหน้า หรือ ระบบการจดจำใบหน้า คือระบบการตรวจหาใบหน้าของมนุษย์และปรับภาพใบหน้าโดยอัตโนมัติ กรอบจะปรากฏขึ้นบนใบหน้าที่ถูกตรวจจับ และโฟกัส สี และค่าการวัดแสงจะถูกปรับโดยอัตโนมัติ นอกจากนั้นเมื่อบันทึกด้วยคุณภาพแบบ HD เทคโนโลยีการบีบอัดจะจัดสรรความจุของข้อมูลให้ลดลง แต่ได้ข้อมูลที่เป็นประโยชน์มากขึ้นเพื่อปรับคุณภาพของภาพ ข้อมูลที่ได้จะถูกนำไปเปรียบเทียบกับข้อมูลตัวอย่างที่เก็บบันทึกไว้ อาจจะทั้งใบหน้า หรือเพียงบางส่วน ขึ้นกับชนิดของวิธีแยกเอกลักษณ์ใบหน้า ระบบการรู้จำใบหน้าเป็นส่วนหนึ่งของ เทคโนโลยีปัญญาประดิษฐ์ในส่วนเนื้อหาของเรื่อง การรับรู้ของเครื่อง (Machine perception)
        ระบบวิเคราะห์ใบหน้าถือว่าเป็นหนึ่งในระบบที่ใช้ในการพิสูจน์ยืนยันตัวตนบุคคล โดยใช้คุณลักษณะจำเพาะทางสรีระ (ฺBiometric) โดยระบบรู้จำใบหน้าจะทำงานโดยการเปรียบเทียบใบหน้าจากภาพถ่ายดิจิตอลหรือภาพจากกล้องวีดีโอของบุคคลที่เราสนใจกับฐานข้อมูลใบหน้าที่มีอยู่ และเมื่อเปรียบเทียบเสร็จก็จะแสดงผลใบหน้าที่อยู่ในฐานข้อมูลที่มีใบหน้าเหมือนกับภาพที่นำมาเปรียบเทียบออกมา ระบบรู้จำใบหน้านั้นได้ถูกพัฒนามาอย่างต่อเนื่องเป็นเวลามากกว่าสิบปีมาแล้ว
        เทคโนโลยีการเรียนรู้จดจำใบหน้า(Face Recognition) คือ เทคโนโลยีที่ถูกสร้างขึ้นมาเพื่อเรียนรู้และจดจำโครงสร้างใบหน้าของมนุษย์ แล้วนำข้อมูลใบหน้าที่จดจำหรือตรวจจับได้ส่งไปให้ระบบ เพื่อนำไปใช้วิเคราะห์หรือประมวลผลในการทำงานในส่วนขั้นตอนอื่นๆ อีกต่อไป ซึ่งเทคโนโลยีที่นำระบบการเรียนรู้จดจำใบหน้า ไปใช้งานมากที่สุดคือ เทคโนโลยีที่เกี่ยวข้องกับระบบความปลอดภัย ไม่ว่าจะเป็น ระบบ Access Control ระบบกล้องวงจรปิด หรือ ระบบรักษาความปลอดภัยในมือถือ เป็นระบบที่ช่วยเพิ่มประสิทธิภาพการระบุและยืนยันอัตลักษณ์บุคคลด้วยความรวดเร็ว แม่นยำ และสามารถเพิ่มโอกาสในการต่อยอดความสำเร็จให้หลากหลายแวดวงธุรกิจได้ด้วย
        หลักการทำงานของ Face Recognition คือ การสร้างโมเดลการอ้างอิง ที่เรียกว่า “faceprint” ขึ้นมา โดยระบบจะวิเคราะห์จากลักษณะเฉพาะต่างๆ บนใบหน้า เช่น โครงหน้า ความกว้างของจมูก ระยะห่างระหว่างตาทั้งสองข้าง ขนาดของโหนกแก้ม ความลึกของเบ้าตา รวมถึงพื้นผิวบนใบหน้า (facial texture) เป็นต้น จากนั้น ระบบจะทำการสร้างจุดเชื่อมโยงบนใบหน้า (nodal points) เพื่อเปรียบเทียบกับรูปภาพที่ถูกเก็บไว้ในฐานข้อมูล (data base) ทั้งในลักษณะภาพนิ่งและภาพเคลื่อนไหว เพื่อความแม่นยำในการระบุตัวตนของผู้ที่ต้องเข้าสู่กระบวนการตรวจสอบ
        ดังนั้น หลักการทำงานของระบบรู้จำใบหน้า ที่ถูกออกแบบมาให้ทำการเปรียบเทียบใบหน้าบุคคลที่เราต้องการจะตรวจสอบ กับฐานข้อมูลใบหน้าที่มีอยู่โดยอัลกอริทึมที่ใช้ในขั้นตอนการสร้างแม่แบบและขั้นตอนการเปรียบเทียบอาจมีความแตกต่างกันไปแล้วแต่วิธีการออกแบบระบบของแต่ละระบบ แต่ไม่ว่าจะมีอัลกอริทึมในการทำงานในขั้นตอนการสร้างแม่แบบและขั้นตอนการเปรียบเทียบยังไง แต่ขั้นตอนการทำงานโดยรวมของระบบก็ยังคงเหมือนกันอยู่ โดยทั่วไประบบรู้จำใบหน้าจะประกอบไปด้วย 2 ขั้นตอนหลักจะสรุปวิธีการทำงาน คือ 

        1. การตรวจจับใบหน้า (Face Detection) คือกระบวนการค้นหาใบหน้าของบุคคลจากภาพหรือวิดีโอหลังจากนั้นก็จะทำการประมวลผลภาพใบหน้าที่ได้สำหรับขั้นตอนถัดไปเพื่อให้ภาพใบหน้าที่ตรวจจับได้ง่ายต่อการจำแนก และ อัลกอริทึมที่ใช้ในการตรวจจับใบหน้าในปัจจุบันก็มีอยู่ด้วยกันหลายวิธีซึ่งอัลกอริทึมในการตรวจจับใบหน้าที่ดีนั้นมีส่วนช่วยในการจำแนกใบหน้าได้แม่นยำและรวดเร็วขึ้นเป็นอย่างมาก 
        2. การรู้จดจำใบหน้า (Face Recognition) คือกระบวนการที่ได้นำภาพใบหน้าที่ตรวจจับได้และประมวลผลแล้วจากขั้นตอนการตรวจจับใบหน้า มาเปรียบเทียบกับฐานข้อมูลของใบหน้าเพื่อระบุว่าใบหน้าที่ตรวจจับได้ตรงกับบุคคลใด แล้วจึงนำผลลัพธ์ที่ได้ ส่งไปให้ระบบหรือโปรแกรมเพื่อประมวลผลอื่นๆ ต่อไป

        opencv คือ OpenCV (Open source Computer Vision) เป็นไลบรารีฟังก์ชันการเขียนโปรแกรม (Library of Programming Functions) โดยส่วนใหญ่จะมุ่งเป้าไปที่การแสดงผลด้วยคอมพิวเตอร์แบบเรียลไทม์ (Real-Time Computer Vision) เดิมทีแล้วถูกพัฒนาโดย Intel แต่ภายหลังได้รับการสนับสนุนโดย Willow Garage ตามมาด้วย Itseez (ซึ่งต่อมาถูกเข้าซื้อโดย Intel) OpenCV เป็นไลบรารีแบบข้ามแพลตฟอร์ม (Cross-Platform) และใช้งานได้ฟรีภายใต้ลิขสิทธิ์ของ BSD แบบโอเพ่นซอร์ส (Open Source BSD License) OpenCV ยังสนับสนุนเฟรมเวิร์กการเรียนรู้เชิงลึก (Deep Learning Frameworks) ได้แก่ TensorFlow, Torch/PyTorch และ Caffe

6. ผลการดำเนินงาน

ระยะที่ 1 จะเป็นการศึกษาหาความรู้เกี่ยวกับการทำงานของการตรวจจับใบหน้าด้วยภาษา Python ในหลายๆ เว็บไซต์ 

ระยะที่ 2 จะเป็นการเขียนอัลกอริทึมตัวระบบขึ้นมา ทำการทดสอบและแก้ปัญหาต่างๆ ให้ระบบใช้งานได้  

ระยะที่ 3 ผลการทดลองระบบ การทดลองนี้ได้ทำการทดสอบระยะห่างจากตัวกล้องกับผู้ใช้งาน จำนวน 3 คน ซึ่งค่าที่ได้จากการบันทึกนั้นจะนำมาจดบันทึกลงในตารางเพื่อนำค่าที่ได้นั้นมาคำนวณแล้วนำมาแสดงผลหาความถูกต้องของใบหน้า

import face_recognition
import cv2

video_capture = cv2.VideoCapture(1)

person1_image = face_recognition.load_image_file("Ice.jpg")
person1_face_encoding = face_recognition.face_encodings(person1_image)[0]

known_face_encodings = [
    person1_face_encoding, 
]

known_face_names = [
    "Ice"
]

face_locations = []
face_encodings = []
face_names = []
process_this_frame = True

while True:
    ret, frame = video_capture.read(2)

    small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)

    rgb_small_frame = small_frame[:, :, ::-1]

    if process_this_frame:
        face_locations = face_recognition.face_locations(rgb_small_frame)
        face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)

        face_names = []
        for face_encoding in face_encodings:
            matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
            name = "Unknown"

            if True in matches:
                first_match_index = matches.index(True)
                name = known_face_names[first_match_index]

            face_names.append(name)

    process_this_frame = not process_this_frame

    for (top, right, bottom, left), name in zip(face_locations, face_names):
        top *= 4
        right *= 4
        bottom *= 4
        left *= 4

        cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)

        cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)
        font = cv2.FONT_HERSHEY_DUPLEX
        cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)

    cv2.imshow('Video', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
คนที่จำนวนครั้งจำนวนที่ตรวจสอบได้เปอร์เซ็นต์ความถูกต้อง
110880 %
21010100 %
310990 %
ตารางแสดงข้อมูลที่ได้จากการทดลองผู้ใช้จำนวน 3 คนที่ระยะห่าง 25 เซนติเมตร
คนที่จำนวนครั้งจำนวนที่ตรวจสอบได้เปอร์เซ็นต์ความถูกต้อง
110990 %
210990 %
310880 %
ตารางแสดงข้อมูลที่ได้จากการทดลองผู้ใช้จำนวน 3 คนที่ระยะห่าง 45 เซนติเมตร
คนที่จำนวนครั้งจำนวนที่ตรวจสอบได้เปอร์เซ็นต์ความถูกต้อง
11010100 %
210990 %
310990 %
แสดงผลรวมและเปอร์เซ็นต์ความถูกต้องของการตรวจสอบใบหน้า

ระยะที่ 4 สรุปผลการทดลอง ระบบการตรวจจับใบหน้าซึ่งได้ได้ผลลัพธ์ของการตรวจสอบใบหน้าไม่ต่ำกว่า 80% จากการทดสอบการบันทึกเวลาปฏิบัติงานของผู้ใช้จำนวน 3 คน ที่ระยะห่างจากตัวกล้อง 25 cm และ 45 cm

7. สรุปผลและข้อเสนอแนะ

สรุปผลการทดลอง ระบบการตรวจจับใบหน้าซึ่งได้ได้ผลลัพธ์ของการตรวจสอบใบหน้าไม่ต่ำกว่า 80% จากการทดสอบการบันทึกเวลาปฏิบัติงานของผู้ใช้จำนวน 3 คน ที่ระยะห่างจากตัวกล้อง 25 cm และ 45 cm

ปัญหาที่พบในการทดลอง
1. สภาพแวดล้อมรอบๆ มีผลต่อการตรวจสอบใบหน้า อย่างเช่น ความสว่างของสถานที่ในการสแกนใบหน้า
2. ใบหน้าที่มีความใกล้เคียงกันอาจมีผลทำให้ระบบรู้จำใบหน้าตรวจสอบผิดเพี้ยนได้

ข้อเสนอแนะ
1. โปรแกรมมีความแม่นยำถึง 80% เป็นโปรแกรมที่ใช้งานได้ฟรี และสามารถนำไปปรับปรุงพัฒนาให้ดียิ่งขึ้นกว่าเดิมได้
2. สามารถนำไปประยุกต์เป็นระบบอื่นๆ ที่เกี่ยวกับการรู้จำใบหน้าต่างๆได้ ยกตัวอย่างเช่น ใช้หาผู้ต้องสงสัย ใช้ตรวจวัดอุณหภูมิเพื่อป้องกันโรคได้ และยังมีระบบอีกมากมาย
3. ควรใช้ Camera ที่มีความละเอียดสูงเพราะจะมีผลต่อความแม่นยำในการตรวจสอบใบหน้าของผู้ใช้งานเป็นอย่างมาก

8. ข้อมูลอ้างอิง

  1. ความรู้และวิธีการติดตั้งเกี่ยวกับไลบรารี่ที่ใช้งาน
    1. ทำ Face Recognition ง่าย ๆ ไม่กี่คำสั่งใน Python ~ Python 3 (wannaphong.com)
    2. OpenCV คืออะไร?. ไลบรารีฟังก์ชันการเขียนโปรแกรมการแสดงผลด… | by Nuttakan Chuntra | Medium
    3. สอนติดตั้ง dlib library บน Windows 10 เพื่อใช้กับการทำงานด้วย Python | by Sasiwut Chaiyadecha | Medium
    4. การติดตั้ง opencv สำหรับ python. การติดตั้ง opencv python มีอยู่ 2… | by Wanchat pookhuntod | Medium
  2. Source code ต้นฉบับที่นำมาปรับปรุงแก้ไข
    1. GitHub – ageitgey/face_recognition: The world’s simplest facial recognition api for Python and the command line
  3. วิธีการปรับเวอร์ชั่น Python เพื่อปรับสภาพแวดล้อมให้กับไลบรารี่ที่ใช้งาน
    1. How to convert python version 3.8 to 3.6 วิธีสลับเวอร์ชันการทำงานไพทอน | by Preechaik | Medium

Share

You may also like...

2 Responses

  1. สันติ สถิตวรรธนะ พูดว่า:

    ภาพรวมการทำงานระบบให้สร้างภาพด้วยโปรแกรมคอมพิวเตอร์จะอ่านได้ง่ายกว่าครับ

ใส่ความเห็น