{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "view-in-github"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QS04K9oO21AW"
},
"source": [
"Check GPU"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "1ESQRDb-yVUG"
},
"outputs": [],
"source": [
"!nvidia-smi --query-gpu=name,memory.total,memory.free --format=csv,noheader"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "y-ctmIvu3Ei8"
},
"source": [
"Installation"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "gXu76wdDgaxo"
},
"outputs": [],
"source": [
"# install pytorch3d, about 15s\n",
"import os\n",
"import sys\n",
"import torch\n",
"need_pytorch3d=False\n",
"try:\n",
" import pytorch3d\n",
"except ModuleNotFoundError:\n",
" need_pytorch3d=True\n",
"if need_pytorch3d:\n",
" if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n",
" # We try to install PyTorch3D via a released wheel.\n",
" pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n",
" version_str=\"\".join([\n",
" f\"py3{sys.version_info.minor}_cu\",\n",
" torch.version.cuda.replace(\".\",\"\"),\n",
" f\"_pyt{pyt_version_str}\"\n",
" ])\n",
" !pip install fvcore iopath\n",
" !pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/{version_str}/download.html\n",
" else:\n",
" # We try to install PyTorch3D from source.\n",
" !pip install 'git+https://github.com/facebookresearch/pytorch3d.git@stable'"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "DuUynxmotG_-"
},
"outputs": [],
"source": [
"# install dependencies, about 5~10 min\n",
"!pip install tensorboard==2.13.0 tensorboardX==2.6.1\n",
"!pip install pyspy==0.1.1\n",
"!pip install protobuf==3.20.3\n",
"!pip install scipy==1.9.1\n",
"!pip install kornia==0.5.0\n",
"!pip install trimesh==3.22.0\n",
"!pip install einops==0.6.1 torchshow==0.5.1\n",
"!pip install imageio==2.31.1 imageio-ffmpeg==0.4.8\n",
"!pip install scikit-learn==1.3.0 scikit-image==0.21.0\n",
"!pip install av==10.0.0 lpips==0.1.4\n",
"!pip install timm==0.9.2 librosa==0.9.2\n",
"!pip install openmim==0.3.9\n",
"!mim install mmcv==2.1.0 # use mim to speed up installation for mmcv\n",
"!pip install transformers==4.33.2\n",
"!pip install pretrainedmodels==0.7.4\n",
"!pip install ninja==1.11.1\n",
"!pip install faiss-cpu==1.7.4\n",
"!pip install praat-parselmouth==0.4.3 moviepy==1.0.3\n",
"!pip install mediapipe==0.10.7\n",
"!pip install --upgrade attr\n",
"!pip install beartype==0.16.4 gateloop_transformer==0.4.0\n",
"!pip install torchode==0.2.0 torchdiffeq==0.2.3\n",
"!pip install hydra-core==1.3.2 pandas==2.1.3\n",
"!pip install pytorch_lightning==2.1.2\n",
"!pip install httpx==0.23.3\n",
"!pip install gradio==4.16.0\n",
"!pip install gdown\n",
"!pip install pyloudnorm webrtcvad pyworld==0.2.1rc0 pypinyin==0.42.0"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "0GLEV0HVu8rj"
},
"outputs": [],
"source": [
"# RESTART kernel to make sure runtime is correct if you meet runtime errors\n",
"# import os\n",
"# os.kill(os.getpid(), 9)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5UfKHKrH6kcq"
},
"source": [
"Clone code and download checkpoints"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "-gfRsd9DwIgl"
},
"outputs": [],
"source": [
"# clone Real3DPortrait repo from github\n",
"!git clone https://github.com/yerfor/Real3DPortrait\n",
"%cd Real3DPortrait"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Yju8dQY7x5OS"
},
"outputs": [],
"source": [
"# download pretrained ckpts & third-party ckpts from google drive, about 1 min\n",
"!pip install --upgrade --no-cache-dir gdown\n",
"%cd deep_3drecon/BFM\n",
"!gdown https://drive.google.com/uc?id=1SPM3IHsyNAaVMwqZZGV6QVaV7I2Hly0v\n",
"!gdown https://drive.google.com/uc?id=1MSldX9UChKEb3AXLVTPzZQcsbGD4VmGF\n",
"!gdown https://drive.google.com/uc?id=180ciTvm16peWrcpl4DOekT9eUQ-lJfMU\n",
"!gdown https://drive.google.com/uc?id=1KX9MyGueFB3M-X0Ss152x_johyTXHTfU\n",
"!gdown https://drive.google.com/uc?id=19-NyZn_I0_mkF-F5GPyFMwQJ_-WecZIL\n",
"!gdown https://drive.google.com/uc?id=11ouQ7Wr2I-JKStp2Fd1afedmWeuifhof\n",
"!gdown https://drive.google.com/uc?id=18ICIvQoKX-7feYWP61RbpppzDuYTptCq\n",
"!gdown https://drive.google.com/uc?id=1VktuY46m0v_n_d4nvOupauJkK4LF6mHE\n",
"%cd ../..\n",
"\n",
"%cd checkpoints\n",
"!gdown https://drive.google.com/uc?id=1gz8A6xestHp__GbZT5qozb43YaybRJhZ\n",
"!gdown https://drive.google.com/uc?id=1gSUIw2AkkKnlLJnNfS2FCqtaVw9tw3QF\n",
"!unzip 240210_real3dportrait_orig.zip\n",
"!unzip pretrained_ckpts.zip\n",
"!ls\n",
"%cd ..\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LHzLro206pnA"
},
"source": [
"Inference sample"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"!python inference/real3d_infer.py -h"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "2aCDwxNivQoS"
},
"outputs": [],
"source": [
"# sample inference, about 3 min\n",
"!python inference/real3d_infer.py \\\n",
"--src_img data/raw/examples/Macron.png \\\n",
"--drv_aud data/raw/examples/Obama_5s.wav \\\n",
"--drv_pose data/raw/examples/May_5s.mp4 \\\n",
"--bg_img data/raw/examples/bg.png \\\n",
"--out_name output.mp4 \\\n",
"--out_mode concat_debug \\\n",
"--low_memory_usage"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "XL0c54l19mBG"
},
"source": [
"Display output video"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "6olmWwZP9Icj"
},
"outputs": [],
"source": [
"# borrow code from makeittalk\n",
"from IPython.display import HTML\n",
"from base64 import b64encode\n",
"import os, sys\n",
"import glob\n",
"\n",
"mp4_name = './output.mp4'\n",
"\n",
"mp4 = open('{}'.format(mp4_name),'rb').read()\n",
"data_url = \"data:video/mp4;base64,\" + b64encode(mp4).decode()\n",
"\n",
"print('Display animation: {}'.format(mp4_name), file=sys.stderr)\n",
"display(HTML(\"\"\"\n",
" \n",
" \"\"\" % data_url))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"WebUI"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\n",
"!python inference/app_real3dportrait.py --share"
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"authorship_tag": "ABX9TyPu++zOlOS4yKF4xn4FHGtZ",
"gpuType": "T4",
"include_colab_link": true,
"private_outputs": true,
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
}