航拍+AI︱paddlepaddle图像分割实现天空风格迁移(换天漂浮城堡宇宙飞船)

Posted 悟乙己

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了航拍+AI︱paddlepaddle图像分割实现天空风格迁移(换天漂浮城堡宇宙飞船)相关的知识,希望对你有一定的参考价值。

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 漂浮城堡

以上是关于航拍+AI︱paddlepaddle图像分割实现天空风格迁移(换天漂浮城堡宇宙飞船)的主要内容,如果未能解决你的问题,请参考以下文章

Python 深度学习AI - 利用训练好的模型库进行图像分割一键抠图实例演示,百度深度学习平台飞浆paddlepaddle-gpu的安装与使用

Python 深度学习AI - 利用训练好的模型库进行图像分割一键抠图实例演示,百度深度学习平台飞浆paddlepaddle-gpu的安装与使用

AI 快车道目标检测专场, PaddlePaddle “深度干货”

PaddlePaddle发布基于Docker的AI系统开发流程

一块GPU就能训练语义分割网络,百度PaddlePaddle是如何优化的?

一块GPU就能训练语义分割网络,百度PaddlePaddle是如何优化的?