Logo Zephyrnet

Hoạt ảnh khuôn mặt thời gian thực cho ảnh đại diện

Ngày:

Biểu cảm khuôn mặt là một bước quan trọng trong hành trình của Roblox nhằm biến metaverse trở thành một phần trong cuộc sống hàng ngày của mọi người thông qua các tương tác avatar tự nhiên và đáng tin cậy. Tuy nhiên, việc tạo hoạt ảnh cho các khuôn mặt nhân vật ảo 3D trong thời gian thực là một thách thức kỹ thuật rất lớn. Mặc dù có nhiều đột phá trong nghiên cứu, nhưng vẫn có rất ít ví dụ thương mại về các ứng dụng hoạt ảnh trên khuôn mặt thời gian thực. Điều này đặc biệt khó khăn tại Roblox, nơi chúng tôi hỗ trợ một loạt các thiết bị người dùng, các điều kiện trong thế giới thực và các trường hợp sử dụng cực kỳ sáng tạo từ các nhà phát triển của chúng tôi.

Trong bài đăng này, chúng tôi sẽ mô tả một khuôn khổ học tập sâu để khôi phục các điều khiển hoạt ảnh trên khuôn mặt từ video. Cả hai đều giải quyết những thách thức này và mở ra cho chúng ta một số cơ hội trong tương lai. Khung mô tả trong bài đăng blog này cũng được trình bày dưới dạng nói chuyện at SIGGRAPH 2021.

Hoạt hình trên khuôn mặt

Có nhiều tùy chọn khác nhau để điều khiển và tạo hoạt ảnh cho khuôn mặt 3D. Hệ thống chúng tôi sử dụng được gọi là Hệ thống mã hóa hành động trên khuôn mặt hoặc FACS, xác định một tập hợp các điều khiển (dựa trên vị trí của cơ mặt) để làm biến dạng lưới khuôn mặt 3D. Mặc dù đã hơn 40 năm tuổi, FACS vẫn là tiêu chuẩn trên thực tế do các điều khiển FACS trực quan và dễ dàng chuyển nhượng giữa các giàn khoan. Dưới đây là một ví dụ về hệ thống FACS đang được thực thi.

Phương pháp

Ý tưởng là cho phương pháp dựa trên học sâu của chúng tôi để lấy một video làm đầu vào và đầu ra một bộ FACS cho mỗi khung hình. Để đạt được điều này, chúng tôi sử dụng kiến ​​trúc hai giai đoạn: phát hiện khuôn mặt và hồi quy FACS.

Phát hiện khuôn mặt

Để đạt được hiệu suất tốt nhất, chúng tôi triển khai một biến thể nhanh của thuật toán phát hiện khuôn mặt MTCNN tương đối nổi tiếng. Thuật toán MTCNN ban đầu khá chính xác và nhanh nhưng không đủ nhanh để hỗ trợ nhận diện khuôn mặt thời gian thực trên nhiều thiết bị được người dùng của chúng tôi sử dụng. Do đó, để giải quyết vấn đề này, chúng tôi đã điều chỉnh thuật toán cho trường hợp sử dụng cụ thể của mình trong đó khi một khuôn mặt được phát hiện, việc triển khai MTCNN của chúng tôi chỉ chạy giai đoạn O-Net cuối cùng trong các khung hình liên tiếp, dẫn đến tốc độ tăng trung bình gấp 10 lần. Chúng tôi cũng sử dụng các điểm mốc trên khuôn mặt (vị trí của mắt, mũi và khóe miệng) do MTCNN dự đoán để căn chỉnh hộp giới hạn khuôn mặt trước giai đoạn hồi quy tiếp theo. Sự căn chỉnh này cho phép cắt bớt ảnh đầu vào một cách chặt chẽ, giảm bớt tính toán của mạng hồi quy FACS.

Hồi quy FACS 

Kiến trúc hồi quy FACS của chúng tôi sử dụng thiết lập đa nhiệm để đồng đào tạo các mốc và trọng số FACS bằng cách sử dụng đường trục chia sẻ (được gọi là bộ mã hóa) làm trình trích xuất tính năng.

Thiết lập này cho phép chúng tôi tăng trọng số FACS học được từ chuỗi hoạt ảnh tổng hợp với hình ảnh thực thu được những nét tinh tế của nét mặt. Mạng con hồi quy FACS được đào tạo cùng với việc sử dụng trình hồi quy điểm mốc sự phức tạp nhân quả; các tập hợp này hoạt động trên các tính năng theo thời gian thay vì các tập hợp chỉ hoạt động trên các tính năng không gian như có thể tìm thấy trong bộ mã hóa. Điều này cho phép mô hình tìm hiểu các khía cạnh thời gian của hoạt ảnh trên khuôn mặt và làm cho nó ít nhạy cảm hơn với những điểm không nhất quán như rung động.

Hội thảo

Ban đầu, chúng tôi đào tạo mô hình chỉ hồi quy mang tính bước ngoặt bằng cách sử dụng cả hình ảnh thực và hình ảnh tổng hợp. Sau một số bước nhất định, chúng tôi bắt đầu thêm các chuỗi tổng hợp để tìm hiểu trọng số cho mạng con hồi quy FACS tạm thời. Các chuỗi hoạt hình tổng hợp được tạo ra bởi đội ngũ nghệ sĩ và kỹ sư liên ngành của chúng tôi. Một giàn chuẩn hóa được sử dụng cho tất cả các đặc điểm nhận dạng khác nhau (lưới khuôn mặt) được thiết lập bởi nghệ sĩ của chúng tôi, được thực hiện và kết xuất tự động bằng cách sử dụng các tệp hoạt ảnh có chứa trọng số FACS. Các tệp hoạt ảnh này được tạo bằng cách sử dụng các thuật toán thị giác máy tính cổ điển chạy trên chuỗi video về sức khỏe khuôn mặt và được bổ sung bằng chuỗi hoạt ảnh bằng tay cho các biểu cảm khuôn mặt cực kỳ thiếu trong các video về sức khỏe. 

