『蚂蚁呀嘿』的实现--PaddleGAN表情动作迁移-初体验

该博客介绍了如何使用PaddleGAN中的FirstOrderMotionmodel进行表情动作迁移,通过源图片和驱动视频生成新的视频。只需在同类别数据集上训练模型,无需复杂的人脸关键点标注。作者提供了详细的实现步骤,包括代码下载、依赖安装、模型应用和视频编辑,最终将声音添加到结果视频中。
摘要由CSDN通过智能技术生成

『蚂蚁呀嘿』的实现–PaddleGAN表情动作迁移

写在前面-开源项目

{card-default width=“100%” label="『蚂蚁呀嘿』"}全网都在求的「蚂蚁呀嘿」教程–基于PaddleGAN的First order motion model实现{/card-default}

根据项目文档一步步实现:

First Order Motion model原理

First Order Motion model的任务是image animation,给定一张源图片,给定一个驱动视频,生成一段视频,其中主角是源图片,动作是驱动视频中的动作,源图像通常包含一个主体,驱动视频包含一系列动作。

通俗来说,First Order Motion能够将给定的驱动视频中的人物A的动作迁移至给定的源图片中的人物B身上,生成全新的以人物B的脸演绎人物A的表情的视频。

以人脸表情迁移为例,给定一个源人物,给定一个驱动视频,可以生成一个视频,其中主体是源人物,视频中源人物的表情是由驱动视频中的表情所确定的。通常情况下,我们需要对源人物进行人脸关键点标注、进行表情迁移的模型训练。

但是这篇文章提出的方法只需要在同类别物体的数据集上进行训练即可,比如实现太极动作迁移就用太极视频数据集进行训练,想要达到表情迁移的效果就使用人脸视频数据集voxceleb进行训练。训练好后,我们使用对应的预训练模型就可以达到前言中实时image animation的操作。

以下操作可以在控制台运行

下载PaddleGAN代码

# 从github上克隆PaddleGAN代码
!git clone https://gitee.com/paddlepaddle/PaddleGAN
# 安装所需安装包
cd PaddleGAN/
pip install -r requirements.txt
pip install imageio-ffmpeg
cd applications/
mkdir output

期间会遇到很多问题

1.包安装不上-多换源多安装几次
2.paddle安装报错No module named ‘paddle’ || paddlepaddle安装
3.其他包报错问题Cannot uninstall ‘llvmlite’ || Error #15: Initializing libiomp5.dylib

实现步骤

根据说明文档很容易制作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-apLCcZWK-1640510694444)(https://xiaole.website/usr/uploads/2021/03/3380712713.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SnUMkJ5T-1640510694472)(https://xiaole.website/usr/uploads/2021/03/696639557.png)]

操作记录

[控制台操作记录][6]

# 加入声音
import cv2
import imageio
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from IPython.display import HTML
import warnings

# video display function





from moviepy.editor import *

videoclip_1 = VideoFileClip(r"D:\feil\paddlepaddle-PaddleGAN-master\work\PaddleGAN\src\fullbody.MP4")
videoclip_2 = VideoFileClip(r"D:\feil\paddlepaddle-PaddleGAN-master\work\PaddleGAN\applications\output\result.mp4")

audio_1 = videoclip_1.audio

videoclip_3 = videoclip_2.set_audio(audio_1)

videoclip_3.write_videofile("./output/daqiang_unravel.mp4", audio_codec="aac")
def display(driving, fps, size=(8, 6)):
    fig = plt.figure(figsize=size)

    ims = []
    for i in range(len(driving)):
        cols = []
        cols.append(driving[i])

        im = plt.imshow(np.concatenate(cols, axis=1), animated=True)
        plt.axis('off')
        ims.append([im])

    video = animation.ArtistAnimation(fig, ims, interval=1000.0/fps, repeat_delay=1000)

    plt.close()
    return video

video_path = './output/daqiang_unravel.mp4'
video_frames = imageio.mimread(video_path, memtest=False)

# 获得视频的原分辨率
cap = cv2.VideoCapture(video_path)
fps = cap.get(cv2.CAP_PROP_FPS)

软件推荐

苹果-安卓app

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值