ระบบตรวจจับความรู้สึกบนใบหน้า

ผู้เขียนบทความ : นางสาวนัสมีน เจ๊ะยะ

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

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

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

  1. เพื่อศึกษาอัลกอริทึมของระบบตรวจจับความรู้สึกบนใบหน้า (Emotion Recognition)
  2. เพื่อศึกษาอัลกอริทึมที่เป็นภาษา Python
  3. ประยุกต์ใช้ในด้านต่าง ๆ เช่น ด้านการตลาด ด้านสื่อและโฆษณา ด้านปัญญาประดิษฐ์

3.ขอบเขต

  1. ระบบถูกพัฒนาด้วยโปรแกรม Visual Studio Code โดยใช้ภาษา Python
  2. ระบบถูกทดสอบกับฐานข้อมูลของใบหน้าทั้งหมด 7 อารมณ์ ได้แก่ โกรธ(Angry) ประหลาดใจ (Surprise) สุข (Happy) หน้าปกติ (Neutral) รังเกียจ (Disgust) กลัว (Scared) และเศร้า (Sad)
  3. ระบบการตรวจจับความรู้สึกบนใบหน้าสามารถจับภาพหน้าคนแค่เพียง 1 คน
  4. ระบบไม่ค่อยมีความแม่นยำในการตรวจจับอารมณ์บนใบหน้า

4.ประโยชน์ที่คาดว่าจะได้รับ

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

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

  1. Open cv
    OpenCV (Open source Computer Vision) เป็นไลบรารีฟังก์ชันการเขียนโปรแกรม (Library of Programming Functions) โดยส่วนใหญ่จะมุ่งเป้าไปที่การแสดงผลด้วยคอมพิวเตอร์แบบเรียลไทม์ (Real-Time Computer Vision) ซึ่งในทีนี้เอาไว้ใช้สำหรับตรวจจับใบหน้าเพื่อนำไปตรวจจับความรู้สึกในขั้นต่อไป
  • สำหรับไพธอนสามารถติดตั้งได้โดย
pip install opencv-python
  • แต่เวลาเรียกใช้ จะต้อง import ชื่อ cv2
import cv2
  • หลักการนำมาใช้งานของ Open cv
โปรแกรมเปิดกล้อง webcam
  • ผลการทดสอบ
ผลการดำเนินการเมื่อทดสอบโปรแกรมข้างต้น

2. imutils
หลังจากทำการอัพเกรดตัว pip เรียบร้อยแล้ว ให้ทำการติดตั้ง package ที่ชื่อว่า imutils ซึ่ง imutils เป็น library เบื้องต้นของ image processing พวกหมุนภาพ กลับภาพ ปรับขนาด

สำหรับไพธอนสามารถติดตั้งได้โดย

pip install imutils

แต่เวลาเรียกใช้ จะต้อง import ชื่อ imutils

import imutils
เป็นการปรับขนาดเฟรมจากวิดีโอ

3. Numpy
เป็นโมดูลส่วนเสริมของ Python ที่มีฟังก์ชั่นเกี่ยวกับคณิตศาสตร์และการคำนวณต่าง ๆ มาให้ใช้งาน โดยทั่วไปจะเกี่ยวกับการจัดการข้อมูลชุด (Array) ขนาดใหญ่และเมทริกซ์

4. หลักการ Cascading
ก่อนที่จะทำการตรวจจับอารมณ์จากใบหน้าได้นั้น เราควรให้โปรแกรมสามารถตรวจจับใบหน้าได้ก่อน จึงใช้หลักการ Cascading สำหรับการจับใบหน้า ซึ่งจากโปรแกรมทำการโหลด cascade feature สำหรับใบหน้า ในที่นี้จะใช้เป็น haarcascade_frontalface_default.xml

haarcascade_frontalface_default.xml
  • หลักการของการ cascade feature
    ในการลองสร้างไฟล์ cascade ที่เป็น xml สำหรับใช้ในการตรวจจับความรู้สึกบนใบหน้า จากกระบวนการ Haar Cascade Training
    1. เตรียม library และข้อมูลต่างๆ
    2. ใช้รูปเป็นจำนวนมาก คือ รูปของสิ่งที่เราต้องการจะตรวจจับ ในที่นี้ คือ รูปใบหน้าที่แสดงถึงอารมณ์ต่างๆ
    3. ภาพที่ใช้ในการสร้างไฟล์ cascade จะต้องทำให้มันเป็นภาพ Grayscale และย่อขนาดของมันให้เล็กลง ซึ่งขนาดของภาพที่ถูกต้อง และภาพที่ไม่เกี่ยวข้องนั้น จะต้องมีขนาดเท่ากัน โดยในที่นี้เราจะย่อให้เหลือเพียง 300 x 300 pixels เท่านั้น โดยใช้ python code ด้านล่างนี้

