首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >手把手实现火爆全网的视频特效 “蚂蚁呀嘿”,太魔性了

手把手实现火爆全网的视频特效 “蚂蚁呀嘿”,太魔性了

作者头像
AI算法与图像处理
发布于 2021-03-14 09:41:58
发布于 2021-03-14 09:41:58
98000
代码可运行
举报
运行总次数:0
代码可运行

导读

Hi,大家好,今天是周末,今天给各位读者分享最近很火的视频特效。

将会依据现有的demo,一步步去分析原理,并最终实现。

思路简介

首先看一下目标效果(下面放的是 gif,我们需要的是视频,需要添加背景音乐)

明确目标之后,接下来就是进一步去分解具体的技术实现。

参考网上的实现方法:

采用 APP

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Avatarify
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Avatarify

操作步骤:

打开这款软件Avatarify,选择一张照片即可进入选择特效页面

即:需要一张图片 + 一个想要的特效视频

具体的原理:

让一张照片动起来,人脸跟着音乐一起挤眉弄眼,需要一个叫做一阶运动模型 (First Order Motion Model)来搞定。

技术原理借鉴了去年意大利特伦托大学的一项研究,入选了NIPS 2019。

当时的例子是这样的。

当然上面的操作仅仅只能用于画面的特效,没有声音,因此,我们需要添加声音,同时如果想要分享到朋友圈的话,还需要一定的处理将视频的编码格式变成H264。

下面我将一步步操作

详细教程

1、克隆项目并配置环境项目连接:

https://github.com/anandpawara/Real_Time_Image_Animation

本文所有操作均在ubuntu 20.04 下操作,如需windows或mac下操作,请自行搜索相应的解决方案

1)从 github 克隆项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone git@github.com:anandpawara/Real_Time_Image_Animation.git

2)配置环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install -r requirements.txt

报错:

ERROR: Could not find a version that satisfies the requirement pywin32==227 ERROR: No matching distribution found for pywin32==227

暂时不处理 !!!

从 requirements.txt 中删除掉之后,再次运行上面的语句 或者运行代码尝试缺少哪些包 运行代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python image_animation.py -i path_to_input_file -c path_to_checkpoint -v path_to_video_file

各个参数的含义:

path_to_input_file 是输入的图片(例如你相对蒙娜丽莎进行变换,这里输入即她的照片)

path_to_checkpoint 是权重文件路径(需要从项目中的下载)

path_to_video_file 是输入的视频文件(含动作的视频文件)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python image_animation.py -i Inputs/Monalisa.png -c checkpoints/vox-cpk.pth.tar -v 1.mp4

如果运行成功,最后生成的视频存放在 output 文件夹下。

当然由于上述环境安装问题,导致会报错 :

No module named 'tqdm' No module named 'imageio' No module named 'skimage' No module named 'sklearn' No module named 'pandas' No module named 'yaml' No module named 'cv2'

这是常见问题,缺失必要的包,但在国内安装的时候,如果直接 pip install 进行安装可能会存在网速太慢的问题,导致失败或者浪费了大量的时间,可以考虑换源或指定源的方式来快速下载

这里给出指定源的方法

参考:https://www.cnblogs.com/flintlovesam/p/12833652.html

例如想要安装 imageio,在后面添加 -i + 源 即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install imageio -i https://mirrors.aliyun.com/pypi/simple/

同样的问题,这里用到了 pytorch,国内安装也会遇到上述的问题,这里也采用指定源的方式解决 (安装 GPU 版本 pytorch, 版本 1.5.0)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install torch===1.5.0+cu101 torchvision===0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.douban.com/simple/ some-package

注意:这里我的是cuda版本是10.1,大家根据自己的情况进行调整 如果安装速度慢,可以考虑换源 或以制定源的方法安装 参考:https://blog.csdn.net/qq_36414085/article/details/106369314

上诉操作成功后,再次运行,此时 output文件夹下即有结果出来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python image_animation.py -i Inputs/Monalisa.png -c checkpoints/vox-cpk.pth.tar -v 1.mp4

上述的操作,就这个项目能实现的基本功能,实现动作迁移,下面我们将对进行一些修改来达到我们的最终目标!

大致内容:

1)画面修改

2)添加背景音乐

3)视频格式转换

优化

1)画面修改

存在的问题:

1、帧数问题:

素材帧数-15 FPS

生成的视频结果的设置帧数 为 12 FPS 会导致音画不同步

2、画面尺寸问题:

由于这个项目的作者将最终的显示结果设置为

原图--生成视频--原始视频 的结果形式,

而我们最终只想要 生成的视频,所以还需要进行一定的修改(从256*3,256)变成(256,256)

