1 介绍环节
昨天那篇写的是:航拍+AI︱极简的视频风格迁移体验 是把航拍的风景图进行整体的风格迁移,不过从成片效果来看,太过于超现实。 本篇是想考量局部的风格迁移,使用的是paddlepaddle开源的一款模型,PaddleHub 中的SkyAR,源教程为:SkyAR:一键完成视频魔法换天,不得不说,paddle开源了很多有意思的项目,值得玩一下。 先来看看,SkyAR可以实现的效果
原视频图:
改编视频图:
SkyAR 是一种用于视频中天空置换与协调的视觉方法,该方法能够在风格可控的视频中自动生成逼真的天空背景。
该算法是一种完全基于视觉的解决方案,它的好处就是可以处理非静态图像,同时不受拍摄设备的限制,也不需要用户交互,可以处理在线或离线视频。
算法主要由三个核心组成:
- 天空抠图网络(Sky Matting Network):就是一种 Matting 图像分隔,用于检测视频帧中天空区域的视频,可以精确地获得天空蒙版。
- 运动估计(Motion Estimation):恢复天空运动的运动估计器,使生成的天空与摄像机的运动同步。
- 图像融合(Image Blending):将用户指定的天空模板混合到视频帧中。除此之外,还用于重置和着色,使混合结果在其颜色和动态范围内更具视觉逼真感。
实现起来蛮简单的,核心代码如下:
import paddlehub as hub
# 加载模型
model = hub.Module(name='SkyAR')
# 魔法换天
# video_path:输入视频路径
# save_path:输出视频路径
model.MagicSky(
video_path='test_videos/canyon.mp4',
save_path='save_videos/jupiter.mp4'
)
还可以预设一些图片进行风格迁移,源代码里面有非常多有用的模块,等笔者有空了,再慢慢把“零件”拆出来了。 笔者遇到一个问题,输出的视频是无声的,如何结合原片加上声音,翻了一下paddlepaddle果真有,贴一下方案:
from moviepy.editor import *
# 从原始视频上提取声音合成到新生成的视频上
def sound2video(org_video_path, new_video_path, out_video_path):
# 读取原始视频
video_o = VideoFileClip(org_video_path)
# 获取原始视频的音频部分
audio_o = video_o.audio
# 读取新生成视频
video_clip = VideoFileClip(new_video_path)
# 指向新生成视频的音频部分
video_clip2 = video_clip.set_audio(audio_o)
# 修改音频部分并输出最终视频
video_clip2.write_videofile(out_video_path)
2 成片环节
主角还是昨天的:震撼大片!大疆御air延时航拍
2.1 木星环绕
还是有一种大片的既视感的
2.2 宇宙飞船
影片开头我觉得效果很炸场,但是后面宇宙飞船基本没有了;主要是后面一些图片,被识别为天空的部分比较少,所以后面几秒钟的成片效果有待改进。
2.3 漂浮城堡
|