Logo Zephyrnet

Bên trong công nghệ – Giải quyết biểu cảm khuôn mặt của Avatar – Blog Roblox

Ngày:

Inside the Tech là một chuỗi blog đi kèm với chúng tôi Podcast nói chuyện công nghệ. Trong tập 20 của podcast, Hình đại diện & Tự thể hiện, Giám đốc điều hành Roblox David Baszucki đã nói chuyện với Giám đốc Kỹ thuật Cấp cao Kiran Bhat, Giám đốc Sản phẩm Cấp cao Mahesh Ramasubramanian và Giám đốc Sản phẩm Chính Effie Goenawan, về tương lai của giao tiếp phong phú thông qua hình đại diện và những thách thức kỹ thuật mà chúng tôi đang giải quyết để kích hoạt nó. Trong ấn bản Inside the Tech này, chúng tôi đã trò chuyện với Giám đốc kỹ thuật Ian Sachs để tìm hiểu thêm về một trong những thách thức kỹ thuật đó—kích hoạt biểu cảm khuôn mặt cho hình đại diện của chúng tôi—và cách nhóm Sáng tạo Avatar (thuộc nhóm Engine) đang giúp người dùng thể hiện bản thân. trên Roblox.

Những thách thức kỹ thuật lớn nhất mà nhóm của bạn đang gặp phải là gì?

Khi nghĩ về cách hình đại diện đại diện cho ai đó trên Roblox, chúng tôi thường xem xét hai điều: Hình đại diện đó hoạt động như thế nào và trông như thế nào. Vì vậy, trọng tâm chính của nhóm tôi là cho phép hình đại diện phản ánh biểu cảm của một người. Ví dụ: khi ai đó cười, hình đại diện của họ cũng mỉm cười đồng bộ với họ. 

Một trong những điều khó khăn khi theo dõi nét mặt là điều chỉnh hiệu quả của mô hình để chúng tôi có thể ghi lại những biểu cảm này trực tiếp trên thiết bị của người đó trong thời gian thực. Chúng tôi cam kết làm cho nhiều người trên Roblox có thể truy cập tính năng này nhất có thể và chúng tôi cần hỗ trợ nhiều loại thiết bị. Lượng sức mạnh tính toán mà thiết bị của ai đó có thể xử lý là một yếu tố quan trọng trong đó. Chúng tôi muốn mọi người có thể thể hiện bản thân, không chỉ những người có thiết bị mạnh mẽ. Vì vậy, chúng tôi đang triển khai một trong những mô hình deep learning đầu tiên của mình để biến điều này thành hiện thực. 

Thách thức kỹ thuật quan trọng thứ hai mà chúng tôi đang giải quyết là đơn giản hóa quy trình mà người sáng tạo sử dụng để phát triển hình đại diện động mà mọi người có thể cá nhân hóa. Việc tạo hình đại diện như vậy khá phức tạp vì bạn phải tạo mô hình cho phần đầu và nếu bạn muốn nó hoạt hình, bạn phải làm những việc rất cụ thể để điều chỉnh mô hình, chẳng hạn như đặt các khớp và vật nặng để tạo lớp da hòa trộn tuyến tính. Chúng tôi muốn làm cho quá trình này trở nên dễ dàng hơn đối với người sáng tạo nên chúng tôi đang phát triển công nghệ để đơn giản hóa quy trình này. Họ chỉ cần tập trung vào việc xây dựng mô hình tĩnh. Khi họ làm vậy, chúng tôi có thể tự động sắp xếp và lồng nó vào lồng. Sau đó, tính năng theo dõi khuôn mặt và mặc quần áo nhiều lớp sẽ hoạt động ngay lập tức. 

Một số phương pháp tiếp cận và giải pháp đổi mới mà chúng tôi đang sử dụng để giải quyết những thách thức kỹ thuật này là gì?

Chúng tôi đã thực hiện một số điều quan trọng để đảm bảo có được thông tin phù hợp về nét mặt. Điều đó bắt đầu bằng việc sử dụng FACS (Hệ thống kiểm soát hoạt ảnh khuôn mặt) tiêu chuẩn ngành. Đây là chìa khóa của mọi thứ vì chúng là thứ chúng ta sử dụng để điều khiển nét mặt của hình đại diện—miệng rộng bao nhiêu, mắt mở bao nhiêu, v.v. Chúng ta có thể sử dụng khoảng 50 điều khiển FACS khác nhau để mô tả biểu cảm khuôn mặt mong muốn. 

Khi xây dựng một thuật toán máy học để ước tính biểu cảm khuôn mặt từ hình ảnh hoặc video, bạn sẽ huấn luyện một mô hình bằng cách hiển thị cho mô hình đó những hình ảnh mẫu có biểu thức thực tế cơ bản đã biết (được mô tả bằng FACS). Bằng cách hiển thị cho mô hình nhiều hình ảnh khác nhau với các biểu cảm khác nhau, mô hình sẽ học cách ước tính biểu cảm khuôn mặt của những khuôn mặt chưa từng thấy trước đó.

Thông thường, khi bạn đang theo dõi khuôn mặt, những biểu hiện này được con người gắn nhãn và phương pháp đơn giản nhất là sử dụng các mốc—ví dụ: đặt dấu chấm trên hình ảnh để đánh dấu vị trí pixel của các đặc điểm trên khuôn mặt như khóe mắt. 

