ใช้ AI ตรวจจับใบหน้า อารมณ์คน และเพศ

ใช้ AI ตรวจจับใบหน้าคนในรูป
สมัยนี้ดูจะธรรมดาเกินไป คงเห็นกันทำเยอะแล้ว
เรามาดูผลงานวิจัย AI อีกเวอร์ชั่นหนึ่ง
ใช้ตรวจจับอารมณ์คนขณะเรียลไทม์ได้ด้วย … อะฮะไม่ธรรมดา

จาก paper ต้นฉบับ
“Real-time Convolutional Neural Networks for emotion and gender classification”
https://arxiv.org/abs/1710.07557

เทคนิคโดยย่อเขาจะใช้ Deep learning เป็นประเภท CNN (Convolutional Neural Networks)

โครงสร้างเป็น Convolutional Neural Networks สำหรับงาน real-time classification (ภาพจากงานวิจัย)

โดยมันมีความสามารถตรวจจับ 2 อย่างในรูปภาพได้แก่

1) ตรวจสอบว่าเป็น เพศชาย เพศหญิง …มีความแม่นยำสูง ถูกต้อง 96%

2) ตรวจจับอารมณ์คน  ….แต่ความแม่นยำยังต่ำอยู่ ถูกแค่ 66%

ซึ่งอารมณ์คนที่จับได้ มี 8 อย่าง ดังนี้

?angry?, ?disgust?, ?fear?, ?happy?, ?sad?, ?surprise?, ?neutral?

แปลเป็นไทย

?โกรธ?, ?รังเกียจ?, ?กลัว?, ?มีความสุข?, ?เศร้า?, ?แปลกใจ?, ?เฉยๆ?

ซึ่งเทคนิคนี้สามารถตรวจจับภาพหน้าคนได้ทั้งแบบภาพนิ่ง
หรือเป็นภาพวีดีโอก็ได้
ในระดับเรียลไทม์ ….ขอบอกเลย

แต่เท่าที่ลองจับอารมณ์คน
ก็ยังเห็นผิดพลาดเยอะอยู่นะ
ถ้าคนสีหน้านิ่งเกิ๊นไป ก็ตรวจไม่ได้
ถือว่าปราบเซียนอยู่เหมือนกัน

คิดไปคิดมา เปลี่ยนมาตรวจจับหน้าคนในละครแทนดีกว่า
เลยไปเอามาจากละคร “น้ำตากามเทพ” ของจีทีเฮช
เหตุผลนักแสดงเรื่องนี้ เขาเล่นโอเวอร์แอคติ้ง เล่นใหญ่ดี
ผลปรากฏว่าตรวจจับได้ดีขึ้นเยอะ
(แต่ก็ยังมีผิดอยู่ เอ่อๆ บ้าง)

ทั้งนี้ในคลิปที่เห็นข้างบน จะตรวจจับอารมณ์คนอย่างเดียว
จะเห็นเป็นกรอบสี่เหลี่ยมครอบหน้าคน
แล้วขึ้นข้อความบอกว่าสีหน้าอารมณ์ตอนนี้คืออะไร?
แต่ไม่ได้โชว์เพศชาย หรือหญิงให้ดูนะบอกก่อน

ใครสนใจอยากลองทำ
ก็เชิญดูโค้ดเขาตามนี้เลยครับ
มันเป็นของงานวิจัยเขาโดยตรง
https://github.com/oarriaga/face_classification/

ทั้งนี้โค้ดสามารถอ่านจากรูปภาพ
หรือจากกล้องเวบเคมก็ได้ …ชีวิตดีดี
ภาษาที่ใช้เป็น python ครับผม
แต่เท่าที่ลองรัน ก็เจอผู้สร้างวางยา ยังมีบั๊กอยู่นะครับ ฮ่าาาา

ยังไงก็เอาไปศึกษาได้
หรือจะไปต่อยอด ….ทำให้เหนือกว่าเขาก็ได้ครับ

หมายเหตุ ในคลิปข้างบนผมใส่เสียงพูดตัวละครเข้าไป เพื่ออรรถรสในการชม

วิธีติดตั้งและใช้งาน

ในหัวข้อนี้ผมจะพูดถึงการติดตั้งโปรเจค face_classification ของงานวิจัยเขานะครับ 
ซึ่งจะเป็นแบบคอมมานไลน์ทั้งหมด อ้างอิงบนวินโดวส์นะครับ

