Zephyrnet Logosu

Avatarlar için Gerçek Zamanlı Yüz Animasyonu

Tarih:

Yüz ifadesi, Roblox'un metaverse'yi doğal ve inandırıcı avatar etkileşimleri yoluyla insanların günlük hayatlarının bir parçası haline getirme yolunda kritik bir adımdır. Bununla birlikte, sanal 3D karakter yüzlerini gerçek zamanlı olarak canlandırmak çok büyük bir teknik zorluktur. Çok sayıda araştırma atılımına rağmen, gerçek zamanlı yüz animasyon uygulamalarının sınırlı ticari örnekleri vardır. Bu, geliştiricilerimizin baş döndürücü bir dizi kullanıcı cihazını, gerçek dünya koşullarını ve çılgınca yaratıcı kullanım örneklerini desteklediğimiz Roblox'ta özellikle zordur.

Bu gönderide, hem bu zorlukları ele alan hem de bizi bir dizi gelecekteki fırsata açan videodan yüz animasyonu kontrollerini geri almak için bir derin öğrenme çerçevesi açıklayacağız. Bu blog gönderisinde açıklanan çerçeve aynı zamanda bir konuşmak at SIGGRAPH 2021.

Yüz Animasyonu

Bir 3B yüz teçhizatını kontrol etmek ve canlandırmak için çeşitli seçenekler vardır. Kullandığımız Yüz Hareketi Kodlama Sistemi veya FACS3D yüz ağını deforme etmek için bir dizi kontrolü (yüz kası yerleşimine dayalı olarak) tanımlayan . 40 yaşın üzerinde olmasına rağmen, FACS kontrollerinin sezgisel olması ve donanımlar arasında kolayca aktarılabilmesi nedeniyle FACS hala fiili standarttır. Uygulanmakta olan bir FACS teçhizatının bir örneği aşağıda görülebilir.

Yöntem

Buradaki fikir, derin öğrenmeye dayalı yöntemimizin bir videoyu girdi olarak alması ve her kare için bir dizi FACS çıktısı almasıdır. Bunu başarmak için iki aşamalı bir mimari kullanıyoruz: yüz algılama ve FACS regresyonu.

Yüz Algılama

En iyi performansı elde etmek için, nispeten iyi bilinen MTCNN yüz algılama algoritmasının hızlı bir varyantını uyguluyoruz. Orijinal MTCNN algoritması oldukça doğru ve hızlıdır ancak kullanıcılarımız tarafından kullanılan birçok cihazda gerçek zamanlı yüz algılamayı destekleyecek kadar hızlı değildir. Bu nedenle, bunu çözmek için, bir yüz algılandığında MTCNN uygulamamızın yalnızca son O-Net aşamasını ardışık karelerde çalıştırdığı özel kullanım durumumuz için algoritmada ince ayar yaptık ve ortalama 10 kat hızlanma sağladık. Ayrıca, sonraki regresyon aşamasından önce yüz sınırlama kutusunu hizalamak için MTCNN tarafından tahmin edilen yüz işaretlerini (gözlerin, burnun ve ağız köşelerinin konumu) kullanırız. Bu hizalama, giriş görüntülerinin sıkı bir şekilde kırpılmasına izin vererek FACS regresyon ağının hesaplanmasını azaltır.

FACS Regresyonu 

FACS regresyon mimarimiz, özellik çıkarıcı olarak paylaşılan bir omurga (kodlayıcı olarak bilinir) kullanarak yer işaretlerini ve FACS ağırlıklarını birlikte eğiten çok görevli bir kurulum kullanır.

Bu kurulum, sentetik animasyon dizilerinden öğrenilen FACS ağırlıklarını, yüz ifadesinin inceliklerini yakalayan gerçek görüntülerle artırmamıza olanak tanır. Yer işaretleri regresörünün kullandığı ile birlikte eğitilen FACS regresyon alt ağı nedensel kıvrımlar; bu kıvrımlar, yalnızca kodlayıcıda bulunabilen uzamsal özellikler üzerinde çalışan kıvrımların aksine, zaman içinde özellikler üzerinde çalışır. Bu, modelin yüz animasyonlarının geçici yönlerini öğrenmesini sağlar ve onu titreme gibi tutarsızlıklara karşı daha az duyarlı hale getirir.

Eğitim

Başlangıçta modeli hem gerçek hem de sentetik görüntüler kullanarak yalnızca dönüm noktası regresyonu için eğitiyoruz. Belirli sayıda adımdan sonra, geçici FACS regresyon alt ağının ağırlıklarını öğrenmek için sentetik diziler eklemeye başlarız. Sentetik animasyon dizileri, disiplinler arası sanatçı ve mühendis ekibimiz tarafından oluşturuldu. Tüm farklı kimlikler (yüz ağları) için kullanılan normalleştirilmiş bir teçhizat, FACS ağırlıklarını içeren animasyon dosyaları kullanılarak otomatik olarak çalıştırılan ve oluşturulan sanatçımız tarafından kuruldu. Bu animasyon dosyaları, yüz jimnastiği video dizilerinde çalışan klasik bilgisayarlı görme algoritmaları kullanılarak oluşturuldu ve egzersiz videolarında eksik olan aşırı yüz ifadeleri için elle canlandırılan dizilerle desteklendi. 

