SadTalker 自定义容器化部署配置

Docker 环境检查

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

sudo apt install docker
sudo apt-get install docker-ce
sudo apt-get install docker-composesudo 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文件及地址:

https://gitee.com/qingplus/qingcloud-platform/blob/develop/qingcloud-deploy/standard/AIGC/SadTalker/Dockerfile

FROM python:3.8.16-bullseye
ARG DEBIAN_FRONTEND=noninteractiveRUN 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.listRUN apt-get updateRUN 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 \ffmpegWORKDIR /appCOPY 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.txtENTRYPOINT ["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 文件中高级配置选项说明
姓名配置默认说明
增强模式–enhancerNonegfpgan或RestoreFormer
确保已经安装:
pip install gfpgan
背景增强器–background_enhancerNonerealesrgan:增强完整视频。
确保已经安装:
pip install realesrgan
静止模式–stillfalse使用与原始图像相同的姿势参数,减少头部运动。
表现模式–expression_scale1.0值越大,表情运动越强。
保存路径–result_dir./results该文件将保存在较新的位置。
预处理–preprocesscropcrop: 运行并在裁剪后的输入图像中生成结果
resize: 图像将调整为特定分辨率。
full :运行完整图像动画,
使用–still可以获得更好的效果。
参考模式
(眼睛)–ref_eyeblinkNone视频路径,我们借用此参考视频中的眨眼来提供更自然的眉毛运动。
参考模式
(姿势)–ref_poseNone视频路径,我们从头部参考视频中借用姿势。
3D模式–face3dvisfalse需要额外安装。生成 3D 脸部的更多详细信息可以在此处
找到。
自由观看模式–input_yaw,
–input_pitch,
–input_rollNone从单个图像生成新颖的视图或自由视图 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

【Qinghub Studio 】更适合开发人员的低代码开源开发平台
【QingHub企业级应用统一部署】
【QingHub企业级应用开发管理】
QingHub** 演示】**
https://qingplus.cn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/12939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

langchain源码

itemgetter:返回一个函数,函数取输入dict的某个指定key Runnable 的基本方法有 invoke、 batch、 await、 ainvoke、 abatch 同步转异步 Runnable 还具有的方法:bind、 with_config。 input_schema 属性、output_schema 属性 with_retry方…

Uniapp H5开发常见问题解析

引言 在移动应用开发领域,Uniapp已经成为一个备受瞩目的技术框架,其跨平台能力和高效开发特性使得开发者能够更加便捷地构建出功能丰富、性能优越的应用程序。特别是在H5开发中,Uniapp的应用场景日益广泛,然而,随之而…

Vue2之使用provide和inject实现两个不相干组件之间的通信

Vue2之使用provide和inject实现两个不相干组件之间的通信 文章目录 Vue2之使用provide和inject实现两个不相干组件之间的通信1. 祖先组件中使用provide提供数据2.后代组件A中使用inject注入并使用数据3.后代组件B中使用inject注入并使用数据 在Vue 2中以使用provide和inject来实…

[ciscn 2022 东北赛区]math

1.题目 import gmpy2 from Crypto.Util.number import * from flag import flag assert flag.startswith(b"flag{") assert flag.endswith(b"}") messagebytes_to_long(flag) def keygen(nbit, dbit):if 2*dbit < nbit:while True:a1 getRandomNBitIn…

编辑器目录树的设计,一点也不简单

朋友们好&#xff0c;我是优秀的大鹏 今天花了很长时间思考一个网页文档编辑器&#xff0c;云端目录树要怎么设计 这个看似简单的需求&#xff0c;技术上和产品上的思考却非常复杂 下面以几种编辑器为例&#xff0c;讲一下各种编辑器在技术上和产品的思考 1、以Vscode为代表的本…

Delphi DataSet转JSon (使用SuperObject)

Delphi中将TDataSet转换为JSon字符串。 with ATM.LoadDataSet() dobeginif IsEmpty thenbeginLogObj.WriteLog(未查询到该视图名称下该时间段内的上传数据&#xff0c;视图名称&#xff1a; AViewname 开始时间&#xff1a; AStartdate 结束时间&#xff1a; AEnddate);exit…

【神经网络与深度学习】Transformer原理

transformer ENCODER 输入部分 对拆分后的语句x [batch_size, seq_len]进行以下操作 Embedding 将离散的输入&#xff08;如单词索引或其他类别特征&#xff09;转换为稠密的实数向量&#xff0c;以便可以在神经网络中使用。位置编码 与RNN相比&#xff0c;RNN是一个字一个字…

Django Rest Framework 全局异常处理

在Django Rest Framework&#xff08;DRF&#xff09;中&#xff0c;全局异常处理是一种重要的机制&#xff0c;它可以帮助我们更好地管理API中的异常情况&#xff0c;并返回统一的错误响应。本文将详细介绍两种全局异常处理的方法&#xff1a;使用中间件&#xff08;Middlewar…

机器学习(3)

目录 3-1线性回归 3-2最小二乘解 3-3多元线性回归 3-4广义线性模型 3-5对率回归 3-6对率回归求解 3-7线性判别分析 3-8LDA的多类推广 3-9多分类学习基本思路 3-10类别不平衡 3-1线性回归 线性模型为什么重要&#xff1f; 人类在考虑问题时&#xff0c;通常…

用python写一个自动生成android开机动画的工具

要创建一个自动生成Android开机动画的工具&#xff0c;你需要一些基本的知识&#xff0c;比如Python编程、图像处理和Android开机动画的格式。以下是一个简单的Python脚本示例&#xff0c;它可以生成一个基本的Android开机动画&#xff0c;具体效果可能需要更多的调整和优化。 …

记录glide加载图片,设置圆角

支持所有角的圆角&#xff0c;自动计算合适的半径&#xff0c;不用担心图片比预定值小导致的圆角过大的问题 修改自&#xff1a;https://blog.csdn.net/qq_15059163/article/details/97613790 增加了指定图片尺寸、解决了图片某些情况下圆角过大的问题 public class GlideRou…

先有JVM还是先有垃圾回收器?很多人弄混淆了

是先有垃圾回收器再有JVM呢&#xff0c;还是先有JVM再有垃圾回收器呢&#xff1f;或者是先有垃圾回收再有JVM呢&#xff1f;历史上还真是垃圾回收更早面世&#xff0c;垃圾回收最早起源于1960年诞生的LISP语言&#xff0c;Java只是支持垃圾回收的其中一种。下面我们就来刨析刨析…

外卖系统的JWT实现登录

1、什么是JWT jwt可以生成一个加密的token&#xff0c;作为用户登录的令牌&#xff0c;当用户登陆成功之后&#xff0c;发放给客户端。请求需要登录的资源或者接口的时候&#xff0c;将token携带&#xff0c;后端验证token是否合法。jwt有三部分组成&#xff1a; A&#xff1a;…

【特大喜讯】国内前33位持有PMI-RMP风险管理专业认证的学员分享~!

【学员背景】 沈阳某信息科技有限公司&#xff0c;从事企业采购供应链数字化转型方向&#xff1b; 为企业提供有效的降本增效解决方案。 【学员顺利拿证后期访问】 问&#xff1a;学员您好&#xff0c;首先恭喜您顺利拿到RMP证书&#xff0c;请问您在此次备考过程中&#xf…

抖店商品详情API接口(产品参数|详情图)

抖店商品详情API接口(产品参数|详情图) 参数仅供参考&#xff1a; {"code": 0,"msg": "调用成功","time": "1715763239","data": {"properties": [{"format": [{"message": [{&q…

C语言简要(一)

总得让她开心吧 helloworld #include <stdio.h>int main() {printf("hello world!\n");return 0; } 程序框架 #include <stdio.h> int main {return 0; }输出 printf("hello world!\n"); "里面的内容叫做“字符串”&#xff0c;prin…

BUUCTF靶场[MISC]wireshark、被嗅探的流量、神秘龙卷风、另一个世界

[misc]wireshark 考点&#xff1a;流量、追踪流 工具&#xff1a;wireshark 先看题目&#xff0c;管理员密码 将下载的文件用wireshark打开&#xff0c;查找flag 点击追踪tcp流&#xff0c;开始挨个查看flag [misc]被嗅探的流量 考点&#xff1a;流量、追踪流 工具&#xf…

武汉星起航:亚马逊构建综合性商业生态,卖家买家共享全球化红利

在当今全球化日益加速的时代&#xff0c;亚马逊不仅以其卓越的电商平台服务全球消费者&#xff0c;更通过一系列前沿服务打造了一个综合性的商业生态系统。在这个生态系统中&#xff0c;卖家能够轻松拓展全球业务&#xff0c;买家则享受到了前所未有的购物体验。亚马逊以其独特…

FreeRTOS【6】线程优先级

1.开发背景 基于上一篇指引&#xff0c;已经了解了线程的阻塞&#xff0c;这个篇章主要介绍线程优先级的影响 2.开发需求 设计实验验证高优先级会抢占低优先级线程 CPU 3.开发环境 window10 MDK STM32F429 FreeRTOS10.3.1 4.实现步骤 1&#xff09;创建测试线程&#xff…

测试之路 - 精准而优雅

引子 这几年业内一直在做精准测试&#xff0c;大都使用工具 diff 代码改动、分析代码覆盖率这些平台集成的能力。 业务测试中&#xff0c;我们在技术设计和代码实现的基础上也做了一些精减和精准的测试实践&#xff0c;通过深入测试有针对的设计 case&#xff0c;发现隐藏问题…