5. Deep learning
Deep Learning คือวิธีการเรียนรู้แบบอัตโนมัติด้วยการ เลียนแบบการทำงานของโครงข่ายประสาทของมนุษย์ (Neurons) โดยนำระบบโครงข่ายประสาท (Neural Network) มาซ้อนกัน หลายชั้น (Layer) และทำการเรียนรู้ข้อมูลตัวอย่าง ซึ่งข้อมูล ดังกล่าวจะถูกนำไปใช้ในการตรวจจับรูปแบบ (Pattern) หรือจัด หมวดหมู่ข้อมูล (Classify the Data)
– หลักการทำงานของ Deep learning
ขั้นแรกในการที่จะทำการ Deep learning คือต้องมีชุดข้อมูล (Data Set)

Import module and library

หลังจากนั้นก็มีการสร้างโมเดล ในที่นี้ จะเป็นสถาปัตยกรรมของแบบจำลองในแต่ละชั้น คือมีการใช้ Convolutional และ Maxpooling แล้วโยนค่าไปที่ Activation Function

สถาปัตกรรมของโมเดล

หลังจากได้โมเดลมาแล้ว ส่วนที่สำคัญก็คือการ Training model และการ Optimize เพื่อให้ค่าใดๆลู่เข้าใกล้ 0 ในที่นี้จะ Save Model ชื่อว่า cnn เพื่อจะเอาไปใช้งานต่อ และจะเทรน 25 รอบ
หลังจากนั้นก็เปิด Terminal / CMD มาเลย แล้วพิมพ์ cd ตามด้วย path dir ที่เก็บไฟล์ทุกอย่างไว้ และกด Enter ตามด้วย $ Python3 ชื่อไฟล์.py ผลลัพท์ก็จะบอกโครงสร้างและค่าความแม่นยำของแบบจำลองนี้

จะเห็นว่ามีโครงสร้างของโมเดลที่เกิดจาก model.summary() และจำนวนรอบของการเทรนใน 2 บรรทัดสุดท้ายที่เกิดจากการกำหนดไว้ และมันจะเทรนแบบนี้ซ้ำไปจนครบ 25 รอบ หรืออาจจะน้อยกว่าถ้าเกิด Over fitting แล้วทุกสิ่งทุกอย่างก็จะถูกเก็บไว้ใน ไฟล์ .h5 ที่บันทึกไว้
สุดท้ายแล้วเมื่อเราตรวจจับใบหน้าได้แล้วก็ต้องเอาไฟล์ .h5 ที่ได้มาในตอนแรกจากการสร้างและเทรนโมลเดลมาใช้ สิ่งที่เราเทรนไปในตอนแรกนั้นมีทั้งหมด 7 class of labels ได้แก่ ‘Angry’, ’Happy’, ’Neural’, ’Sad’, ’Surprise’, ‘Disgust’, ‘Scared’

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

หน้าต่างโปรแกรม Visual Studio Code ระบบตรวจจับความรู้สึกบนใบหน้า
ผลการดำเนินงาน เมื่อโปรแกรมด้วยวิดีโอ
ผลการดำเนินงาน เมื่อโปรแกรมแบบเปิดกล้อง
แผนผังการทำงานของโปรแกรม

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

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

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

1.ที่มาของอัลกอริทึม
https://github.com/omar178/Emotion-recognition/blob/master/real_time_video.py

2.ติดตั้ง Library ใน python
https://www.youtube.com/watch?v=iNmrsrwjzvE

3.OpenCV
https://phyblas.hinaboshi.com/oshi01
https://medium.com/@wanchatpookhuntod_1602/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87-opencv-%E0%B8%AA%E0%B8%B3%E0%B8%AB%E0%B8%A3%E0%B8%B1%E0%B8%9A-python-98f478e70704
https://medium.com/boobeejung/how-to-install-opencv-python-55a140b4a4f2

4.Deep Learning
https://medium.com/mmp-li/deep-learning-%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%AA%E0%B8%B2%E0%B8%A1%E0%B8%B1%E0%B8%8D%E0%B8%8A%E0%B8%99-ep-3-keras-with-image-classification-%E0%B9%81%E0%B8%A2%E0%B8%81%E0%B8%A0%E0%B8%B2%E0%B8%9E%E0%B8%AB%E0%B8%A1%E0%B8%B2%E0%B9%81%E0%B8%A1%E0%B8%A7%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%87%E0%B9%88%E0%B8%B2%E0%B8%A2%E0%B9%86-2d5d95ee5613
https://sanparithmarukatat.medium.com/%E0%B8%AA%E0%B8%99%E0%B8%B8%E0%B8%81%E0%B8%81%E0%B8%B1%E0%B8%9A-neural-network-657fa293c4d1
https://medium.com/@somprasonggbl/%E0%B8%95%E0%B8%A3%E0%B8%A7%E0%B8%88%E0%B8%88%E0%B8%B1%E0%B8%9A%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%AA%E0%B8%B6%E0%B8%81%E0%B9%81%E0%B8%9A%E0%B8%9A-real-time-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-deep-learning-8db4a76ebf85
https://new.abb.com/news/detail/58004/deep-learning

5.Cascading
https://www.youtube.com/watch?v=MCZXmBnGCHk
https://playelek.com/haar-cascade-create/

บทความที่เกี่ยวข้องกัน

Share

You may also like...

Leave a Reply