影史经典《卡萨布兰卡》是大家耳熟能详的传世名作,那一首壮怀激烈,激奋昂扬的马赛曲,应当是通片最为激动人心的经典桥段了,本次我们基于faceswap和so-vits库让AI川普复刻美国演员保罗·亨雷德高唱《马赛曲》的名场面。

配置人脸替换DeepFakes项目

关于人脸替换,业内鼎鼎有名的deepfakes代表了这个人工智能细分领域的最高水平,旗下的faceswap库正好适合这种视频二次创作的场景。

首先克隆faceswap项目:

git clone https://github.com/deepfakes/faceswap.git

随后进入项目的目录:

cd faceswap

确保本地已经配置好python3.10的开发环境

随后在根目录即可编译安装:

python3.10 setup.py

这里的setup.py脚本会自动判断系统本地软件环境进行依赖的安装,如果想要手动安装依赖,也可以通过pip命令:

For Nvidia GPU users: pip install -r ./requirements/requirements_nvidia.txt
For AMD GPU users: pip install -r ./requirements/requirements_amd.txt
For CPU users: pip install -r ./requirements/requirements_cpu.txt

这里分为三种用户,N卡用户使用requirements_nvidia.txt,也是最主流的解决方案,其次是A卡用户:requirements_amd.txt,最后是cpu用户requirements_cpu.txt。

事实上,这里并不推荐cpu运行项目,因为无论是训练还是推理,速度实在是太慢了,就算是Intel最新的第十三代酷睿I9处理器,也是杯水车薪,更遑论苹果的M系列芯片,吹得再牛逼,也只是送人头的水平。

所以,玩深度学习,最低的要求就是手里得有一块N卡,不需要太高端,倾家荡产买一块3090或者是4090其实没有任何必要,一块相对亲民的4050或者是4060足矣,当然,有钱任性则另当别论。

至此,faceswap就配置好了。

构建训练集

让我们再来回顾一下需求场景,现在需要将懂王的脸替换到《卡萨布兰卡》中保罗·亨雷德的脸,所以我们现在需要收集两张脸,即原视频保罗·亨雷德的脸,以及替换者懂王的脸。

此时原视频素材是存在的,即《卡萨布兰卡》电影,而懂王的脸则需要在网上寻找视频素材进行下载,这里需要注意的是,素材中最好包含脸部的特写,并且不包括其他人的脸,否则会在模型训练环节产生“噪音”。

由于《卡萨布兰卡》中还有很多别的场景,而我们需要的只是保罗·亨雷德高唱《马赛曲》的面部特写片段,所以需要对素材进行剪辑,这里推荐使用ffmpeg,首先运行安装命令:

winget install ffmpeg

接着将可执行目录配置到系统的环境变量中:

C:\Users\[用户名]\AppData\Local\Microsoft\WinGet\Packages\Gyan.FFmpeg_Microsoft.Winget.Source_8wekyb3d8bbwe\ffmpeg-6.0-full_build\bin

随后通过命令将片段从原始素材中扣取出来:

ffmpeg -ss 01:34:00 -i 卡萨布兰卡.mp4 -to 01:55:00 -c copy 保罗面部素材.mp4

这里视频素材就保存好了。

接着利用faceswarp脚本将素材转换为面部的图片集合:

python3.10 faceswap.py extract -i ~/faceswap/src/保罗面部素材.mp4 -o ~/faceswap/faces/paul

效果就是将视频逐帧进行保存,只保留面部信息:

懂王的训练集也如法炮制。

至此,训练集就构建好了。

模型训练

当训练集配置好之后,下一步就是模型训练,模型训练是指使用已知的数据集对机器学习模型进行调整和优化,以便它能够更准确地对未知数据进行预测,没错,所谓换脸,就是在处理预测问题。

运行命令,开始训练:

python3.10 faceswap.py train -A ~/faceswap/faces/paul -B ~/faceswap/faces/trump -m ~/faceswap/mymodel/ -p

这里A数据集为保罗的,B则是懂王,-m参数是模型的保存目录,-p参数则可以对模型效果进行预览。

模型训练过程中会不断输出损失率函数,一般情况下,训练过程中损失率稳定在0.01左右代表模型已经收敛。

