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


Bu yazıda, hem bu zorlukları ele alan hem de bize bir dizi gelecekteki fırsat sunan, videodan yüz animasyonu kontrollerini regresyon için bir derin öğrenme çerçevesini açıklayacağız. Bu blog yazısında açıklanan çerçeve, SIGGRAPH 2021'de bir konuşma olarak da sunuldu.
Yüz Animasyonu
3D yüz rigini kontrol etmek ve canlandırmak için çeşitli seçenekler vardır. Bizim kullandığımız, 3D yüz ağını deforme etmek için (yüz kaslarının konumuna dayalı) bir dizi kontrol tanımlayan Yüz Hareket Kodlama Sistemi veya FACS olarak adlandırılan sistemdir. 40 yılı aşkın bir geçmişe sahip olmasına rağmen, FACS kontrolleri sezgisel ve rigler arasında kolayca aktarılabilir olması nedeniyle FACS hala fiili standarttır. Aşağıda, FACS riginin kullanıldığı bir örnek görülebilir.

Yöntem
Buradaki fikir, derin öğrenme tabanlı yöntemimizin bir videoyu girdi olarak alması ve her kare için bir dizi FACS çıktısı vermesidir. 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ın kullandığı birçok cihazda gerçek zamanlı yüz algılamayı destekleyecek kadar hızlı değildir. Bu sorunu çözmek için algoritmayı özel kullanım durumumuza göre ayarladık; böylece bir yüz algılandığında, MTCNN uygulamamız sonraki karelerde yalnızca son O-Net aşamasını çalıştırır ve bu da ortalama 10 kat hız artışı sağlar. Ayrıca, sonraki regresyon aşamasından önce yüz sınırlayıcı kutuyu hizalamak için MTCNN tarafından tahmin edilen yüz işaret noktalarını (gözlerin, burnun ve ağız köşelerinin konumu) kullanıyoruz. Bu hizalama, giriş görüntülerinin sıkı bir şekilde kırpılmasını sağlayarak FACS regresyon ağının hesaplama yükünü azaltır.

FACS Regresyonu
FACS regresyon mimarimiz, özellik çıkarıcı olarak paylaşılan bir omurga (kodlayıcı olarak bilinir) kullanarak referans noktaları ve FACS ağırlıklarını birlikte eğiten çok görevli bir yapı kullanır.
Bu yapı, sentetik animasyon dizilerinden öğrenilen FACS ağırlıklarını, yüz ifadesinin inceliklerini yakalayan gerçek görüntülerle zenginleştirmemizi sağlar. Landmark regresörü ile birlikte eğitilen FACS regresyon alt ağı, nedensel konvolüsyonlar kullanır; bu konvolüsyonlar, kodlayıcıda bulunan ve yalnızca uzamsal özellikler üzerinde çalışan konvolüsyonların aksine, zaman içindeki özellikler üzerinde çalışır. Bu, modelin yüz animasyonlarının zamansal yönlerini öğrenmesini sağlar ve titreme gibi tutarsızlıklara karşı daha az duyarlı olmasını sağlar.