Lỗ

Để đào tạo mạng lưới học tập sâu của chúng tôi, chúng tôi kết hợp tuyến tính một số thuật ngữ mất mát khác nhau để hồi quy các mốc và trọng số FACS: 

  • Tổn thất Vị trí. Đối với các điểm mốc, RMSE của các vị trí hồi quy (Llmks ), và đối với trọng số FACS, MSE (Ltướng mạo ). 
  • Tổn thất tạm thời. Đối với trọng số FACS, chúng tôi giảm rung giật bằng cách sử dụng tổn thất tạm thời qua các chuỗi hoạt ảnh tổng hợp. Mất vận tốc (Lv ) lấy cảm hứng từ [Cudeiro và cộng sự. 2019] là MSE giữa vận tốc mục tiêu và vận tốc dự đoán. Nó khuyến khích sự mượt mà tổng thể của các biểu thức động. Ngoài ra, một thuật ngữ chính quy về việc tăng tốc (Lacc ) được thêm vào để giảm rung lắc trọng lượng FACS (trọng lượng của nó được giữ ở mức thấp để duy trì khả năng đáp ứng). 
  • Mất nhất quán. Chúng tôi sử dụng hình ảnh thực mà không có chú thích làm mất tính nhất quán không được giám sát (Lc ), tương tự như [Honari và cộng sự. 2018]. Điều này khuyến khích các dự đoán mốc trở nên tương đương dưới các phép biến đổi hình ảnh khác nhau, cải thiện tính nhất quán của vị trí mốc giữa các khung mà không yêu cầu nhãn mốc cho một tập hợp con của các hình ảnh huấn luyện.

HIỆU QUẢ

Để cải thiện hiệu suất của bộ mã hóa mà không làm giảm độ chính xác hoặc tăng độ chập chờn, chúng tôi đã sử dụng một cách có chọn lọc các cụm chập không được đánh dấu để giảm kích thước bản đồ đối tượng. Điều này cho phép chúng tôi kiểm soát nhiều hơn các kích thước bản đồ đối tượng địa lý so với các khối phức hợp sẽ được lập bảng. Để duy trì phần còn lại, chúng tôi cắt bản đồ tính năng trước khi thêm nó vào đầu ra của một tích chập không được đánh dấu. Ngoài ra, chúng tôi đặt độ sâu của bản đồ đối tượng thành bội số 8, để sử dụng bộ nhớ hiệu quả với các tập lệnh vectơ như AVX và Neon FP16, và dẫn đến hiệu suất tăng gấp 1.5 lần.

Mô hình cuối cùng của chúng tôi có 1.1 triệu tham số và yêu cầu 28.1 triệu phần nhân-tích lũy để thực thi. Để tham khảo, vani Mạng di động V2 (mà kiến ​​trúc của chúng tôi dựa trên) yêu cầu 300 triệu nhân-tích lũy để thực thi. Chúng tôi sử dụng NCNN khung cho suy luận mô hình trên thiết bị và thời gian thực thi một luồng (bao gồm cả nhận diện khuôn mặt) cho một khung video được liệt kê trong bảng bên dưới. Xin lưu ý rằng thời gian thực hiện là 16ms sẽ hỗ trợ xử lý 60 khung hình / giây (FPS). 

Cái gì tiếp theo

Đường ống dữ liệu tổng hợp của chúng tôi cho phép chúng tôi cải thiện lặp đi lặp lại tính dễ biểu đạt và tính mạnh mẽ của mô hình được đào tạo. Chúng tôi đã thêm các chuỗi tổng hợp để cải thiện khả năng phản hồi với các biểu hiện bị bỏ sót, đồng thời đào tạo cân bằng trên các đặc điểm nhận dạng khuôn mặt khác nhau. Chúng tôi đạt được hoạt ảnh chất lượng cao với sự tính toán tối thiểu nhờ vào công thức tạm thời của kiến ​​trúc và tổn thất của chúng tôi, một đường trục được tối ưu hóa cẩn thận và sự thật cơ bản không có lỗi từ dữ liệu tổng hợp. Lọc tạm thời được thực hiện trong mạng con trọng số FACS cho phép chúng tôi giảm số lượng và kích thước của các lớp trong xương sống mà không làm tăng jitter. Việc mất tính nhất quán không được giám sát cho phép chúng tôi đào tạo với một tập hợp lớn dữ liệu thực, cải thiện tính tổng quát và tính mạnh mẽ của mô hình của chúng tôi. Chúng tôi tiếp tục làm việc để tinh chỉnh và cải thiện hơn nữa các mô hình của mình, để có được kết quả rõ ràng hơn, không bị giật và mạnh mẽ hơn. 

Nếu bạn quan tâm đến việc giải quyết những thách thức tương tự đi đầu trong việc theo dõi khuôn mặt thời gian thực và học máy, vui lòng xem một số vị trí mở với nhóm của chúng tôi.

Các bài viết Hoạt ảnh khuôn mặt thời gian thực cho ảnh đại diện xuất hiện đầu tiên trên Blog Roblox.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?