Categories
Computer Diary

พูดถึง Head Pose Estimation ที่ใช้ในขณะนี้

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

Head Pose Estimation คือเทคนิคการจับภาพการเคลื่อนไหวของศีรษะเมื่อเทียบกับมุมกล้องที่ถ่ายอยู่ในขณะที่จับภาพ โดยนำภาพใบหน้าของบุคคลที่จับภาพได้จากเทคนิคการจับภาพใบหน้าที่ได้กล่าวถึงในบทความก่อนหน้านี้มาประมวลผลผ่านเทคนิคหนึ่งแล้วระบุเป็นองศาการเคลื่อนไหวของศีรษะใน 3 ทิศทางได้แก่ หันศีรษะซ้าย-ขวา (Yaw), ก้ม-เงยศีรษะ (Pitch) และเอนศีรษะซ้าย-ขวา (Roll)

ทิคทางการหันศีรษะ Yaw, Pitch และ Roll จากเอกสาร Head Pose Estimation in Computer Vision : A Survey

ซึ่งในอดีตจนมาถึงปัจจุบันมีการพัฒนาเทคนิคมาเรื่อย ๆ จนกระทั่งมาถึงปัจจุบันที่นำเทคนิคการเรียนรู้เชิงลึก (Deep Learning) มาใช้งานร่วมด้วย หลังจากการพัฒนาเทคนิค AlexNet ที่ได้ความแม่นยำจากการทดสอบกับฐานข้อมูล ImageNet เนื่องมาจากได้ความแม่นยำ (Accuracy) ที่มากกว่าเทคนิคอื่น กับสามารถจับลักษณะภาพได้โดยอัตโนมัติ (Automatic Feature Extraction) โดยในงานวิจัยที่ทำอยู่นำเทคนิคเหล่านี้มาใช้งาน

เทคนิคหนึ่งที่เรานำมาใช้คือ Hopenet

Hopenet

เทคนิค Hopenet จากเอกสาร Fine-Grained Head Pose Estimation Without Keypoints

เทคนิค Hopenet (เผยแพร่ในเอกสารงานวิจัยที่มีหัวข้อว่า Fine-Grained Head Pose Estimation Without Keypoints) นี้ที่นำภาพใบหน้าผ่านกระบวนการการเรียนรู้เชิงลึก (Deep Learning) ที่ใช้โครงการเครือข่ายประสาท (Neural Network Architecture) แบบ ResNet-50 แล้วให้ประเมินออกมาเป็นการเคลื่อนไหวของศีรษะและลำคอ 3 ทิศทาง

เราเลยนำเทคนิคนี้จากเว็บ Github มาทดสอบในเบื้องต้น (Preliminary Study) แล้วได้ความแม่นยำจากการทดสอบฐานข้อมูลสาธารณะอย่าง AFLW2000 และ BIWI มากกว่าเทคนิคอื่นในขณะนั้น

อย่างไรก็ดีงานวิจัยที่ทำอยู่นี้เราต้องจับภาพบริเวณริมฝีปากร่วมด้วย ดังนั้นแล้วเทคนิคนี้เลยไม่ได้ใช้ แล้วจะต้องทำอย่างไรดีล่ะ? เรามาพูดถึงหัวข้อถัดไปดีกว่า ที่เรียกว่า Facial Landmark Detection

Facial Landmark Detection

Facial Landmark Detection

Facial Landmark Detection คือกระบวนการจับจุดแลนมาร์คตำแหน่งอวัยวะบนใบหน้าซึ่งเป็นกระบวนการที่สำคัญต่อการนำไปใช้ประมวลผลต่อในงานด้าน Computer Vision งานอื่นต่อไป ได้แก่ กระบวนการการจับภาพการเคลื่อนไหวศีรษะ (Head Pose Estimation) กับกระบวนการจับภาพอารมณ์บนใบหน้า (Facial Emotion Recognition) เป็นต้น

เทคนิคนี้ได้รับการพัฒนามานานเกิน 20 ปีได้แล้ว โดยเทคนิคช่วงแรก ๆ จะเป็นการจับภาพทั้งภาพใบหน้า แล้วแกะลักษณะภาพบนใบหน้า (Feature) เพื่อนำไปประมวลผลผ่านเทคนิคการเรียนรู้ (Machine Learning) ได้แก่

  • Active Shape Model, Active Appearance Model ที่แปลงภาพผ่าน PCA (Principal Component Analysis)
  • Constrained Local Model ที่ใช้ Point Distribution Model ร่วมกันกับใช้ตำแหน่งภาพตามอวัยวะต่าง ๆ เพื่อปรับจุดบนใบหน้าให้แม่นยำขึ้น
  • เป็นต้น

