如何用ModelScope实现 “AI换脸” 视频

前言

当下,视频内容火爆,带有争议性或反差大的换脸视频总能吸引人视线。虽然AI换脸在市面上已经流行了许久,相关制作工具或移动应用也是数不胜数。但是多数制作工具多数情况下不是会员就是收费,而且替换模板有限。以下在实战的角度,用阿里ModelScope的图像人脸融合实现一下AI视频换脸。

流程

       提供一段视频和一张替换的人脸图片,用opencv-python将视频根据帧率拆成图片,用FFmpeg提取视频里的音频为单独文件(mp3)。遍历目录下的每一帧的图片,通过ModelScope的人脸融合模型,传入新的人脸和帧率图片,得到替换过人脸的帧图片。最后再通过opencv-python将替换的人脸图片组合成新视频,FFmpeg添加提取出的音频文件。


环境

1. Python 3.7.16

2. ModelScope 1.4.2

3. OpenCV-Python 4.7.0

4. FFmpeg 12.2.0


环境安装

1. Python虚拟环境添加

conda create -n modelscope python=3.7 && conda activate modelscope

2. 安装ModelScope,使用了国内镜像源

pip install modelscope --upgrade 

3. 安装OpenCV

pip install opencv-python 

4. 安装FFmpeg

因为单是图片用不上,所以安装方法放在下面视频换脸里


图片换脸

1. 素材准备

     我这里分别准备了一个画面里出现正脸,侧脸和两张脸的图片,然后分别用一张图片替换,最后运行代码查看效果。(可能是模型原因,感觉光看图片的换脸好像相差不大,倒有点像只是开了个美颜,也有可能是俩演员有点像,认真看还有有点不同)。

2. 代码部分


视频换脸

1.  FFmpeg安装

如果是windows10可以按我下面的选择,shared是动态版本,不带的是静态版本,所有的功能都集合在一起。

2. FFmpeg环境配置

下载后解压会生成一下目录,将bin文件放入电脑环境变量中,然后通过ffmpeg -version查看是否安装成功。

3. FFmpeg用法

3.1. 从视频中抽取音频 (输入视频和输出音频的地址可以是相对路径)

ffmpeg -i videos\11.mp4 -q:a 0 -map a audio\audio.mp3

3.2. 将独立音频文件添加到视频里(接收输入视频,输入音频,输出新视频)

ffmpeg -i videos/ldh.mp4 -i audio/audio.mp3 -c:v copy -c:a aac -strict experimental videos/new_ldh.mp4

4. 开始编码 (略)

5. 报错汇总

当运行上面代码,如果出现Output file does not contain any stream,那就是分离音频或追加音频到视频的这两个地方报的错误,大部分情况下输出路径不正确或命令参数不对。还有一个错误我没有记录,就是让视频压根没有声音,再执行分离操作时也会报错。这个是我上班时随便拿的视频测试(因为不能戴耳机,刚好视频就是没声音的),所以使劲测使劲报错,换了视频就好了,关键是错误提示也没说是视频没声音。

6. 效果演示

由于时间原因,没有用杨过的视频,就用没有声音的视频做了换脸演示。以后还要对换脸图片替换做多线程处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容