แอนิเมชันใบหน้าแบบเรียลไทม์สำหรับอวตาร


ในโพสต์นี้ เราจะอธิบายกรอบการทำงานของการเรียนรู้เชิงลึกสำหรับการถดถอยการควบคุมการเคลื่อนไหวของใบหน้าจากวิดีโอ ซึ่งสามารถแก้ไขปัญหาเหล่านี้ได้ และเปิดโอกาสให้เราสามารถทำสิ่งต่าง ๆ ได้ในอนาคต กรอบการทำงานที่อธิบายไว้ในบล็อกโพสต์นี้ได้ถูกนำเสนอในรูปแบบการบรรยายที่งาน SIGGRAPH 2021 ด้วย
แอนิเมชันใบหน้า
มีตัวเลือกหลากหลายในการควบคุมและสร้างแอนิเมชันให้กับฟิกเกอร์ใบหน้า 3 มิติ ตัวเลือกที่เราใช้เรียกว่า Facial Action Coding System หรือ FACS ซึ่งกำหนดชุดของตัวควบคุม (โดยอิงจากการวางตำแหน่งกล้ามเนื้อใบหน้า) เพื่อบิดเบือนตาข่ายใบหน้า 3 มิติ แม้ว่าจะมีอายุมากกว่า 40 ปีแล้ว FACS ยังคงเป็นมาตรฐานที่ใช้กันโดยทั่วไป เนื่องจากระบบควบคุมของ FACS มีความเข้าใจง่ายและสามารถถ่ายโอนระหว่างอุปกรณ์ต่างๆ ได้อย่างสะดวก ตัวอย่างการใช้งาน FACS สามารถดูได้ด้านล่าง

วิธีการ
แนวคิดคือให้วิธีการที่ใช้การเรียนรู้เชิงลึกของเราใช้วิดีโอเป็นข้อมูลนำเข้าและให้ผลลัพธ์เป็นชุดของ FACS สำหรับแต่ละเฟรม เพื่อให้บรรลุเป้าหมายนี้ เราใช้สถาปัตยกรรมสองขั้นตอน: การตรวจจับใบหน้าและการถดถอย FACS

การตรวจจับใบหน้า
เพื่อให้ได้ประสิทธิภาพที่ดีที่สุด เราได้นำรูปแบบที่รวดเร็วของอัลกอริทึมการตรวจจับใบหน้า MTCNN ที่เป็นที่รู้จักกันดีมาใช้ อัลกอริทึม MTCNN ดั้งเดิมมีความแม่นยำและรวดเร็วมาก แต่ยังไม่เร็วพอที่จะรองรับการตรวจจับใบหน้าแบบเรียลไทม์บนอุปกรณ์หลายประเภทที่ผู้ใช้ของเราใช้งาน ดังนั้นเพื่อแก้ไขปัญหานี้ เราได้ปรับแต่งอัลกอริทึมให้เหมาะสมกับกรณีการใช้งานเฉพาะของเรา โดยเมื่อตรวจพบใบหน้าแล้ว การใช้งาน MTCNN ของเราจะรันเฉพาะขั้นตอนสุดท้ายของ O-Net ในเฟรมถัดไปเท่านั้น ส่งผลให้มีความเร็วเพิ่มขึ้นเฉลี่ย 10 เท่า เรายังใช้จุดสังเกตบนใบหน้า (ตำแหน่งของตา จมูก และมุมปาก) ที่คาดการณ์โดย MTCNN เพื่อจัดตำแหน่งกรอบหน้าให้ตรงก่อนเข้าสู่ขั้นตอนการถดถอยในขั้นตอนถัดไป การจัดตำแหน่งนี้ช่วยให้สามารถครอบตัดภาพอินพุตได้อย่างกระชับ ลดการคำนวณของเครือข่ายการถดถอย FACS

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