จนกระทั่ง AlexNet ได้รับการพัฒนาขึ้น มีเทคนิคที่พัฒนาขึ้นจากการเรียนรู้เชิงลึก (Deep Learning) แล้วได้ความแม่นยำมากกว่าเทคนิคอื่น นอกเหนือจากนี้มีงานวิจัยบางชิ้นที่ผสมหลายเทคนิคได้แก่การจับภาพใบหน้า กับการจับภาพการเคลื่อนไหวของศีรษะ และการจับจุดอวัยวะบนใบหน้าร่วมกันเลย ได้แก่ HyperFace, MTCNN หรืออื่น ๆ

อย่างไรก็ดี ปัญหาของเทคนิครุ่นเก่าคือประมวลผลนานมากกว่าปกติ (ในเอกสารงานวิจัยจะพูดถึง Computational Complexity) ไม่ทันใจวัยรุ่น ความแม่นยำก็ไม่ได้สูงไปกว่าเทคนิคที่กล่าวถึงในหัวข้อก่อนหน้านั้น แถมตอนสอบ อาจารย์ก็พูดถึงเทคนิค FAN (Face Alignment Network) ร่วมด้วยที่มีหัวข้อว่า How far are we from solving the 2D & 3D Face Alignment problem? (and a dataset of 230,000 3D facial landmarks) เลยนำเทคนิคนี้มาทดสอบก่อน โดยดาวน์โหลดโค้ดจาก Github

เทคนิค FAN จากเอกสาร How far are we from solving the 2D & 3D Face Alignment problem? (and a dataset of 230,000 3D facial landmarks)

เทคนิค FAN เป็นเทคนิคการจับจุดอวัยวะบนใบหน้าโดยใช้ Neural Network Architecture แบบ Hourglass Network ซึ่งทดสอบแล้วแม่นยำกว่าเทคนิคเก่าในอดีต แต่อย่างไรก็ดี เมื่อนำมาทดสอบจริงแล้วยังติดเรื่องความแม่นยำการจับภาพอยู่ดี

ระหว่างนั้นลองเทคนิคการจับภาพใบหน้าเทคนิคอื่นอย่างเช่น Style Aggregated Network, Supervision-by-registraion, dlib หรืออื่น ๆ ซึ่งแม่นยำไหม ก็พอได้ระดับหนึ่ง แต่ยังไม่แม่นยำมากจนพอใจ และยังทำงานช้าไม่ทันใจ

เราค้นหาไปจนเจอเทคนิคหนึ่งที่เรียกว่า 3DDFA_V2 ตามวารสารงานวิจัยที่มีชื่อว่า Towards Fast, Accurate and Stable 3D Dense Face Alignment

เทคนิค 3DDFA_V2 จากเอกสารงานวิจัย Towards Fast, Accurate and Stable 3D Dense Face Alignment

เทคนิคนี้นำภาพใบหน้าที่จับภาพมาได้ ประมวลผลผ่าน Neural Network Architecture อย่าง MobileNetV2 ที่มีโครงสร้างที่มีขนาดเล็ก ทำงานได้เร็ว ใช้ทรัพยากรต่ำกว่าเทคนิคอื่นอย่าง ResNet, VGG ให้ค่าพารามิเตอร์ที่จำเป็นต่อการประมวลผลผ่าน 3D Morphable Model ให้แปลงจุด 2 มิติ เป็น 3 มิติ แล้วใช้แก้สมการผ่าน Rotation Matrix เพื่อให้ได้องศาการเคลื่อนไหวของศีรษะและลำคอ

เมื่ออ่านเทคนิคนี้แล้ว เราโหลดมาใช้งานผ่าน Github ทดสอบเทคนิคกับฐานข้อมูลสาธารณะ รวมถึงภาพที่จับภาพมาได้พบว่าได้ความแม่นยำมากกว่าเทคนิคอื่น เลยนำไปใช้งานจริง ก็พบว่าทำงานได้เร็ว ใช้ทรัพยากรที่ต่ำพอที่จะนำ Surface Pro X (ที่อัพเกรตจากวินโดว์ 10 เป็นวินโดว์ 11 ได้สบาย) มาประมวลผลได้โดยไม่มีปัญหาอะไร

สำหรับผู้อ่านที่สนใจ ผู้อ่านสามารถดาวน์โหลดโค้ดจากเว็บ Github และอ่านเอกสารงานวิจัยได้ในลิ้งค์นี้ครับ

ข้อมูลเพิ่มเติม

สำหรับผู้อ่านที่สนใจข้อมูลเพิ่มเติมของเทคนิคการจับภาพการเคลื่อนไหวของศีรษะ รวมถึงเทคนิคการมาร์คจุดบนใบหน้า สามารถอ่านเพิ่มเติมได้ในเอกสารงานวิจัยที่มีชื่อว่า Head Pose Estimation in Computer Vision : A Survey กับ Facial Landmark Detection: a Literature Survey ครับ