具体修改

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 文件 image_animation.py# 第50行# out1 = cv2.VideoWriter('output/test.avi', fourcc, 12, (256*3 , 256), True)# 修改输出视频格式 帧数和视频输出的尺寸out1 = cv2.VideoWriter('output/test.avi', fourcc, 15, (256 , 256), True)

同时修改保存的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#  文件 image_animation.py# 重点关注joinedFrame = np.concatenate((cv2_source,im,frame1),axis=1)            cv2.imshow('Test',joinedFrame)out1.write(img_as_ubyte(joinedFrame))# 修改成out1.write(img_as_ubyte(im))

备注:

获取视频帧数的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import cv2cap = cv2.VideoCapture("test.avi")print(cap.get(cv2.CV_CAP_PROP_FPS )

参考https://zhuanlan.zhihu.com/p/56571623

2)添加背景音乐

这里需要安装moviepy 包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install moviepy

如果遇到问题可以考虑下面的处理方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo pip install ez_setuppip install --user moviepy -ignore-installed -i https://mirrors.aliyun.com/pypi/simple/

参考:https://blog.csdn.net/weixin_38636815/article/details/106539049 https://blog.csdn.net/qq_43058685/article/details/104221009

添加背景音乐

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from moviepy.editor import *
video_path = 'test.avi'audio_path = 'test.wav'
video = VideoFileClip(video_path)audio_clip = AudioFileClip(audio_path)video = video.set_audio(audio_clip)
video.write_videofile('result-myyh.mp4')

3)视频格式转换

安装ffmpeg

微信:不能分享这种格式(MP4)的视频的问题原因以及解决方案上传H.264编码格式的MP4视频,否则借助第三方转换软件转换成H.264编码格式的MP4视频即可。ffmpeg https://jingyan.baidu.com/article/27fa732646092846f9271f71.html (安装教程)https://zhuanlan.zhihu.com/p/200783234

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ffmpeg -i result-myyh.mp4 -vcodec libx264 -f mp4 result.mp4

上述代码在终端中运行,将 result-myyh.mp4 生成我们需要的编码格式视频文件result.mp4 (外放的话注意音量哦)

总结

感谢看到这里的小伙伴,希望能给个三连支持一下,周末还在加班的打工人!下期见