Zararlar

Derin öğrenme ağımızı eğitmek için, önemli noktaları ve FACS ağırlıklarını geri almak için birkaç farklı kayıp terimini doğrusal olarak birleştiriyoruz: 

  • Konumsal Kayıplar. Yer işaretleri için, gerileyen pozisyonların RMSE'si (Llmks ) ve FACS ağırlıkları için MSE (Lfacs ). 
  • Geçici Kayıplar. FACS ağırlıkları için, sentetik animasyon dizileri üzerindeki zamansal kayıpları kullanarak titreşimi azaltıyoruz. Bir hız kaybı (Lv ) esinlenerek [Cudeiro ve ark. 2019] hedef ve tahmin edilen hızlar arasındaki MSE'dir. Dinamik ifadelerin genel düzgünlüğünü teşvik eder. Ek olarak, ivme üzerinde bir düzenlileştirme terimi (Lacc ) FACS ağırlıklarının titremesini azaltmak için eklenir (yanıt verme yeteneğini korumak için ağırlığı düşük tutulur). 
  • Tutarlılık Kaybı. Denetimsiz bir tutarlılık kaybında (Lc ), benzer [Honari ve ark. 2018]. Bu, eğitim görüntülerinin bir alt kümesi için dönüm noktası etiketleri gerektirmeden çerçeveler arasındaki dönüm noktası konumu tutarlılığını geliştirerek, farklı görüntü dönüşümleri altında yer işareti tahminlerinin eşdeğer olmasını teşvik eder.

Performans

Doğruluğu azaltmadan veya titreşimi artırmadan kodlayıcının performansını iyileştirmek için, özellik eşleme boyutunu azaltmak için seçici olarak dolgusuz evrişimler kullandık. Bu bize özellik haritası boyutları üzerinde adım adım kıvrımlardan daha fazla kontrol sağladı. Kalıntıyı korumak için, özellik haritasını dolgusuz bir evrişimin çıktısına eklemeden önce dilimleriz. Ek olarak, AVX ve Neon FP8 gibi vektör komut setleriyle verimli bellek kullanımı için özellik haritalarının derinliğini 16'in katlarına ayarladık ve 1.5 kat performans artışı sağladık.

Nihai modelimiz 1.1 milyon parametreye sahiptir ve yürütülmesi için 28.1 milyon çarpma-birikimi gerektirir. Referans için, vanilya Mobil ağ V2 (mimarimizin dayandığı) yürütmek için 300 milyon çoklu birikim gerektirir. kullanıyoruz NCNN bir video karesi için cihaz üstü model çıkarımı için çerçeve ve tek iş parçacıklı yürütme süresi (yüz algılama dahil) aşağıdaki tabloda listelenmiştir. Lütfen 16 ms'lik bir yürütme süresinin saniyede 60 karenin (FPS) işlenmesini destekleyeceğini unutmayın. 

Sıradaki ne

Sentetik veri hattımız, eğitilmiş modelin ifade edilebilirliğini ve sağlamlığını yinelemeli olarak iyileştirmemize izin verdi. Kaçırılan ifadelere yanıt vermeyi iyileştirmek için sentetik diziler ekledik ve ayrıca çeşitli yüz kimlikleri arasında dengeli bir eğitim ekledik. Mimarimizin ve kayıpların zamansal formülasyonu, dikkatlice optimize edilmiş bir omurga ve sentetik verilerden hatasız temel gerçeği nedeniyle minimum hesaplama ile yüksek kaliteli animasyon elde ediyoruz. FACS ağırlıkları alt ağında gerçekleştirilen zamansal filtreleme, titreşimi artırmadan omurgadaki katmanların sayısını ve boyutunu azaltmamızı sağlar. Denetimsiz tutarlılık kaybı, modelimizin genelleştirilmesini ve sağlamlığını geliştirerek büyük bir gerçek veri seti ile eğitim yapmamızı sağlar. Daha da etkileyici, titreşimsiz ve sağlam sonuçlar elde etmek için modellerimizi daha fazla iyileştirme ve iyileştirme üzerinde çalışmaya devam ediyoruz. 

Gerçek zamanlı yüz izleme ve makine öğreniminin ön saflarında benzer zorluklar üzerinde çalışmakla ilgileniyorsanız, lütfen bazılarımıza göz atın. Açık pozisyonlar ekibimizle birlikte.

Sonrası Avatarlar için Gerçek Zamanlı Yüz Animasyonu İlk çıktı Roblox Blogu.

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?