การใช้ Python สำหรับการตรวจจับใบหน้า
การตรวจจับใบหน้าคือการใช้เทคนิคในการคัดแยกและระบุใบหน้าในภาพ ซึ่งมีการประยุกต์ใช้งานในหลายๆ ด้าน เช่น ระบบความปลอดภัย การจำแนกอารมณ์ การติดตามและวิเคราะห์พฤติกรรมของผู้คน หรือแม้แต่การปรับแต่งภาพในแอปพลิเคชันต่างๆ ในบทความนี้เราจะใช้ Python สำหรับการตรวจจับใบหน้าด้วยไลบรารียอดนิยมสองตัวคือ OpenCV และ dlib ซึ่งทั้งสองมีเครื่องมือที่ช่วยให้สามารถตรวจจับใบหน้าได้ง่ายๆ
ขั้นตอนที่ 1: การติดตั้งไลบรารีที่จำเป็น
ในการใช้ Python สำหรับการตรวจจับใบหน้า คุณจำเป็นต้องติดตั้งไลบรารีที่ใช้ในการประมวลผลภาพ เช่น OpenCV และ dlib โดยในกรณีที่ทำงานบน Google Colab เราสามารถติดตั้งไลบรารีเหล่านี้ได้ด้วยคำสั่งต่อไปนี้
!pip install opencv-python-headless dlib
Code language: Python (python)
-
opencv-python-headless
เป็นเวอร์ชันที่ไม่มี GUI ของ OpenCV ซึ่งเหมาะสำหรับการทำงานในสภาพแวดล้อมเช่น Google Colab -
dlib
เป็นไลบรารีที่มีฟังก์ชันการตรวจจับใบหน้าที่มีประสิทธิภาพสูง
ขั้นตอนที่ 2: การเตรียมข้อมูลและการโหลดโมเดล
ก่อนที่จะทำการตรวจจับใบหน้าในภาพ คุณต้องโหลดโมเดลการตรวจจับใบหน้าที่ได้ฝึกฝนแล้ว ในที่นี้เราจะใช้โมเดล
get_frontal_face_detector()
จากไลบรารี
dlib
ที่ได้รับการฝึกฝนล่วงหน้าในการตรวจจับใบหน้าในรูปแบบที่ง่ายต่อการใช้งาน
import cv2
import dlib
from google.colab.patches import cv2_imshow
# โหลดตัวตรวจจับใบหน้าจาก dlib
detector = dlib.get_frontal_face_detector()
Code language: Python (python)
ขั้นตอนที่ 3: การอ่านและแสดงภาพ
หลังจากที่ติดตั้งไลบรารีและโหลดตัวตรวจจับใบหน้าแล้ว ขั้นตอนถัดไปคือการอ่านภาพที่ต้องการตรวจจับใบหน้า ซึ่งในกรณีนี้เราใช้ OpenCV สำหรับการอ่านภาพ และแปลงภาพให้เป็นโทนสีเทา (grayscale) เพื่อเพิ่มประสิทธิภาพในการตรวจจับ
# เลือกไฟล์ที่อัปโหลด
image_path = next(iter(uploaded)) # ใช้ชื่อไฟล์ที่อัปโหลด
# อ่านภาพจากไฟล์
image = cv2.imread(image_path)
# แปลงภาพเป็นสีเทา
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
Code language: Python (python)
ขั้นตอนที่ 4: การตรวจจับใบหน้าในภาพ
การตรวจจับใบหน้าจะทำโดยใช้ฟังก์ชัน
detector()
จากไลบรารี
dlib
ซึ่งจะคืนค่าพิกัดของใบหน้าที่ตรวจจับได้ในรูปแบบของสี่เหลี่ยม
# ใช้ dlib ในการตรวจจับใบหน้า
faces = detector(gray_image)
Code language: Python (python)
ขั้นตอนที่ 5: การวาดกรอบรอบใบหน้า
เมื่อใบหน้าถูกตรวจจับแล้ว เราสามารถวาดกรอบรอบใบหน้าได้โดยใช้ฟังก์ชัน
cv2.rectangle()
ของ OpenCV ในการวาดกรอบสี่เหลี่ยมสีเขียวที่รอบใบหน้า
# วาดกรอบสี่เหลี่ยมรอบใบหน้า
for face in faces:
x, y, w, h = (face.left(), face.top(), face.width(), face.height())
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2) # เปลี่ยนสีเป็นแดง
Code language: PHP (php)
ขั้นตอนที่ 6: การแสดงผลภาพ
สุดท้าย เราจะใช้ฟังก์ชัน
cv2_imshow()
ในการแสดงผลภาพที่มีกรอบรอบใบหน้า
# แสดงภาพที่ตรวจจับใบหน้า
cv2_imshow(image)
Code language: Python (python)
ตัวอย่างโค้ดทั้งหมด
from google.colab import files
import cv2
import dlib
from google.colab.patches import cv2_imshow
# อัปโหลดไฟล์จากคอมพิวเตอร์
uploaded = files.upload()
# โหลดตัวตรวจจับใบหน้าจาก dlib
detector = dlib.get_frontal_face_detector()
# เลือกไฟล์ที่อัปโหลด
image_path = next(iter(uploaded)) # ใช้ชื่อไฟล์ที่อัปโหลด
# อ่านภาพจากไฟล์
image = cv2.imread(image_path)
# แปลงภาพเป็นสีเทา
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# ใช้ dlib ในการตรวจจับใบหน้า
faces = detector(gray_image)
# วาดกรอบสี่เหลี่ยมรอบใบหน้า
for face in faces:
x, y, w, h = (face.left(), face.top(), face.width(), face.height())
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2) # เปลี่ยนสีเป็นแดง
# แสดงภาพที่ตรวจจับใบหน้า
cv2_imshow(image)
Code language: Python (python)
สรุป
ในบทความนี้เราได้เรียนรู้วิธีการใช้ Python และไลบรารี OpenCV กับ dlib สำหรับการตรวจจับใบหน้าในภาพ ด้วยขั้นตอนง่ายๆ ที่สามารถทำได้ใน Google Colab โดยไม่ต้องติดตั้งอะไรเพิ่มเติมในเครื่องของคุณ การตรวจจับใบหน้ามีความสำคัญและนำไปใช้ได้หลากหลายด้าน ทั้งในด้านความปลอดภัย การจำแนกอารมณ์ หรือการปรับแต่งภาพ และยังสามารถขยายต่อไปด้วยการใช้งานในระบบที่ซับซ้อนมากขึ้น เช่น การติดตามตำแหน่งใบหน้า การรู้จำใบหน้าหรือการทำงานร่วมกับระบบอื่น ๆ ได้