제퍼넷 로고

아바타를 위한 실시간 얼굴 애니메이션

시간

표정은 자연스럽고 믿을 수 있는 아바타 상호 작용을 통해 메타버스를 사람들의 일상 생활의 일부로 만들기 위한 Roblox의 행진에서 중요한 단계입니다. 그러나 가상 3D 캐릭터의 얼굴을 실시간으로 애니메이션하는 것은 엄청난 기술적 과제입니다. 수많은 연구 혁신에도 불구하고 실시간 얼굴 애니메이션 응용 프로그램의 상업적 예는 제한적입니다. 이것은 우리가 어지러울 정도로 다양한 사용자 장치, 실제 환경 및 개발자의 독창적인 사용 사례를 지원하는 Roblox에서 특히 어렵습니다.

이 게시물에서 우리는 비디오에서 얼굴 애니메이션 컨트롤을 회귀하기 위한 딥 러닝 프레임워크에 대해 설명할 것입니다. 이 프레임워크는 이러한 문제를 해결하고 많은 미래 기회를 열어줍니다. 이 블로그 게시물에 설명된 프레임워크는 이야기 at 시 그래프 2021.

얼굴 애니메이션

3D 페이스 리그를 제어하고 애니메이트하는 다양한 옵션이 있습니다. 우리가 사용하는 것은 페이셜 액션 코딩 시스템(Facial Action Coding System) 또는 FACS, 3D 얼굴 메시를 변형하기 위한 컨트롤 세트(얼굴 근육 배치 기반)를 정의합니다. 40년이 넘었지만 FACS 컨트롤이 직관적이고 리그 간에 쉽게 이전할 수 있기 때문에 FACS는 여전히 사실상의 표준입니다. FACS 장비가 실행되는 예는 아래에서 볼 수 있습니다.

방법

아이디어는 우리의 딥 러닝 기반 방법이 비디오를 입력으로 취하고 각 프레임에 대한 FACS 세트를 출력하는 것입니다. 이를 달성하기 위해 얼굴 감지 및 FACS 회귀의 두 단계 아키텍처를 사용합니다.

얼굴 인식

최상의 성능을 달성하기 위해 비교적 잘 알려진 MTCNN 얼굴 감지 알고리즘의 빠른 변형을 구현합니다. 원래 MTCNN 알고리즘은 매우 정확하고 빠르지만 사용자가 사용하는 많은 장치에서 실시간 얼굴 감지를 지원할 만큼 빠르지 않습니다. 따라서 이 문제를 해결하기 위해 얼굴이 감지되면 MTCNN 구현이 연속 프레임에서 최종 O-Net 단계만 실행하여 평균 10배의 속도 향상을 가져오는 특정 사용 사례에 대한 알고리즘을 조정했습니다. 또한 후속 회귀 단계 이전에 얼굴 경계 상자를 정렬하기 위해 MTCNN에서 예측한 얼굴 랜드마크(눈, 코 및 입 모서리의 위치)를 사용합니다. 이 정렬은 FACS 회귀 네트워크의 계산을 줄여서 입력 이미지의 빡빡한 자르기를 허용합니다.

FACS 회귀 

FACS 회귀 아키텍처는 특징 추출기로 공유 백본(엔코더로 알려짐)을 사용하여 랜드마크와 FACS 가중치를 공동 훈련하는 멀티태스킹 설정을 사용합니다.

이 설정을 통해 합성 애니메이션 시퀀스에서 학습한 FACS 가중치를 표정의 미묘함을 캡처하는 실제 이미지로 보강할 수 있습니다. 회귀자가 사용하는 랜드마크와 함께 훈련된 FACS 회귀 하위 네트워크 인과 관계; 이러한 컨볼루션은 인코더에서 볼 수 있는 공간적 특성에서만 작동하는 컨볼루션과 달리 시간이 지남에 따라 특성에 대해 작동합니다. 이를 통해 모델은 얼굴 애니메이션의 시간적 측면을 학습할 수 있으며 지터와 같은 불일치에 덜 민감합니다.

트레이닝

우리는 처음에 실제 이미지와 합성 이미지를 모두 사용하여 랜드마크 회귀만을 위한 모델을 훈련합니다. 특정 수의 단계 후에 임시 FACS 회귀 하위 네트워크에 대한 가중치를 학습하기 위해 합성 시퀀스를 추가하기 시작합니다. 합성 애니메이션 시퀀스는 아티스트와 엔지니어의 학제 간 팀에 의해 만들어졌습니다. 모든 다른 아이덴티티(페이스 메시)에 사용되는 정규화된 리그는 FACS 가중치가 포함된 애니메이션 파일을 사용하여 자동으로 실행되고 렌더링된 아티스트에 의해 설정되었습니다. 이 애니메이션 파일은 얼굴 미용 비디오 시퀀스에서 실행되는 고전적인 컴퓨터 비전 알고리즘을 사용하여 생성되었으며 미용 비디오에서 누락된 극단적인 얼굴 표정을 위한 손 애니메이션 시퀀스로 보완되었습니다. 

