Docker 环境检查

执行docker info 查看环境种是否有安装docker,否则首先安装好docker 运行环境。在线环境安装执行执行两条指令即可

sudo apt install docker
sudo apt-get install docker-ce
sudo apt-get install docker-compose

sudo systemctl restart docker

GPU环境检查

没有GPU环境忽略该步骤,但后面的所有过程跑起来可能就不会那么流畅。

nvidia-smi --query-gpu=name,memory.total,memory.free --format=csv,noheader

NVIDIA Container Toolkit 安装

为确保能用上nvidia的gpu,需要安装改toolkit。详细参见
【安装NVIDIA Container Toolkit】

自定义创建容器镜像

下载Dockerfile文件及地址:

FROM python:3.8.16-bullseye
ARG DEBIAN_FRONTEND=noninteractive

RUN echo > /etc/apt/sources.list
RUN echo "deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib"> /etc/apt/sources.list
RUN echo "deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib">> /etc/apt/sources.list
RUN echo "deb https://mirrors.aliyun.com/debian-security/ bullseye-security main">> /etc/apt/sources.list
RUN echo "deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main">> /etc/apt/sources.list
RUN echo "deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib">> /etc/apt/sources.list
RUN echo "deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib">> /etc/apt/sources.list
RUN echo "deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib">> /etc/apt/sources.list
RUN echo "deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib">> /etc/apt/sources.list

RUN apt-get update

RUN apt-get install -y --no-install-recommends \
    software-properties-common \
    wget \
    git \
    build-essential \
    libgl1 \
    libssl-dev \
    libffi-dev \
    libxml2-dev \
    libxslt1-dev \
    zlib1g-dev \
    libjpeg-dev \
    libpng-dev \
    unzip \
    ffmpeg

WORKDIR /app

COPY SadTalker /app/SadTalker/
WORKDIR /app/SadTalker
RUN pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
RUN pip config set install.trusted-host mirrors.aliyun.com
RUN pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
RUN pip install dlib-bin
RUN pip install --verbose --use-pep517 -r requirements.txt

ENTRYPOINT ["python3", "inference.py"]

注意:
1、网上很多教程都会让安装conda,主要是因为安装的目标并不是在容器中,这里是容器化部署,环境单一,并不存在多个虚拟环境的情况,所以直接pip 安装即可。
2、网络原因,请务必做好镜像源的配置。 这里包括apt-get 的source 。和pip的国内安装源,大部分错误都源于此处。
3、--verbose --use-pep517 我的环境build时出错,根据错误提示添加这两参数解决问题。为了方便纠错,把–verbose 加上方便显示更多的提示信息
4、默认镜像源为清华源的时候,会有一个报错,此处改为阿里源解决问题。

生存image

进入到Dockerfile所在目录,执行:

docker build -t qingcloudtech/sadtalker:v1.0 .

当然如果不想自己build 的也可以直接运行启动命名:但需要把镜像名称改为:
registry.cn-hangzhou.aliyuncs.com/qingcloudtech/sadtalker:v1.0

启动命令

docker run -it --gpus all \      
        -v ./checkpoints:/app/SadTalker/checkpoints \      
        -v ./gfpgan/weights:/app/SadTalker/gfpgan/weights \      
        -v ./results:/app/SadTalker/results \      
        -v ./data:/app/SadTalker/sample  \     
        qingcloudtech/sadtalker:v1.0  \    
        --driven_audio /app/SadTalker/examples/driven_audio/chinese_news.wav  \     
        --source_image /app/SadTalker/examples/source_image/art_0.png \      
        --expression_scale 1.0 \      
        --result_dir /app/SadTalker/results \

备注:
/app/SadTalker/checkpoints 容器内该目录不能改变
/app/SadTalker/gfpgan/weights 容器内该地址不能改变
checkpoinits 和weights 文件都放在宿主机上,方便更新和下载。
运行结果文件放在挂在到本地方便读取结果文件的容器路径需要与--result_dir 一致。
需要操作的音频文件和image样例文件也挂在到宿主机上。

高级设置

inference.py 文件中高级配置选项说明

姓名

配置

默认

说明

增强模式

–enhancer

None

gfpgan或RestoreFormer

确保已经安装:

pip install gfpgan

背景增强器

–background_enhancer

None

realesrgan:增强完整视频。

确保已经安装:

pip install realesrgan

静止模式

–still

false

使用与原始图像相同的姿势参数,减少头部运动。

表现模式

–expression_scale

1.0

值越大,表情运动越强。

保存路径

–result_dir

./results

该文件将保存在较新的位置。

预处理

–preprocess

crop

crop: 运行并在裁剪后的输入图像中生成结果

resize: 图像将调整为特定分辨率。

full :运行完整图像动画,

使用–still可以获得更好的效果。

参考模式

(眼睛)

–ref_eyeblink

None

视频路径,我们借用此参考视频中的眨眼来提供更自然的眉毛运动。

参考模式

(姿势)

–ref_pose

None

视频路径,我们从头部参考视频中借用姿势。

3D模式

–face3dvis

false

需要额外安装。生成 3D 脸部的更多详细信息可以在此处

找到。

自由观看模式

–input_yaw,

–input_pitch,

–input_roll

None

从单个图像生成新颖的视图或自由视图 4D 头部说话。更多详细信息可以在这里

找到。

从音频和单个图像生成 4D 自由视图

我们使用input_yaw, input_pitch,input_roll来控制头部姿势。例如,–input_yaw -20 30 10表示输入头偏航度从-20变为30,然后从30变为10。

docker run -it --gpus all \     
        -v ./checkpoints:/app/SadTalker/checkpoints \      
        -v ./gfpgan/weights:/app/SadTalker/gfpgan/weights \      
        -v ./results:/app/SadTalker/results \      
        -v ./data:/app/SadTalker/sample \      
        qingcloudtech/sadtalker:v1.0 \     
        --driven_audio /app/SadTalker/examples/driven_audio/chinese_news.wav \      
        --source_image /app/SadTalker/examples/source_image/art_0.png \      
        --expression_scale 1.0 \      
        --result_dir /app/SadTalker/results \ 
        --input_yaw -20 30 10