Nhưng trọng lượng FACS thì khác vì bạn không thể nhìn vào một bức tranh và nói, "Miệng há ra 0.9 so với 0.5." Để giải quyết vấn đề này, chúng tôi đang sử dụng dữ liệu tổng hợp để trực tiếp tạo ra các trọng số FACS bao gồm các mô hình 3D được hiển thị với các tư thế FACS từ các góc độ và điều kiện ánh sáng khác nhau.

Thật không may, vì mô hình cần khái quát hóa khuôn mặt thật nên chúng tôi không thể chỉ đào tạo trên dữ liệu tổng hợp. Vì vậy, chúng tôi đào tạo trước mô hình về nhiệm vụ dự đoán mốc bằng cách sử dụng kết hợp dữ liệu thực và tổng hợp, cho phép mô hình tìm hiểu nhiệm vụ dự đoán FACS bằng cách sử dụng dữ liệu tổng hợp thuần túy.

Chúng tôi muốn tính năng theo dõi khuôn mặt hoạt động với tất cả mọi người nhưng một số thiết bị mạnh hơn những thiết bị khác. Điều này có nghĩa là chúng tôi cần xây dựng một hệ thống có khả năng tự thích ứng linh hoạt với sức mạnh xử lý của bất kỳ thiết bị nào. Chúng tôi đã thực hiện điều này bằng cách chia mô hình của mình thành giai đoạn dự đoán FACS gần đúng nhanh được gọi là BaseNet và giai đoạn sàng lọc FACS chính xác hơn được gọi là HiFiNet. Trong thời gian chạy, hệ thống đo lường hiệu suất của nó và trong điều kiện tối ưu, chúng tôi chạy cả hai giai đoạn mô hình. Nhưng nếu phát hiện thấy tình trạng chậm lại (ví dụ: do thiết bị cấp thấp hơn), hệ thống chỉ chạy giai đoạn đầu tiên.

Một số điều quan trọng mà bạn đã học được khi thực hiện công việc kỹ thuật này là gì?

Một là việc làm cho một tính năng hoạt động chỉ là một phần nhỏ trong những gì thực sự cần để phát hành một thứ gì đó thành công. Rất nhiều công việc nằm trong quy trình kỹ thuật và thử nghiệm đơn vị. Chúng ta cần đảm bảo rằng chúng ta có những cách tốt để xác định xem chúng ta có nguồn dữ liệu tốt hay không. Và chúng ta cần tự hỏi: "Này, mô hình mới này có thực sự tốt hơn mô hình cũ không?"

Trước khi chúng tôi bắt đầu kỹ thuật cốt lõi, tất cả các quy trình chúng tôi áp dụng để theo dõi thử nghiệm, đảm bảo tập dữ liệu của chúng tôi thể hiện sự đa dạng của người dùng, đánh giá kết quả cũng như triển khai và nhận phản hồi về những kết quả mới đó sẽ giúp mô hình trở nên đầy đủ. Nhưng đó là một phần của quá trình không được nói đến nhiều, mặc dù nó rất quan trọng. 

Nhóm của bạn phù hợp nhất với giá trị Roblox nào?

Hiểu được giai đoạn của một dự án là điều quan trọng, vì vậy trong quá trình đổi mới, việc có tầm nhìn dài hạn đóng vai trò rất quan trọng, đặc biệt là trong nghiên cứu khi bạn đang cố gắng giải quyết các vấn đề quan trọng. Nhưng tôn trọng cộng đồng cũng rất quan trọng khi bạn xác định những vấn đề đáng để đổi mới vì chúng tôi muốn giải quyết những vấn đề có giá trị cao nhất cho cộng đồng rộng lớn hơn của mình. Ví dụ: chúng tôi đặc biệt chọn nghiên cứu “theo dõi khuôn mặt cho tất cả” thay vì chỉ “theo dõi khuôn mặt”. Khi bạn đạt đến mốc 90% trong việc xây dựng một thứ gì đó, việc chuyển một nguyên mẫu thành một tính năng chức năng sẽ phụ thuộc vào việc thực thi và thích ứng với giai đoạn của dự án.

Điều gì khiến bạn phấn khích nhất về nơi Roblox và nhóm của bạn đang hướng tới?

Tôi luôn hướng tới việc tạo ra các công cụ giúp mọi người sáng tạo. Tạo ra thứ gì đó thật đặc biệt bởi vì cuối cùng bạn sẽ có được thứ gì đó chỉ thuộc về mình. Tôi đã làm việc trong lĩnh vực hiệu ứng hình ảnh và trên nhiều công cụ chỉnh sửa ảnh khác nhau, sử dụng những hiểu biết sâu sắc về toán học, khoa học, nghiên cứu và kỹ thuật để trao quyền cho mọi người làm những điều thực sự thú vị. Bây giờ, tại Roblox, tôi có thể nâng điều đó lên một tầm cao mới. Roblox là một nền tảng sáng tạo, không chỉ là một công cụ. Và quy mô mà chúng tôi đạt được để xây dựng các công cụ hỗ trợ khả năng sáng tạo lớn hơn nhiều so với bất kỳ công cụ nào tôi từng làm trước đây, điều này cực kỳ thú vị.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img