Este repositório é a implementação oficial das expressões faciais 3D do CVPR 2024 por meio da síntese de análise por neural.
O Smirk reconstrói os rostos 3D de imagens monoculares com geometria facial que se recuperam fielmente as expressões extremamente, assimétricas e sutis.
Você precisa ter uma versão de trabalho de Pytorch e Pytorch3D instalada. Fornecemos um arquivo requirements.txt
que pode ser usado para instalar as dependências necessárias para uma configuração Python 3.9 com CUDA 11.7:
CONDA CREATE -N SMIRK Python = 3,9 PIP Install -R requisitos.txt# Instale o pytorch3d nowPip Install ---no-index ---no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/py39_cu117_pyt201/download.html/wheels/py39_cu117_pyt201/download.html
Então, para baixar os modelos necessários, execute:
Bash Quick_install.sh
A instalação acima inclui baixar o modelo de chama. Isso requer registro. Se você não tiver uma conta, pode se registrar em https://flame.is.tue.mpg.de/
Este comando também baixará o modelo pré -traido Smirk, que também pode ser encontrado no Google Drive.
Nós fornecemos duas demos. Um que pode ser usado para testar o modelo em uma única imagem,
Python Demo.Py -Input_Path Amosples/test_image2.png -out_path Results/--CheckPoT PRENTRADEN_MODELS/SMIRK_EM1.pt --crop
e um que pode ser usado para testar o modelo em um vídeo,
Python Demo_video.py - -input_path Amostras/dafoe.mp4 -out_path Results/--CheckPoint Prepredido_models/smirk_em1.pt --crop -render_orig
O sorriso foi treinado em uma combinação dos seguintes conjuntos de dados: LRS3, Mead, Celeba e FFHQ.
§§Download O conjunto de dados LRS3 daqui. Estamos cientes de que atualmente esse conjunto de dados foi removido do site. Pode ser substituído por qualquer outro conjunto de dados semelhante, por exemplo, LRS2.
Faça o download do conjunto de dados mead daqui.
Faça o download do conjunto de dados Celeba daqui. Você pode baixar diretamente as imagens alinhadas img_align_celeba.zip
.
Faça o download do conjunto de dados FFHQ256 daqui.
Depois de baixar os conjuntos de dados, precisamos extrair os pontos de referência usando MediaPipe e Fan. Fornecemos os scripts para pré -processamento em datasets/preprocess_scripts
. Exemplo de uso:
DataSets Python/Preprocess_scripts/APPLIC_MEDIAPIPE_TO_DATASET.PY - -input_dir PATH_TO_FFHQ256/PERAGES -OU -OUTPUT_DIR PATH_TO_FFHQ256/Mediapipe_Landmarks
E para fã:
DataSets Python/preprocess_scripts/APPLIC_FAN_TO_DATASET.PY - -input_dir path_to_ffhq256/imagens -output_dir path_to_ffhq256/fan_landmarks
Observe que, para obter os pontos de referência dos fãs, usamos a implementação em https://github.com/hhj1897/face_alignment.
Em seguida, atualize os arquivos de configuração nas configs
com os caminhos corretos para os conjuntos de dados e seus pontos de referência.
No estágio de pré -treinamento, treinamos todos os 3 codificadores (pose, forma e expressão) usando apenas os marcos extraídos e a saída de mica.
python Train.py Configs/config_pretrain.yaml Train.log_path = "Logs/Pretrain"
Após o pré -treinamento, no estágio central do sorriso, congelamos a forma e postamos codificadores e treinamos o codificador de expressão com a estrutura completa do SMIRK (caminho de reconstrução e caminho do ciclo).
python Train.py Configs/config_train.yaml currume = logs/pretrain/FULT_STAGE_PRESTRADE_ENCODER.pt Train.loss_weights.emotion_loss = 1.0
Se você achar esse trabalho útil, considere citar:
@Inproecedings {Smirk: CVPR: 2024, Title = {Expressões faciais 3D através da análise por neural-síntese}, Autor = {Retsinas, George e Filntisis, Panagiotis P. e Danecek, Radek e Abrevaya, Victoria F. e Roussos , Anastasios e Bolkart, Timo e Maragos, Petros}, Booktitle = {Conferência sobre Visão Computacional e Reconhecimento de Padrões (CVPR)}, ano = {2024}}
Reconhecemos os seguintes repositórios e documentos que foram usados neste trabalho:
MICA
Emoca
Autolink