การฝึกอบรม
เราเริ่มต้นการฝึกอบรมโมเดลเพียงเพื่อการถดถอยของจุดสำคัญ (landmark regression) โดยใช้ทั้งภาพจริงและภาพสังเคราะห์ หลังจากจำนวนขั้นตอนที่กำหนดไว้ เราจะเริ่มเพิ่มลำดับภาพสังเคราะห์เพื่อเรียนรู้ค่าน้ำหนักสำหรับเครือข่ายย่อยการถดถอย FACS ด้านเวลา ลำดับภาพเคลื่อนไหวสังเคราะห์ถูกสร้างขึ้นโดยทีมสหวิทยาการของเราซึ่งประกอบด้วยนักศิลปะและวิศวกร ศิลปินของเราได้ตั้งค่าอุปกรณ์มาตรฐานที่ใช้สำหรับอัตลักษณ์ที่แตกต่างกันทั้งหมด (ตาข่ายใบหน้า) ซึ่งถูกใช้งานและเรนเดอร์โดยอัตโนมัติโดยใช้ไฟล์แอนิเมชันที่มีน้ำหนัก FACS ไฟล์แอนิเมชันเหล่านี้ถูกสร้างขึ้นโดยใช้อัลกอริธึมการมองเห็นคอมพิวเตอร์แบบคลาสสิกที่ทำงานบนลำดับวิดีโอการออกกำลังกายใบหน้า และเสริมด้วยลำดับที่แอนิเมชันด้วยมือสำหรับการแสดงออกทางสีหน้าที่สุดขั้วซึ่งขาดหายไปจากวิดีโอการออกกำลังกายใบหน้า
การสูญเสีย
เพื่อฝึกฝนเครือข่ายการเรียนรู้เชิงลึกของเรา เราทำการรวมค่าสูญเสียหลายประเภทเข้าด้วยกันอย่างเป็นเชิงเส้นเพื่อทำการถดถอยตำแหน่งสำคัญและน้ำหนัก FACS:
- การสูญเสียตำแหน่ง สำหรับจุดสังเกต ค่า RMSE ของตำแหน่งที่ถดถอย (Llmks) และสำหรับน้ำหนัก FACS ค่า MSE (Lfacs)
- การสูญเสียชั่วคราว สำหรับน้ำหนัก FACS เราลดการสั่นไหวโดยใช้การสูญเสียชั่วคราวในลำดับภาพเคลื่อนไหวสังเคราะห์ การสูญเสียความเร็ว (Lv) ที่ได้รับแรงบันดาลใจจาก [Cudeiro et al. 2019] คือค่าความแตกต่างระหว่างความเร็วเป้าหมายและความเร็วที่คาดการณ์ไว้ ซึ่งจะช่วยส่งเสริมความราบรื่นโดยรวมของนิพจน์เชิงพลวัต นอกจากนี้ ยังมีการเพิ่มค่าการปรับระเบียบ (Lacc) บนการเร่งความเร็วเพื่อลดการสั่นไหวของน้ำหนัก FACS (โดยรักษาน้ำหนักให้ต่ำเพื่อรักษาความตอบสนอง)
- การสูญเสียความสม่ำเสมอ เราใช้ภาพจริงโดยไม่มีการทำเครื่องหมายในความสูญเสียความสม่ำเสมอแบบไม่มีการกำกับดูแล (Lc ) ซึ่งคล้ายกับ [Honari et al. 2018] สิ่งนี้ส่งเสริมให้การคาดการณ์จุดสำคัญมีความเท่าเทียมกันภายใต้การเปลี่ยนแปลงภาพที่แตกต่างกัน ซึ่งช่วยปรับปรุงความสม่ำเสมอของตำแหน่งจุดสำคัญระหว่างเฟรมโดยไม่ต้องใช้ป้ายกำกับจุดสำคัญสำหรับชุดภาพการฝึกอบรมบางส่วน
ประสิทธิภาพ
เพื่อปรับปรุงประสิทธิภาพของตัวเข้ารหัสโดยไม่ลดความแม่นยำหรือเพิ่มการสั่นไหว เราใช้การคอนโวลูชันแบบไม่เติมช่องว่าง (unpadded convolutions) อย่างเลือกสรรเพื่อลดขนาดแผนที่ลักษณะ (feature map) วิธีนี้ช่วยให้เราควบคุมขนาดของแผนที่ลักษณะได้ดีกว่าการใช้การคอนโวลูชันแบบก้าว (strided convolutions) เพื่อรักษาความคงเหลือ (residual) เราแบ่งแผนที่ลักษณะออกเป็นส่วนๆ ก่อนที่จะเพิ่มไปยังผลลัพธ์ของการคอนโวลูชันแบบไม่เติมช่องว่าง นอกจากนี้ เราได้กำหนดความลึกของแผนที่ลักษณะเฉพาะให้เป็นจำนวนเท่าของ 8 เพื่อการใช้หน่วยความจำอย่างมีประสิทธิภาพกับชุดคำสั่งเวกเตอร์ เช่น AVX และ Neon FP16 ซึ่งส่งผลให้ประสิทธิภาพเพิ่มขึ้น 1.5 เท่า
โมเดลสุดท้ายของเรามีพารามิเตอร์ 1.1 ล้านตัว และต้องการการคูณสะสม 28.1 ล้านครั้งในการประมวลผล สำหรับการอ้างอิง โมบิลเนต V2 แบบดั้งเดิม (ซึ่งเป็นพื้นฐานของสถาปัตยกรรมของเรา) ต้องการการคูณสะสม 300 ล้านครั้งในการประมวลผล เราใช้กรอบการทำงาน NCNN สำหรับการอนุมานแบบจำลองบนอุปกรณ์ และเวลาการประมวลผลแบบเส้นเดียว (รวมถึงการตรวจจับใบหน้า) สำหรับหนึ่งเฟรมของวิดีโอได้แสดงไว้ในตารางต่อไปนี้ โปรดทราบว่าเวลาการประมวลผล 16 มิลลิวินาที จะรองรับการประมวลผล 60 เฟรมต่อวินาที (FPS)

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


