建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

HW-QGS

发帖: 257粉丝: 22

发消息 + 关注

发表于2021年03月09日 00:54:29 1578 10
直达本楼层的链接
楼主
显示全部楼层
[技术干货] 蚂蚁牙黑,我也来一个+1

根据开发者社区自己也来一个

https://mp.weixin.qq.com/s/-ZFwcdwAvJb2YSkpJS7v-A

MDG-广州 胡琦 ModelArts AI开发者社区

点击 https://marketplace.huaweicloud.com/markets/aihub/datasets/detail/?content_id=00bc20c3-2a00-4231-bdfd-dfa3eb62a46d 下载胡大大提供的数据集

一,先创建一个桶(用于储存数据,也可以理解为云存储)

图片.png

桶;名全局唯一(意思可以理解为桶名只能有一个,不能有相同的)

图片.png

创建完成

图片.png

下载

图片.png

耐心等待几分钟即可

图片.png

登陆ModelArts控制台https://www.huaweicloud.com/product/modelarts.html -> 开发环境 -> Notebook -> 创建

名称:任意设置参数:python3-公共资源池-GPU-云硬盘EVS

创建Notebook

可以选择免费的版本,但是免费的要排队哦~

图片.png

点击提交(圈起来的是重点·~)由于我买过套餐,所以显示的是0元

图片.png

图片.png

创建步骤我就直接省略了,直接启动以及创建好的,初次创建只要选择好GPU一般都不会出现什么问题,如果选择cpu可能会出现内存耗尽的问题,所以建议选择GPU~

图片.png


图片.png

测试一下是否能运行

print("huawei cloud")

图片.png


!git clone https://codehub.devcloud.cn-north-4.huaweicloud.com/ai-pome-free00001/first-order-model.git


# 此处牛刀小试--用 Moxing 下载文件
import moxing as mox

# 此处需要替换您的 OBS 地址(根据实际自己的桶地址)
mox.file.copy_parallel('obs://modelarts-lab/first-order-motion-model/first-order-motion-model-20210226T075740Z-001.zip' , 'first-order-motion-model.zip')
mox.file.copy_parallel('obs://modelarts-lab/first-order-motion-model/02.mp4' , '02.mp4')

图片.png

# 解压
!unzip first-order-motion-model.zip

图片.png

# 模版视频
!mv 02.mp4 first-order-motion-model/


切换到first-order-model目录,然后将 source_image_path中的路径替换为”您的脸”所在的路径,脸的照片可以直接通过 Notebook 的文件上传功能上传。
当然您还可以将默认的“蚂蚁呀嘿”视频替换为您自定义的视频,格式为 mp4。一路执行可以查看到合成前的预览。

cd first-order-model


图片.png

import imageio
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from skimage.transform import resize
from IPython.display import HTML
import warnings
warnings.filterwarnings("ignore")

# 此处替换为您的图片路径,图片最好为 256*256,这里默认为普京大帝
source_image_path = '/home/ma-user/work/first-order-motion-model/02.png'
source_image = imageio.imread(source_image_path)

# 此处可替换为您的视频路径,这里默认为“蚂蚁牙黑”
reader_path = '/home/ma-user/work/first-order-motion-model/02.mp4'
reader = imageio.get_reader(reader_path)


# 调整图片和视频大小为 256x256

source_image = resize(source_image, (256256))[..., :3]

fps = reader.get_meta_data()['fps']
driving_video = []
try:
    for im in reader:
        driving_video.append(im)
except RuntimeError:
    pass
reader.close()

driving_video = [resize(frame, (256256))[..., :3for frame in driving_video]

def display(source, driving, generated=None):
    fig = plt.figure(figsize=(8 + 4 * (generated is not None), 6))

    ims = []
    for i in range(len(driving)):
        cols = [source]
        cols.append(driving[i])
        if generated is not None:
            cols.append(generated[i])
        im = plt.imshow(np.concatenate(cols, axis=1), animated=True)
        plt.axis('off')
        ims.append([im])

    ani = animation.ArtistAnimation(fig, ims, interval=50, repeat_delay=1000)
    plt.close()
    return ani


HTML(display(source_image, driving_video).to_html5_video())


图片.png

图片.png

from demo import load_checkpoints
generator, kp_detector = load_checkpoints(config_path='config/vox-256.yaml'
                            checkpoint_path='/home/ma-user/work/first-order-motion-model/vox-cpk.pth.tar')

from demo import make_animation
from skimage import img_as_ubyte

predictions = make_animation(source_image, driving_video, generator, kp_detector, relative=True)

# 保存结果视频
imageio.mimsave('../generated.mp4', [img_as_ubyte(frame) for frame in predictions], fps=fps)
# 在 Notebook 根目录能找,/home/ma-user/work/

HTML(display(source_image, driving_video, predictions).to_html5_video())

图片.png

# 安装视频剪辑神器 moviepy
!pip install moviepy

# 为生成的视频加上源视频声音
from moviepy.editor import *

videoclip_1 = VideoFileClip(reader_path)
videoclip_2 = VideoFileClip("../generated.mp4")

audio_1 = videoclip_1.audio

videoclip_3 = videoclip_2.set_audio(audio_1)

videoclip_3.write_videofile("../result.mp4", audio_codec="aac")

图片.png

# 还可以给视频加水印
video = VideoFileClip("../result.mp4")
# 水印图片请自行上传
logo = (ImageClip("/home/ma-user/work/first-order-motion-model/water.png")
        .set_duration(video.duration) # 水印持续时间
        .resize(height=50# 水印的高度,会等比缩放
        .margin(right=0, top=0, opacity=1# 水印边距和透明度
        .set_pos(("left","top"))) # 水印的位置

final = CompositeVideoClip([video, logo])
final.write_videofile("../result_water.mp4", audio_codec="aac")

final_reader = imageio.get_reader("../result_water.mp4")

fps = final_reader.get_meta_data()['fps']
result_water_video = []
try:
    for im in final_reader:
        result_water_video.append(im)
except RuntimeError:
    pass
reader.close()
result_water_video = [resize(frame, (256256))[..., :3for frame in result_water_video]
HTML(display(source_image, driving_video, result_water_video).to_html5_video())




我自己调用了它自己里面的一张图片来测试

图片.png

/home/ma-user/work/first-order-motion-model/doll-07.png

图片.png






视频

举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

yyy7124

发帖: 162粉丝: 3

发消息 + 关注

发表于2021年03月09日 08:12:19
直达本楼层的链接
沙发
显示全部楼层

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

@Wu

发帖: 150粉丝: 7

发消息 + 关注

发表于2021年03月09日 08:18:19
直达本楼层的链接
板凳
显示全部楼层

你们都好快,我文章写好了,视频还没录完。。

评论
HW-QGS 2021-3-9 09:00 评论

就等你教学视频了

... 查看全部
@Wu 2021-3-9 09:03 评论

评论 HW-QGS:中午看看能不能抽时间录一下,还要找小伙伴加字幕。

... 查看全部
HW-QGS 2021-3-9 09:24 评论

评论 @Wu:加字幕,复制粘贴

... 查看全部
点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复
发表于2021年03月09日 08:39:11
直达本楼层的链接
地板
显示全部楼层

厉害 厉害 学习到了

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

山海之光

发帖: 1粉丝: 29

发消息 + 关注

发表于2021年03月09日 09:23:16
直达本楼层的链接
5#
显示全部楼层

666

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

HW-QGS

发帖: 257粉丝: 22

发消息 + 关注

发表于2021年03月10日 17:07:32
直达本楼层的链接
6#
显示全部楼层

冲冲冲