1) แนะนำให้ลง Anaconda ซึ่งเป็นแพลตฟอร์มสำหรับงาน machine learning และ Deep learning โดยเฉพาะ

ทำให้เราสามารถใช้ python ได้ ลิงค์ดาวน์โหลด https://www.anaconda.com/download/

2) ดาวน์โหลดแพ็กเกจเป็น zip จากโปรเจคต้นตำรับ
https://github.com/oarriaga/face_classification

ดาวน์โหลดเสร็จก็แตกไฟล์ด้วยครับ

ถ้าใครใช้ git เป็น ก็ใช้คำสั่งบนคอมมานไลน์

git clone https://github.com/oarriaga/face_classification.git

เดี่ยวโค้ดของโปรเจคจะดาวน์โหลดมาอยู่ที่เครื่องเรา (อย่าลืมต่อเน็ตด้วย)

3) cd ไปไดเรคเทอรี่ที่เราดาวน์โหลดโค้ด

cd face_classification
4)  ติดตั้งมอดูลและแพ็กเกจต่างๆ ด้วยคำสั่ง
pip install -r requirements.txt
ถ้าคำสั่งข้างบนมีปัญหา (เข้าใจว่าน่าจะติดที่ tensorflow ลงแล้วเกิด error)
จะใช้วิธีติดตั้งมอดูลเองโดยตรงก็ได้ ดัวยคำสั่งข้างล่างนี้แทนก็ได้
pip install keras
pip install tensorflow
pip install pandas
pip install numpy
pip install h5py
pip install statistics
pip install opencv-python

6) ก่อนจะรันให้ cd เข้าไปที่ src ซึ่งไฟล์ที่ใช้รันจะอยู่นั้น

cd src

ถึงตอนนี้ควรอยู่ที่โฟลเดอร์ face_classification/src นะครับ อย่าผิดโฟลเดอร์ละ

7) ตัวอย่างคำสั่งที่รันแบบตรวจจับในภาพเพียงอันเดียว

python image_emotion_gender_demo.py ../images/test_image.jpg

คำสั่งข้างบนมันจะไปเอาไฟล์ test_image.jpg ที่อยู่ในไดเรคเทอรี่ images (อยู่ระดับเดียวกับ src)
นำมาตรววจับทั้งสีหน้าอารมณ์คนและเพศสภาพ

ส่วนเอาท์พุตต้องไปดูโค้ดในไฟล์ src/image_emotion_gender_demo.py

cv2.imwrite('../images/predicted_test_image.png', bgr_image)

โดยผลลัพธ์มันทิ้งไว้เป็นไฟล์  /images/predicted_test_image.png (เข้าไปแก้โค้ดได้ครับ ถ้าอยากให้เอาท์พุตอยู่ที่อื่น)

ข้างล่างจะเป็นผลลัพธ์ จากการใช้ไฟล์ตัวอย่าง test_image.jpg ของงานวิจัยเขามาเป็นกรณีศึกษา ซึ่งมันจะโชว์ทั้งเพศ และอารมณ์สีหน้าออกมา

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

8)  สำหรับคำสั่งรันผ่านกล้องเว็บแคมให้ทำงานแบบเรียลไทม ก็คำสั่งนี้ครับ (ตรวจจับสีหน้าอารมณ์อย่างเดียว ไม่ได้ตรววจับเพศ)

python video_emotion_color_demo.py

ถ้าต้องการตรวจจับทั้งอารมณ์ และเพศด้วยก็ใช้คำสั่งข้างล่างนี้

python video_emotion_gender_demo.py

9) ถ้าใครใช้ docker ก็ลองดูได้ครับ (ผมยังไม่ได้ลอง)

docker pull ekholabs/face-classifier
docker run -d -p 8084:8084 --name=face-classifier ekholabs/face-classifier
curl -v -F image=@[path_to_image] http://localhost:8084/classifyImage > image.png

หมายเหตุ โปรเจคนี้มีบั๊กพอควร นะครับ ผมจึงเขียนได้เท่าที่เขียนครับ
ถ้าสงสัยมีปัญหาก็ติดต่อทีมงานวิจัยโดยตรงดีกว่า
เพราะอนาคตตัวโปรเจคอาจเปลี่ยนแปลงได้

https://github.com/oarriaga/face_classification

บทความ AI อื่นๆ ที่น่าสนใจ

เขียนโดยแอดมินโฮ โอน้อยออก

Please like Fanpage