손실

딥 러닝 네트워크를 훈련하기 위해 몇 가지 다른 손실 항을 선형적으로 결합하여 랜드마크와 FACS 가중치를 회귀합니다. 

  • 위치 손실. 랜드마크의 경우 회귀된 위치의 RMSE(L영화 ) 및 FACS 가중치의 경우 MSE(L팩트 ). 
  • 일시적 손실. FACS 가중치의 경우 합성 애니메이션 시퀀스에 대한 시간 손실을 사용하여 지터를 줄입니다. 속도 손실(Lv ) 에서 영감을 받다 [Cudeiroet al. 2019년]는 목표 속도와 예측 속도 사이의 MSE입니다. 역동적인 표현의 전반적인 부드러움을 촉진합니다. 또한 가속도에 대한 정규화 항(LACC ) FACS 가중치 지터를 줄이기 위해 추가되었습니다(응답성을 유지하기 위해 가중치를 낮게 유지). 
  • 일관성 손실. 우리는 감독되지 않은 일관성 손실에서 주석이 없는 실제 이미지를 활용합니다(Lc ), 비슷하다 [Honariet al. 2018년]. 이는 랜드마크 예측이 다양한 이미지 변환에서 등변이 되도록 하여 훈련 이미지의 하위 집합에 대한 랜드마크 레이블을 요구하지 않고 프레임 간의 랜드마크 위치 일관성을 개선합니다.

퍼포먼스

정확도를 낮추거나 지터를 증가시키지 않으면서 인코더의 성능을 향상시키기 위해 우리는 선택적으로 패딩되지 않은 컨볼루션을 사용하여 기능 맵 크기를 줄였습니다. 이를 통해 strided convolution보다 기능 맵 크기를 더 많이 제어할 수 있었습니다. 잔차를 유지하기 위해 패딩되지 않은 컨볼루션의 출력에 추가하기 전에 기능 맵을 슬라이스합니다. 또한 AVX 및 Neon FP8과 같은 벡터 명령어 세트와 함께 효율적인 메모리 사용을 위해 기능 맵의 깊이를 16의 배수로 설정하여 1.5배의 성능 향상을 가져왔습니다.

우리의 최종 모델에는 1.1만 개의 매개변수가 있고 실행하려면 28.1만 개의 곱셈 누적이 필요합니다. 참고로 바닐라 모빌넷 V2 (우리 아키텍처의 기반이 됨) 실행하려면 300억 개의 곱셈 누적이 필요합니다. 우리는 사용 NCNN 온디바이스 모델 추론을 위한 프레임워크 및 비디오 프레임에 대한 단일 스레드 실행 시간(얼굴 감지 포함)은 아래 표에 나열되어 있습니다. 16ms의 실행 시간은 초당 60프레임(FPS) 처리를 지원합니다. 

무엇 향후 계획

합성 데이터 파이프라인을 통해 훈련된 모델의 표현성과 견고성을 반복적으로 개선할 수 있었습니다. 우리는 놓친 표정에 대한 반응성을 향상시키기 위해 합성 시퀀스를 추가했으며 다양한 얼굴 정체성에 대한 균형 잡힌 훈련도 수행했습니다. 아키텍처 및 손실의 시간적 공식화, 신중하게 최적화된 백본 및 합성 데이터의 오류 없는 진실로 인해 최소한의 계산으로 고품질 애니메이션을 달성합니다. FACS 가중치 하위 네트워크에서 수행되는 시간 필터링을 통해 지터를 증가시키지 않으면서 백본의 레이어 수와 크기를 줄일 수 있습니다. 감독되지 않은 일관성 손실을 통해 대규모 실제 데이터 세트로 훈련할 수 있어 모델의 일반화와 견고성이 향상됩니다. 우리는 더욱 표현력이 풍부하고 지터가 없으며 강력한 결과를 얻기 위해 모델을 더욱 개선하고 개선하기 위해 계속 노력하고 있습니다. 

실시간 얼굴 추적 및 머신 러닝의 최전선에서 유사한 과제를 수행하는 데 관심이 있는 경우 다음 중 일부를 확인하십시오. 열린 포지션 우리 팀과 함께.

포스트 아바타를 위한 실시간 얼굴 애니메이션 첫 번째 등장 Roblox 블로그.

spot_img

최신 인텔리전스

spot_img