训练过程中每隔一段时间会保存一次模型,程序中断后再次执行会在上次的模型基础上训练,训练需要手动停止,训练完后模型保存在上面指定的路径下。

这里需要注意的是,模型训练过程将会付出大量的时间成本,多长时间取决于许多因素,使用的模型,训练集的数量,N卡等级等等。在GTX4060的GPU上大概5个小时左右损失率会相对稳定,如果在CPU上训练,短时间内很难看到损失率下降。

本地推理

模型训练完毕后,我们就可以使用模型来进行换脸的推理操作,这里有个问题需要澄清一下,即我们训练的不是通用模型,而是针对训练集的模型,也就是说,这个模型只是为了将原素材中保罗的脸替换为懂王的脸而训练的,并不是在任意素材中都能够这样替换。

因此,就算模型有过拟合问题,也不会影响最终效果。

所以,我们就可以直接使用训练集数据进行验证,运行命令进行推理:

python3.10 faceswap.py convert -i ~/faceswap/faces/paul -o ~/faceswap/faces/output -m ./mymodel/  

这里使用模型针对原训练集数据进行替换。

效果如下:

保罗英俊的面庞瞬间灰飞烟灭,懂王睿智的面容缓缓浮现。

相同的流程,将片中好莱坞巨星英格丽·褒曼的脸:

替换为漫威超级女英雄寡姐的脸:

脸型有些违和,但音容宛在。

最后,只须将《马赛曲》的歌声替换为懂王即可,请移步:AI天后,在线飙歌,人工智能AI孙燕姿模型应用实践,复刻《遥远的歌》,原唱晴子(Python3.10) ,囿于篇幅,这里不再赘述。

结语

看到这里,相信很多朋友都不约而同地有了一些非常大胆却又不太成熟的想法,但请记住,无论何时何地,互联网都并非法外之地,当运行推理脚本的那一刻,需要思考一下自己是不是真的很刑。在Youtube(B站)搜索刘悦的技术博客,即可欣赏复刻版本的《卡萨布兰卡》,欢迎诸君品鉴。

