ผู้เขียนบทความ : นายพุฒิพร จันทร์กลั่น COE #12
1. ความเป็นมา
เทคโนโลยีนั้นเป็นสิ่งที่มีความสำคัญสำหรับมนุษย์เป็นอย่างมาก เพราะทำให้มนุษย์เรามีการพัฒนาทำให้เกิดความก้าวหน้าและทำให้เกิดสิ่งประดิษฐ์ใหม่ๆขึ้นมากมายและยิ่งนับวันเทคโนโลยีนั้นก็ยิ่งมีการพัฒนาไปอย่างไม่หยุดนิ่ง
หนึ่งในนั้นคือ เทคโนโลยีในปัจจุบันมีการพัฒนาก้าวไกล และถูกนำมาใช้ประโยชน์ในชีวิตประจำวันหลายอย่าง หนึ่งในเทคโนโลยีเหล่าที่มีบทบาทกับชีวิตของเรามากที่สุดก็คือ เทคโนโลยีการรู้จดจำใบหน้า หรือที่เรารู้จักกันในชื่อ ระบบสแกนใบหน้า เทคโนโลยีที่นิยมนำมาใช้สร้างระบบรักษาความปลอดภัยด้วยการจดจำใบหน้า แต่ว่าเทคโนโลยีการรู้จดจำใบหน้านี้สามารถพัฒนาไปได้ไกล เกินกว่าที่ทำได้แค่จดจำใบหน้าของเราเท่านั้น
ดังนั้นจึงได้เกิดแนวคิดในการสร้างระบบการตรวจจับใบหน้าของผู้เข้าใช้เพื่อช่วยให้การใช้ทรัพยากรมนุษย์ และเพิ่มประสิทธิภาพมากยิ่งขึ้น สะดวกต่อการตรวจใช้งาน ช่วยลดปัญหาข้อผิดพลาดและล่าช้าอีกทั้งยังได้ช่วยแกปัญหาของปริมาณเอกสารที่เพิ่มปริมาณขึ้นด้วย จึงกล่าวได้ว่าระบบจะช่วยให้การจัดการและบริหารเป็นเรื่องที่ไม่ยุ่งยากซับซ้อนเหมือนปัจจุบันอีกต่อไป
2. วัตถุประสงค์
- เพื่อลดการใช้ทรัพยากรมนุษย์โดยใช้เทคโนโลยีอัตโนมัติเข้ามาแทน
- เพื่อพัฒนาโปรแกรมรู้จำใบหน้าบุคคลซึ่งสามารถทำงานบนเครื่องคอมพิวเตอร์
- เพื่อพัฒนาระบบรู้จำใบหน้าสำหรับการตรวจจับใบหน้า
3. ขอบเขต
- การใช้งานสแกนใบหน้าต้องอยู่ในลักษณะหน้าตรง ไม่สวมแว่น
- ระยะการสแกนใบหน้าจะต้องให้หน้าอยู่ในระยะไม่เกิน 60 เซนติเมตร
- มีความถูกต้องในการสแกนใบหน้าไม่น้อยกว่า 80%
- เป็นการพัฒนาระบบโดยการใช้ภาษา python
- ระบบสามารถเพิ่ม ลบ ข้อมูลบุคคลในฐานข้อมูลได้
- ระบบสามารถทำงานเชื่อมต่อกับ Vision Camera
- สภาพแวดล้อมเอื่อต่อการใช้งาน Vision Camera
- ความละเอียดของ Camera ที่ใช้ในการทดลองจะเป็นแบบ FullHD 1080p
4. ประโยชน์ที่สามารถได้รับ
- ช่วยให้ประหยัดเวลาในการตรวจจับใบหน้า
- เป็นการใช้เทคโนโลยีให้เกิดประโยชน์
- ช่วยเพิ่มความสะดวกสบายในการตรวจจับใบหน้า
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
คนที่ | จำนวนครั้ง | จำนวนที่ตรวจสอบได้ | เปอร์เซ็นต์ความถูกต้อง |
1 | 10 | 8 | 80 % |
2 | 10 | 10 | 100 % |
3 | 10 | 9 | 90 % |
คนที่ | จำนวนครั้ง | จำนวนที่ตรวจสอบได้ | เปอร์เซ็นต์ความถูกต้อง |
1 | 10 | 9 | 90 % |
2 | 10 | 9 | 90 % |
3 | 10 | 8 | 80 % |
คนที่ | จำนวนครั้ง | จำนวนที่ตรวจสอบได้ | เปอร์เซ็นต์ความถูกต้อง |
1 | 10 | 10 | 100 % |
2 | 10 | 9 | 90 % |
3 | 10 | 9 | 90 % |
ระยะที่ 4 สรุปผลการทดลอง ระบบการตรวจจับใบหน้าซึ่งได้ได้ผลลัพธ์ของการตรวจสอบใบหน้าไม่ต่ำกว่า 80% จากการทดสอบการบันทึกเวลาปฏิบัติงานของผู้ใช้จำนวน 3 คน ที่ระยะห่างจากตัวกล้อง 25 cm และ 45 cm
7. สรุปผลและข้อเสนอแนะ
สรุปผลการทดลอง ระบบการตรวจจับใบหน้าซึ่งได้ได้ผลลัพธ์ของการตรวจสอบใบหน้าไม่ต่ำกว่า 80% จากการทดสอบการบันทึกเวลาปฏิบัติงานของผู้ใช้จำนวน 3 คน ที่ระยะห่างจากตัวกล้อง 25 cm และ 45 cm
ปัญหาที่พบในการทดลอง
1. สภาพแวดล้อมรอบๆ มีผลต่อการตรวจสอบใบหน้า อย่างเช่น ความสว่างของสถานที่ในการสแกนใบหน้า
2. ใบหน้าที่มีความใกล้เคียงกันอาจมีผลทำให้ระบบรู้จำใบหน้าตรวจสอบผิดเพี้ยนได้
ข้อเสนอแนะ
1. โปรแกรมมีความแม่นยำถึง 80% เป็นโปรแกรมที่ใช้งานได้ฟรี และสามารถนำไปปรับปรุงพัฒนาให้ดียิ่งขึ้นกว่าเดิมได้
2. สามารถนำไปประยุกต์เป็นระบบอื่นๆ ที่เกี่ยวกับการรู้จำใบหน้าต่างๆได้ ยกตัวอย่างเช่น ใช้หาผู้ต้องสงสัย ใช้ตรวจวัดอุณหภูมิเพื่อป้องกันโรคได้ และยังมีระบบอีกมากมาย
3. ควรใช้ Camera ที่มีความละเอียดสูงเพราะจะมีผลต่อความแม่นยำในการตรวจสอบใบหน้าของผู้ใช้งานเป็นอย่างมาก
8. ข้อมูลอ้างอิง
- ความรู้และวิธีการติดตั้งเกี่ยวกับไลบรารี่ที่ใช้งาน
- ทำ Face Recognition ง่าย ๆ ไม่กี่คำสั่งใน Python ~ Python 3 (wannaphong.com)
- OpenCV คืออะไร?. ไลบรารีฟังก์ชันการเขียนโปรแกรมการแสดงผลด… | by Nuttakan Chuntra | Medium
- สอนติดตั้ง dlib library บน Windows 10 เพื่อใช้กับการทำงานด้วย Python | by Sasiwut Chaiyadecha | Medium
- การติดตั้ง opencv สำหรับ python. การติดตั้ง opencv python มีอยู่ 2… | by Wanchat pookhuntod | Medium
- Source code ต้นฉบับที่นำมาปรับปรุงแก้ไข
- วิธีการปรับเวอร์ชั่น Python เพื่อปรับสภาพแวดล้อมให้กับไลบรารี่ที่ใช้งาน
ภาพรวมการทำงานระบบให้สร้างภาพด้วยโปรแกรมคอมพิวเตอร์จะอ่านได้ง่ายกว่าครับ
แก้ไขเรียบร้อยแล้วครับอาจารย์