参考文献:

  • https://github.com/anandpawara/Real_Time_Image_Animation
  • https://www.cnblogs.com/flintlovesam/p/12833652.html
  • https://blog.csdn.net/qq_36414085/article/details/10636931
  • https://blog.csdn.net/weixin_38636815/article/details/106539049
  • https://blog.csdn.net/qq_43058685/article/details/104221009
  • https://jingyan.baidu.com/article/27fa732646092846f9271f71.html
  • https://github.com/opencv/opencv-python/issues/100
  • http://www.blogdaren.com/post-2592.html
  • https://zhuanlan.zhihu.com/p/200783234
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI算法与图像处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python实现高级电影特效
前几天写了个实现特效的博客,感觉有点差强人意,只是简简单单的换背景应用场景不是非常多,今天就来实现一个更加复杂的特效“影分身”。下面有请我们本场的主演,坤制作人为我们表演他拿手的鸡你太美。
ZackSock
2020/05/18
1.5K0
Python实现高级电影特效
百万点赞怎么来?用Python制作抖音视频原来这么简单!
那么在上一篇教程当中,我们讲了Python在图片处理当中的应用,通过调用当中的opencv的模块,那么今天小编就和大家来分享一下Python同样也可以用来制作视频,也就是调用moviepy的模块。
用户6888863
2023/03/01
1.3K0
百万点赞怎么来?用Python制作抖音视频原来这么简单!
我用字符画出了一个谷爱凌!
之前经常在网上看到那种由一个个字符构成的视频,非常炫酷。一直不懂是怎么做的,这两天研究了一下,发现并不难。
godweiyang
2022/02/23
4050
我用字符画出了一个谷爱凌!
python带你剪辑视频
嗯,好久没写文章了。因为最近没有熬夜了,天天背电脑也很辛苦。 工作嘛,手工为主,没有啥技术成长,也没啥好写的。 疫情期间,总听到有人叹气,总听到抖音里面“我太难了”。
赵云龙龙
2020/08/13
3.1K0
ffmpeg 常用命令存档
https://blog.csdn.net/sinat_14826983/article/details/82975561
美女视频
2019/11/01
2.1K0
ffmpeg 常用命令存档
10万+的短视频被批量生产了,Python表示不服
前期有些自媒体大 V 靠搬运一些搞笑、好玩的 GIF,然后利用剪辑软件合成一段视频,再添加一个节奏感强的 BGM 后,上传各大自媒体平台后,能带来不错的阅读量和收益。
sergiojune
2019/06/19
2.6K0
10万+的短视频被批量生产了,Python表示不服
Python实现5毛钱特效
Python牛已经不是一天两天的事了,但是我开始也没想到,Python能这么牛。前段时间接触了一个批量抠图的模型库,而后在一些视频中找到灵感,觉得应该可以通过抠图的方式,给视频换一个不同的场景,于是就有了今天的文章。
ZackSock
2020/04/16
1.1K0
手把手教你使用opencv-python库制作屏幕录制工具(附源码)
最近有在使用屏幕录制软件录制桌面,在用的过程中突发奇想,使用python能不能做屏幕录制工具,也锻炼下自己的动手能力。接下准备写使用python如何做屏幕录制工具的系列文章:
陈晨135
2022/01/08
3.6K0
ffmpeg常用命令
FFmpeg是一个强大的开源多媒体处理工具,它可以用于录制、转换以及流化音频和视频。它是一个跨平台的项目,可以在多种操作系统上运行,包括Windows、Mac OS和Linux。这个工具可以执行各种各样的音视频处理任务,包括但不限于:
Jensen_97
2024/04/18
5860
短视频篇 | Python 带你进行短视频二次创作
无论是抖音还是快手等视频平台,一旦一个视频火了后,很多 UP 主都会争先抢后去模仿拍摄或剪辑,然后上传到平台,最后都能带来不错的流量。
AirPython
2020/03/23
1.7K0
短视频篇 | Python  带你进行短视频二次创作
魔性,用Python实现火爆全网的「蚂蚁呀嘿」视频特效!
https://aistudio.baidu.com/aistudio/projectdetail/1586056
数据森麟
2021/03/09
7560
魔性,用Python实现火爆全网的「蚂蚁呀嘿」视频特效!
关于微信小程序视频会开头黑屏,非从0秒开始播放处理
小小咸鱼YwY
2023/11/29
5260
批量爬取b站视频
码农GT038527
2024/11/17
3280
批量爬取b站视频
魔性!Python生成全网爆火的“蚂蚁呀嘿”
前段时间火爆的“蚂蚁呀嘿”,将一个人的说话动作和表情迁移到另一张静态图中,让静态图中的人脸做出指定动作表情,主要基于FOMM(First Order Motion model)技术。这已经是2年前的技术了,在一些场景中生成的效果并不理想。近期,清华大学团队在CVPR2022发布最新表情动作迁移论文Thin-Plate Spline Motion Model for Image Animation。本文不具体讲论文原理,而是直接将其开源的模型down下来用。效果如下:
superhua
2022/06/13
9700
魔性!Python生成全网爆火的“蚂蚁呀嘿”
AI算法让图片动起来,特朗普和蒙娜丽莎深情合唱《Unravel》
First Order Motion,也就是一阶运动模型,来自 NeurIPS 2019 论文。
Jack_Cui
2020/08/24
1.9K0
AI算法让图片动起来,特朗普和蒙娜丽莎深情合唱《Unravel》
AI算法让图片动起来,深情演唱Unravel
项目地址:https://github.com/anandpawara/Real_Time_Image_Animation
mathor
2020/09/15
2K0
AI短视频制作一本通:文本生成视频、图片生成视频、视频生成视频
随着人工智能(AI)技术的飞速发展,视频制作领域也迎来了创新的浪潮。文本生成视频是其中的一项令人激动的进展,它利用自然语言处理技术将文本内容转化为视频。这项技术在广告、教育、娱乐等领域有着广泛的应用,可以快速生成吸引人的视频内容。
海拥
2023/11/07
1.5K0
AI短视频制作一本通:文本生成视频、图片生成视频、视频生成视频
【目标检测】视频输出体积太大?分析视频的编码与码率问题
早期电视台在传输节目信息时,由于带宽有限,于是想在带宽不变的情况下,增加图像的分辨率,让画面看起来更清晰,于是就采用隔行扫描的方式,如下图所示[1],第一帧扫描奇数行的数据,第二帧扫描偶数行的数据,交替进行。由于视觉暂留,在人眼看来就是完整的视频图像。
zstar
2023/12/19
9800
【目标检测】视频输出体积太大?分析视频的编码与码率问题
Python 通过moviepy模块实现视频的声音抽离
MoviePy是一个用于视频编辑的Python模块,它可被用于一些基本操作(如剪切、拼接、插入标题)、视频合成(即非线性编辑)、视频处理和创建高级特效。它可对大多数常见视频格式进行读写,包括GIF。
用户10733576
2024/03/15
4120
我用 Python 做了个小仙女代码蹦迪视频
https://blog.csdn.net/hhladminhhl/article/details/118463344 (AirPython整理)
昱良
2021/07/27
7930
推荐阅读
相关推荐
Python实现高级电影特效
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档