音容笑貌,两臻佳妙,人工智能AI换脸(deepfake)技术复刻《卡萨布兰卡》名场面(Python3.10)的更多相关文章

  1. 人工智能AI库Spleeter免费人声和背景音乐分离实践(Python3.10)

    在视频剪辑工作中,假设我们拿到了一段电影或者电视剧素材,如果直接在剪辑的视频中播放可能会遭遇版权问题,大部分情况需要分离其中的人声和背景音乐,随后替换背景音乐进行二次创作,人工智能AI库Spleete ...

  2. 好饭不怕晚,Google基于人工智能AI大语言对话模型Bard测试和API调用(Python3.10)

    谷歌(Google)作为开源过著名深度学习框架Tensorflow的超级大厂,是人工智能领域一股不可忽视的中坚力量,旗下新产品Bard已经公布测试了一段时间,毁誉参半,很多人把Google的Bard和 ...

  3. 人工智能AI智能加速卡技术

    人工智能AI智能加速卡技术 一. 可编程AI加速卡 1. 概述: 这款可编程AI加速器卡具备 FPGA 加速的强大性能和多功能性,可部署AI加速器IP(WNN/GNN,直接加速卷积神经网络,直接运行常 ...

  4. 程序员体验AI换脸就不要用ZAO了,详解Github周冠军项目Faceswap的变脸攻略

    本文链接:https://blog.csdn.net/BEYONDMA/article/details/100594136       上个月笔者曾在<银行家杂志>发文传统银行如何引领开放 ...

  5. 从Vehicle-ReId到AI换脸,应有尽有,解你所惑

    最近在做视频搜索的技术调研,已经初步有了一些成果输出,算法准确性还可以接受,基本达到了调研的预期.现将该技术调研过程中涉及到的内容总结一篇文章分享出来,内容比较多,初看起来可能关系不大,但是如果接触面 ...

  6. 人工智能AI芯片与Maker创意接轨 (中)

    在人工智能AI芯片与Maker创意接轨(上)这篇文章中,介绍人工智能与深度学习,以及深度学习技术的应用,了解内部真实的作业原理,让我们能够跟上这波AI新浪潮.系列文来到了中篇,将详细介绍目前市面上的各 ...

  7. 人工智能AI图像风格迁移(StyleTransfer),基于双层ControlNet(Python3.10)

    图像风格迁移(Style Transfer)是一种计算机视觉技术,旨在将一幅图像的风格应用到另一幅图像上,从而生成一幅新图像,该新图像结合了两幅原始图像的特点,目的是达到一种风格化叠加的效果,本次我们 ...

  8. 数据挖掘(data mining),机器学习(machine learning),和人工智能(AI)的区别是什么? 数据科学(data science)和商业分析(business analytics)之间有什么关系?

    本来我以为不需要解释这个问题的,到底数据挖掘(data mining),机器学习(machine learning),和人工智能(AI)有什么区别,但是前几天因为有个学弟问我,我想了想发现我竟然也回答 ...

  9. 人工智能--AI篇

    AI背景 在当今互联网信息高速发展的大背景下,人工智能(AI)已经开始走进了千家万户,逐渐和我们的生活接轨,那具体什么是AI呢? 什么是人工智能(AI)? 人工智能:简单理解就是由人制造出来的,有一定 ...

  10. 解读 --- 基于微软企业商务应用平台 (Microsoft Dynamics 365) 之上的人工智能 (AI) 解决方案

    9月25日微软今年一年一度的Ignite 2017在佛罗里达州奥兰多市还是如期开幕了.为啥这么说?因为9月初五级飓风厄玛(Hurricane Irma) 在佛罗里达州登陆,在当地造成了挺大的麻烦.在这 ...

随机推荐

  1. Resistance distance 图上2个节点的等效电阻求解算法

    目录 如何计算正方体网络中(乃至更一般的图)2个节点间的等效电阻? 公式的正确性很容易得到验证 如何计算Weighted matrix的Resistance matrix 我验证了特例,是对的,但是对 ...

  2. StyleGAN 生成 AI 虚拟人脸,再也不怕侵犯肖像权

    目录 什么是 StyleGAN 如何使用 StyleGAN 下载项目 修改项目 MSVC 运行项目 运行结果 什么是 StyleGAN GAN 是机器学习中的生成性对抗网络,目标是合成与真实图像无法区 ...

  3. Comic Life - 超棒的漫画制作工具,拥有多种动画模版,创作属于自己的漫画

    Comic Life是一个照片编辑器,能够添加各种效果,并基于它们创建漫画.该工具包包括各种各样的模板,可以很容易地将照片放置在工作表上,还有大量各种形状的标注.除了拼贴画上的标注之外,您还可以添加带 ...

  4. ACM-NEFUOJ-P209湖南修路

    思路 prim的最小生成树,套上肝就完事了 代码 #include<iostream> #include<cstdio> #include<string.h> #d ...

  5. CSS3新增选择器(属性选择器、结构伪类选择器、伪元素选择器)

    ​本博文介绍CSS3中新增的选择器,包括属性选择器.结构伪类选择器和伪元素选择器. 1 属性选择器 属性选择器([属性])可以根据元素的属性和属性值来对符合要求的元素进行选择. 属性选择器的基础语法如 ...

  6. blender资源库 【自用】

    1 https://www.threedscans.com A Website with a lot of photo-scanned sculptures which are free to use ...

  7. 在Kubernetes部署GitLab

    在Kubernetes部署GitLab 前置条件 已安装Helm工具已部署NFS自动创建PVC 使用HELM安装 [root@k8s-master01 ~]# helm repo add gitlab ...

  8. [Linux]CPU架构/指令集:RISC / CISC | arm | amd | X86/i386 | aarch64

    1 前言 本文是解决在软件开发.软件交付过程中,常常需要找寻与服务器硬件的CPU架构适配的软件包时,开发者和交付者又时常摸不着头脑.[迷迷糊糊]地就下载了某个所谓"适配".&quo ...

  9. 五月十一号java基础知识点

    1.通过add()方法向链表list输入1-10十个数for (int i = 1; i <11 ; i++) { list.add(i);//向链表添加1-10的整数 } import jav ...

  10. okio中数据存储的基本单位Segment

    1.Segment是Buffer缓冲区存储数据的基本单位,每个Segment能存储的最大字节是8192也就是8k的数据 /** The size of all segments in bytes. * ...