如何本地部署虚VideoReTalking

环境:

Win10专业版

VideoReTalking

问题描述:

如何本地部署虚VideoReTalking

在这里插入图片描述

解决方案:

VideoReTalking是一个强大的开源AI对嘴型工具,它是我目前使用过的AI对嘴型工具中效果最好的一个!它是由西安电子科技大学、腾讯人工智能实验室和清华大学联合开发的。

1.安装git

next一直往下直到完成

在这里插入图片描述

安装时所有的选项都默认即可

2.安装Anaconda

conda是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。 conda是为 python程序创建的,适用于 Linux,OS X和Windows,也可以打包和分发其他软件。conda分为Anaconda和MiniConda。Anaconda是包含一些常用包的版本,Miniconda则是精简版,一般建议安装Anaconda,本文也以安装Anaconda为例;

anaconda是一个编程语言整合包,有了anaconda你可以更加方便的打库,切换环境,配置环境变量等
在这里插入图片描述next一直往下直到完成(需要一点时间)
在这里插入图片描述

添加环境变量
D:\ProgramData\anaconda3\condabin

安装成功之后,随便打开一个cmd窗口,输入“conda”如果出现的是如下的内容,即表示安装成功,否则就会报错“conda”不是内部或外部命令,也不是可运行的程序
或批处理文件

3.clone主程序到本地
在选定的文件夹空白处,点击鼠标右键,选择“Git Bash Here”,在打开的git命令窗口输入如下的命令:

git clone https://github.com/vinthony/video-retalking.git

主程序下载完成之后,可以关闭该git窗口,这时候在选定的磁盘空间有了一个名为“video-retalking”的文件夹;

4.创建和激活虚拟空间
首先进入到“video-retalking”文件夹中,在文件的路径栏输入“cmd”打开一个命令窗口,先后运行下面两行命令:

conda create -n video_retalking python=3.8

在这里插入图片描述y
在这里插入图片描述

conda activate video_retalking
在这里插入图片描述5.安装ffmpeg
在虚拟环境的命令窗口,输入如下的命令,安装FFmpeg:

conda install ffmpeg
在这里插入图片描述
6.安装torch和cuda
继续运行下面的这行命令,安装特定版本的torch和cuda:

pip install torch1.9.0+cu111 torchvision0.10.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html

在这里插入图片描述
这一步由于需要下载的文件比较大,最大的文件有3.1GB,因此你需要耐心等待它的下载和安装完成,具体的速度取决于你当地的网络情况
在这里插入图片描述
7.安装依赖组件
在torch和cuda安装结束之后,就可以安装VideoReTalking程序的依赖组件了,命令如下:

pip install -r requirements.txt

在这里插入图片描述
pip install torch2.0.0+cu118 torchvision0.15.1+cu118 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118

pip install -r requirements.txt

pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 -f https://download.pytorch.org/whl/torch_stable.htmlpip install -r requirements.txt

8.需要安装的组件比较多,因此这一步也需要等待一定的时间,具体取决于你的网络情况

在这里插入图片描述
pip install dlib

9.下载和安装模型checkpoints

将下面这个文件夹(包含11个模型和1个子文件夹“BFM”)全部下载下来,然后将这个下载下来的checkpoints文件夹放在项目的跟目录中:

在这里插入图片描述
10.使用教程
在项目的根目录,新建一个“temp”文件夹,在temp文件夹中分别新建一个“video”文件夹和“audio”文件夹,分别用来存放用来对嘴型的视频文件和音频文件的临时文件

只需要新建这三个文件夹即可,实际使用中不需要将视频和音频文件先复制到这两个文件夹中,不管你的视频和音频文件在什么位置,系统会自动往这个temp下面的两个文件夹再复制一份

在这里插入图片描述
在这里插入图片描述
11.运行webui界面

在虚拟环境的状态下,输入如下的命令即可运行webui界面

python webUI.py

如果不在虚拟环境下,则需先激活虚拟环境,即在项目的根目录地址栏输入cmd,打开命令窗口,输入如下的命令激活虚拟环境:

conda activate video_retalking

报错
在这里插入图片描述12.安装gradio

pip install gradio