Eğitim
Başlangıçta, hem gerçek hem de sentetik görüntüler kullanarak modeli yalnızca işaret noktası regresyonu için eğitiyoruz. Belirli sayıda adımdan sonra, zamansal FACS regresyon alt ağı için ağırlıkları öğrenmek üzere sentetik diziler eklemeye başlıyoruz. Sentetik animasyon dizileri, sanatçılar ve mühendislerden oluşan disiplinlerarası ekibimiz tarafından oluşturuldu. Sanatçımız tarafından tüm farklı kimlikler (yüz ağları) için kullanılan normalize bir rig kuruldu ve bu rig, FACS ağırlıklarını içeren animasyon dosyaları kullanılarak otomatik olarak çalıştırıldı ve render edildi. Bu animasyon dosyaları, yüz jimnastiği video dizileri üzerinde çalışan klasik bilgisayar görme algoritmaları kullanılarak oluşturuldu ve jimnastik videolarında eksik olan aşırı yüz ifadeleri için elle animasyonlu dizilerle desteklendi.
Kayıplar
Derin öğrenme ağımızı eğitmek için, birkaç farklı kayıp terimini doğrusal olarak birleştirerek işaret noktalarını ve FACS ağırlıklarını regresyonlu hale getirdik:
- Konumsal Kayıplar. Landmarklar için, regresyonlu konumların RMSE'si (Llmks ) ve FACS ağırlıkları için MSE (Lfacs ).
- Zamansal Kayıplar. FACS ağırlıkları için, sentetik animasyon dizileri üzerinde zamansal kayıpları kullanarak titremeyi azaltıyoruz. [Cudeiro et al. 2019]'dan esinlenen bir hız kaybı (Lv ), hedef ve tahmin edilen hızlar arasındaki MSE'dir. Bu, dinamik ifadelerin genel akıcılığını teşvik eder. Ayrıca, FACS ağırlık titremesini azaltmak için ivme üzerine bir düzenleme terimi (Lacc ) eklenir (yanıt verebilirliği korumak için ağırlığı düşük tutulur).
- Tutarlılık Kaybı. [Honari et al. 2018]'e benzer şekilde, denetimsiz bir tutarlılık kaybında (Lc ) açıklama içermeyen gerçek görüntüler kullanıyoruz. Bu, farklı görüntü dönüşümleri altında işaret noktası tahminlerinin eşdeğer olmasını teşvik ederek, eğitim görüntülerinin bir alt kümesi için işaret noktası etiketlerine gerek kalmadan kareler arasındaki işaret noktası konum tutarlılığını iyileştirir.
Performans
Doğruluğu düşürmeden veya titremeyi artırmadan kodlayıcının performansını iyileştirmek için, özellik haritası boyutunu azaltmak amacıyla seçici olarak dolgusuz konvolüsyonlar kullandık. Bu, adımlı konvolüsyonlara kıyasla özellik haritası boyutları üzerinde bize daha fazla kontrol sağladı. Artığı korumak için, özellik haritasını dolgusuz konvolüsyonun çıktısına eklemeden önce dilimliyoruz. Ek olarak, AVX ve Neon FP16 gibi vektör komut setleriyle verimli bellek kullanımı için özellik haritalarının derinliğini 8'in katları olarak ayarladık ve bu da 1,5 kat performans artışı sağladı.
Nihai modelimiz 1,1 milyon parametreye sahiptir ve yürütülmesi için 28,1 milyon çarpma-toplama işlemi gerektirir. Referans olarak, mimarimizin dayandığı standart Mobilenet V2'nin yürütülmesi için 300 milyon çarpma-toplama işlemi gereklidir. Cihaz üzerinde model çıkarımında NCNN çerçevesini kullanıyoruz ve bir video karesi için tek iş parçacıklı yürütme süresi (yüz algılama dahil) aşağıdaki tabloda listelenmiştir. 16 ms'lik bir yürütme süresinin saniyede 60 kare (FPS) işlemeyi destekleyeceğini lütfen unutmayın.

Sırada Ne Var
Sentetik veri boru hattımız, eğitilmiş modelin ifade gücünü ve sağlamlığını yinelemeli olarak iyileştirmemizi sağladı. Kaçırılan ifadelere karşı tepki hızını artırmak için sentetik diziler ekledik ve ayrıca çeşitli yüz kimlikleri arasında eğitimi dengeledik. Mimarimizin ve kayıplarımızın zamansal formülasyonu, özenle optimize edilmiş omurga ve sentetik verilerden elde edilen hatasız temel gerçekler sayesinde, minimum hesaplama ile yüksek kaliteli animasyon elde ediyoruz. FACS ağırlıkları alt ağında gerçekleştirilen zamansal filtreleme, titremeyi artırmadan omurgadaki katmanların sayısını ve boyutunu azaltmamızı sağlıyor. Denetimsiz tutarlılık kaybı, geniş bir gerçek veri kümesiyle eğitim yapmamızı sağlayarak modelimizin genelleştirilebilirliğini ve sağlamlığını artırıyor. Daha da ifade gücü yüksek, titreme içermeyen ve sağlam sonuçlar elde etmek için modellerimizi daha da rafine etmeye ve iyileştirmeye devam ediyoruz.
Gerçek zamanlı yüz izleme ve makine öğreniminin ön saflarında benzer zorluklar üzerinde çalışmakla ilgileniyorsanız, ekibimizdeki açık pozisyonlarımıza göz atın.