在这里插入图片描述
13.运行python webUI.py

在这里插入图片描述14.http://127.0.0.1:7860
在这里插入图片描述
15.项目第一次运行的时候还会下载几个小模型文件,体积不大,耐心等待即可!第二次之后运行就不需要再下载模型文件了!

16.如果不想每次都手动激活虚拟环境,可以下载下面的bat文件,将它放在根目录,每次使用的时候双击该bat文件即可运行webui页面@

频不宜过长,生成视频会循环使用源视频,无需上传长视频

视频为标准MP4格式、视频中只有一张人脸、每帧都要有人脸、人脸清晰可识别,人脸不过过大

\VideoReTalking\python.exe inference.py --face examples/face/1.mp4 --audio examples/audio/1.wav --outfile results/1_1.mp4python inference.py --face examples/face/1.mp4 --audio examples/audio/1.wav --outfile results/1_1.mp4
参数解释
基础参数设置base_options.py
参数类型默认值解释
–name str ‘face_recon’ 实验名称,决定样本和模型存储的位置
–gpu_ids str ‘0’ GPU的ID,例如:0、0,1,2、0,2。使用-1表示CPU
–checkpoints_dir str ‘./checkpoints’ 模型存储的目录
–vis_batch_nums float 1 用于可视化的图像批次数
–eval_batch_nums float inf 用于评估的图像批次数,设置为inf表示所有图像都参与评估
–use_ddp bool True 是否使用分布式数据并行
–ddp_port str ‘12355’ DDP端口
–display_per_batch bool True 是否使用批次显示损失
–add_image bool True 是否将图像添加到Tensorboard中
–world_size int 1 分布式数据并行的总批次数
–model str ‘facerecon’ 选择要使用的模型
–epoch str ‘latest’ 要加载的模型的训练轮数,设置为’latest’表示使用最新的缓存模型
–verbose bool 如果指定,则打印更多调试信息
–suffix str ‘’ 自定义后缀,将添加到opt.name中,例如:{model}_{netG}_size{load_size}参数名
类
型
默认值描述
DNet_path str ‘checkpoints/DNet.pt’ DNet模型的路径
LNet_path str ‘checkpoints/LNet.pth’ LNet模型的路径
ENet_path str ‘checkpoints/ENet.pth’ ENet模型的路径
face3d_net_path str ‘checkpoints/face3d_pretrain_epoch_20.pth’ face3d模型的路径
face str None 包含要使用的人脸的视频/图像的文件路径,此参数必填
audio str None 要用作原始音频源的视频/音频文件的文件路径,此参数必填
exp_img str ‘neutral’ 表情模板。可以是’neutral’,‘smile’或图像路径。默认为’neutral’
outfile str None 要保存结果视频的路径
fps float 25.0 只有当输入为静态图像时可以指定的帧率,默认为25.0
pads list [0, 20, 0, 0] 填充(上、下、左、右)。请确保至少包含下巴区域
face_det_batch_size int 4 人脸检测的批处理大小
LNet_batch_size int 16 LNet的批处理大小
img_size int 384 图像的大小(宽度和高度相等)
crop list [0, -1, 0, -1]
将视频裁剪为较小的区域(上、下、左、右)。在resize_factor和
rotate参数之后应用。如果有多个人脸,这很有用。 -1表示根据高
度、宽度自动推断值
box list [-1, -1, -1, -1]
为人脸指定一个固定的边界框。如果人脸检测失败,请仅在万不得已
时使用此选项。仅在人脸几乎不移动时有效。 语法:(上、下、左、
右)
nosmooth bool False 在短时间窗口内阻止平滑人脸检测
static bool False 指定输入是否为静态图像
up_face str ‘original’ 人脸朝向的方向。可以是’original’或其他用户指定的方向
one_shot bool False 一次处理整个视频而不是逐帧处理
without_rl1 bool False 不使用相对l1损失
tmp_dir str ‘temp’ 保存临时结果的文件夹路径
re_preprocess bool False 重新预处理视频(例如,检测新的人脸)
模型训练参数设置train_options.py,训练模型根据实际情况调整。data_root str ./ 数据集根目录
flist str datalist/train
/masks.txt 训练集掩膜文件名列表
batch_size int 32 批处理大小
dataset_mode str flist 选择数据集加载方式。[None
serial_batches bool 如果为True,按顺序获取图像以形成批次;否则随机获取图像。
num_threads int 4 加载数据的线程数
max_dataset_size int inf 数据集允许的最大样本数。如果数据集目录包含的样本数超过max_dataset_size,则仅加
载子集。
preprocess str shift_scale_rot_flip 加载时图像的缩放和裁剪方式。[shift_scale_rot_flip
use_aug bool True 是否使用数据增强
验证参数数据类型默认值解释说明
flist_val str datalist/val/masks.txt 验证集掩膜文件名列表
batch_size_val int 32 验证集的批处理大小
可视化参数数据类型默认值解释说明
display_freq int 1000 在屏幕上显示训练结果的频率
print_freq int 100 在控制台上显示训练结果的频率
网络保存和加载参数数据类型默认值解释说明
save_latest_freq int 5000 保存最新结果的频率
save_epoch_freq int 1 在每个epoch结束时保存检查点的频率
evaluation_freq int 5000 评估的频率
save_by_iter bool 是否按迭代保存模型
continue_train bool 继续训练:加载最新模型
epoch_count int 1 起始epoch计数,我们按<epoch_count><epoch_count>+<save_latest_freq>,…保存模型
phase str train 训练、验证、测试等
pretrained_name str None 从其他检查点继续训练
训练参数数据类型默认值解释说明
n_epochs int 20 初始学习率的epoch数
lr float 0.0001 Adam的初始学习率lr_policy str step 学习率策略。[linear
lr_decay_epochs int 10 每lr_decay_epochs个epoch乘以一个gamma
脸部对焦参数配置facerecon_model.py,这些参数默认即可。
网络结构参数数据类型默认值解释说明
net_recon str ‘resnet50’ 网络结构
init_path str ‘checkpoints/init_model/resnet50-0676ba61.pth’ 初始化路径
use_last_fc bool False 是否对最后一个全连接层进行零初始化
bfm_folder str ‘BFM’ BFM文件夹路径
bfm_model str ‘BFM_model_front.mat’ BFM模型
渲染器参数参数数据类型默认值解释说明
focal float 1015. 焦距
center float 112. 中心点
camera_d float 10. 相机参数d
z_near float 5. 近截面
z_far float 15. 远截面
训练参数
数据类
型
默认值解释说明
net_recog str ‘r50’ 人脸识别网络结构
net_recog_path str ‘checkpoints/recog_model/ms1mv3_arcface_r50_fp16
/backbone.pth’ 人脸识别网络的权重文件路径
use_crop_face bool False 是否使用裁剪掩码来计算照片损失
use_predef_M bool False 是否使用预定义的M矩阵来处理预测的人脸特征 (M矩阵
用于三维形状预测)
数据增强参数参数数据类型默认值解释说明
shift_pixs float 10.0 像素平移大小
scale_delta float 0.1 尺度缩放因子的变化范围
rot_angle float 10.0 旋转角度的变化范围 (单位:度)
损失权重参数数据类型默认值解释说明
w_feat float 0.2 特征损失权重损失权重参数数据类型默认值解释说明
w_color float 1.92 颜色损失权重
w_reg float 3.0e-4 形状正则化损失权重
w_id float 1.0 身份正则化损失权重
w_exp float 0.8 表情正则化损失权重
w_tex float 1.7e-2 纹理正则化损失权重
w_gamma float 10.0 Gamma矫正损失权重
w_lm float 1.6e-3 关键点坐标损失权重
w_reflc float 5.0 反照率损失权重
其他使用方法
表情控制参数操作,可以通过添加以下参数来控制表情:
参数解释
–exp_img 预定义的表情模板。默认为"neutral"(中性表情)。可以选择"smile"(微笑)或提供一个图片路径。
–up_face 可以选择"surprise"(惊讶)或"angry"(愤怒)来使用 GANimation 修改上半部分脸部的表情。

17.经测试,源视频识别错误将导致失败。具体原因官方没有详细说明,以下为网友总结:

1、资源问题:
视频不宜过长,生成视频会循环使用源视频,不用担心视频短的问题。2、视频为标准MP4格式、视频中只有一张人脸、每帧都要有人脸、人脸清晰可识别,人脸不过过大,几乎半个屏幕。人脸不可过度AI化。
音频没有太多要求,发音清晰即可。3、只支持N卡。若您的配置过低也会造成卡住的情况。4、以上无法解决问题请使用网盘中的案例视频进行测试。

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

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

相关文章

数据结构学习1 初识泛型

装箱和拆箱 装箱/装包: 把一个基本数据类型转变为包装类型 拆箱/拆包: 把一个包装类型转变为一个基本数据类型 int a 1;Integer i a;// 自动装箱int b i;// 自动拆箱Integer ii Integer.valueOf(a);// 手动装箱&#xff0c;推荐使用 Integer.valueOf() 而不是 new Integer(…

本地读取Excel文件并进行数据压缩传递到服务器

在项目开发过程中&#xff0c;读取excel文件&#xff0c;可能存在几百或几百万条数据内容&#xff0c;那么对于大型文件来说&#xff0c;我们应该如何思考对于大型文件的读取操作以及性能的注意事项。 类库&#xff1a;Papa Parse - Powerful CSV Parser for JavaScript 第一步…

springboot116基于java的教学辅助平台

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的基于java的教学辅助平台 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四…

基于光口的以太网 udp 回环实验

文章目录 前言一、系统框架整体设计二、系统工程及 IP 创建三、UDP回环模块修改说明四、接口讲解五、顶层模块设计六、下载验证前言 本章实验我们通过网络调试助手发送数据给 FPGA,FPGA通过光口接收数据并将数据使用 UDP 协议发送给电脑。 提示:任何文章不要过度深思!万事万…

从白子画到东方青苍,你选择谁来守护你的修仙之旅?

从白子画到东方青苍,你选择谁来守护你的修仙之旅? 在繁花似锦的修仙世界中&#xff0c;每一位追梦者都渴望有那么一位守护者&#xff0c;与你共患难&#xff0c;共成长。热血与浪漫交织的《花千骨》与《苍兰诀》&#xff0c;给我们带来了两位风华绝代的守护者&#xff1a;白子…

磁盘初始化会丢失文件吗?答案揭晓!

“由于我的电脑出现了一些问题&#xff0c;我就将磁盘初始化了&#xff0c;但是里面还有很重要的文件&#xff0c;磁盘初始化了文件会丢失吗&#xff1f;有什么方法可以恢复丢失的文件呢&#xff1f;” 当我们谈论磁盘初始化&#xff0c;通常是指对硬盘或固态驱动器&#xff08…

解决执行npm(或pnpm)时报:证书过期 certificate has expired问题

项目执行 pnpm install 初始化时报 reason: certificate has expired 错误。 解决方案 1、取消ssl验证&#xff1a;npm config set strict-ssl false这个方法一般就可以解决了。2、更换npm镜像源&#xff1a;npm config set registry http://registry.cnpmjs.org npm config …

第13节-简历中的开放性问题

(点击即可收听) 不少公司的开放式题目每年不会有太大的变化&#xff0c;所以在答题前可先去相关求职论坛看看这些公司往年的问题&#xff0c;分析和思考自己应当怎么回答 开放式问题回答技巧 开放式问题主要考察的是求职者的求职动机、解决问题的能力、创造力等软实力&#xff…

linux|操作系统|centos7物理机安装网卡驱动8188gu(内核升级,firmware固件,USB设备管理,module管理)

前言&#xff1a; 目前服务器领域centos7基本是主流的操作系统&#xff0c;而linux相对于Windows来说&#xff0c;软硬件方面的支持是差很多的&#xff0c;在硬件方面来说&#xff0c;以一个免驱的网卡为例&#xff0c;window xp可能不会自动识别到&#xff0c;但Windows10基本…

JUC并发编程与源码分析学习笔记(二)

二十九、多线程锁之线程锁知识概述 说说Java“锁”事 从轻松的乐观锁和悲观锁开讲 通过8种情况演示锁运行案例&#xff0c;看看我们到底锁的是什么 公平锁和非公平锁 可重入锁&#xff08;又名递归锁&#xff09; 死锁及排查 写锁&#xff08;独占锁&#xff09;/读锁&a…

Java中创建List接口、ArrayList类和LinkedList类的常用方法(一)

List接口 要了解List接口&#xff0c;就不得不说起Java的集合框架。 &#xff08;该图来自菜鸟教程&#xff09; Collection接口和Map接口 Java 集合框架主要包括两种类型的容器&#xff0c;集合Collection和图Map。 Collection接口代表了单列集合&#xff0c;它包含了一组…

微信公众号怎么申请超过2个

一般可以申请多少个公众号&#xff1f;目前公众号申请数量的规定是从2018年底开始实施的&#xff0c;至今没有变化。规定如下&#xff1a;1、个人可以申请1个个人主体的公众号&#xff1b;2、企业&#xff08;有限公司&#xff09;可以申请2个公众号&#xff1b;3、个体户可以申…

MyBatis 的XML实现方法(JAVA)

数据库表的结构如下&#xff1a; DROP DATABASE IF EXISTS test; CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4; -- 使⽤数据数据 USE test; -- 创建表[⽤⼾表] DROP TABLE IF EXISTS userinfo; CREATE TABLE userinfo ( id INT ( 11 ) NOT NULL AUTO_INCREMENT, user…

如何本地搭建Splunk Enterprise数据平台并实现任意浏览器公网访问

文章目录 前言1. 搭建Splunk Enterprise2. windows 安装 cpolar3. 创建Splunk Enterprise公网访问地址4. 远程访问Splunk Enterprise服务5. 固定远程地址 前言 本文主要介绍如何简单几步&#xff0c;结合cpolar内网穿透工具实现随时随地在任意浏览器&#xff0c;远程访问在本地…

MacM1Pro Parallels19.1.0 CentOS7.9 Install PostgrepSQL

相关阅读 MacM1Pro安装 Parallels Desktop 19.1.0 https://blog.csdn.net/qq_41594280/article/details/135420241 MacM1Pro Parallels安装Parallels Tools https://blog.csdn.net/qq_41594280/article/details/135398780 MacM1Pro Parallels安装CentOS7.9 https://blog.csdn.n…

win7或win10如何设置休眠不断网

win7电脑一断休眠wifi网络就会断&#xff0c;那么怎么办呢?该如何设置Win7电脑休眠时不断开WiFi呢?怎么办呢&#xff1f;下面为大家介绍一下方法能使大脑休眠时不断开WiFi网络。 设置Win7电脑休眠时不断开WiFi教程如下&#xff1a; 1、首先点击桌面右下角的.无线图标&#xf…

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集

上一篇&#xff1a;[嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 文章目录 一、串口输出(1) 简介(2) 示例代码(3) 仿真效果 二、串口输入(1) 简介(2) 示例代码(3) 仿真效果 三、ADC采集(1) 简介(2) 示例代码&#xff08;电压&#xff09;(3) 仿真效果 &#xff08;…

Conda python管理环境environments 一 从入门到精通

Conda系列&#xff1a; 翻译: Anaconda 与 miniconda的区别Miniconda介绍以及安装Conda python运行的包和环境管理 入门 使用 conda&#xff0c;可以创建、导出、列出、删除和更新 具有不同 Python 版本和/或 安装在其中的软件包。在两者之间切换或移动 环境称为激活环境。您…

vue中的插槽

在vue中&#xff0c;有的名词听着高大上&#xff0c;挺怪异的&#xff0c;比如插槽&#xff0c;就是slot&#xff0c;它的作用是为了解决组件之间写的内容在组件中的使用问题。 一、插槽的作用 <!DOCTYPE html> <html> <head><title>Vue中的插槽</…

接口测试-Mock测试方法

一、关于Mock测试 1、什么是Mock测试&#xff1f; Mock 测试就是在测试过程中&#xff0c;对于某些不容易构造&#xff08;如 HttpServletRequest 必须在Servlet 容器中才能构造出来&#xff09;或者不容易获取的比较复杂的对象&#xff08;如 JDBC 中的ResultSet 对象&#…