Super SloMo神经网络生成极慢视频(PyTorch实现)

文章目录:

  • 一、论文相关介绍
    • 1、论文相关地址
    • 2、高速视频实现慢放的方式
    • 3、Super SloMo生成中间帧的时间消耗
  • 二、Super SloMo实现原理
    • 1、引言介绍
    • 2、Super SloMo论文原理
  • 三、 代码实现
    • 1、github上的开源实现

英伟达团队CVPR-18论文Super SloMo使用深度学习,能将任意视频变为“高清慢速播放”模式,论文作者称,他们能将30FPS(画面每秒帧数)的视频变为480FPS,也即每秒帧数增加了16倍。从此不再错过任何细节。前阵子有人开源了PyTorch实现,赶紧来试试吧!


一、论文相关介绍

1、论文相关地址

  • 论文地址:https://arxiv.org/pdf/1712.00080.pdf
  • 项目的主页地址:https://people.cs.umass.edu/~hzjiang/projects/superslomo/
  • 项目的github代码实现:https://github.com/avinashpaliwal/Super-SloMo
  • 相关介绍文章:https://mp.weixin.qq.com/s/ZX2Je2gfzvu5sKbLIWIwVA

2、高速视频实现慢放的方式

图片居中文字

这里所说的慢放是对高速视频

  1. 高速摄像机

慢速回放的前提,是摄像机一开始就捕捉到了这些细节。高速摄像机可以捕捉到更多的帧率,当然也就可以实现慢放。如今,一些大型体育赛事已经用上了工业高速摄像头,为的就是在裁判的裁决引发争议时,可以用慢镜头回放来判定结果。

但是,没有专业的高速摄像头怎么办?

  1. 通过预测中间视频帧预测补全(插帧)

这项被称为Super SloMo的工作,使用深度神经网络,对视频中缺失的帧进行预测并补全,从而生成连续慢速回放的效果。

更赞的是,他们提出的方法,能够排除原视频帧当中被遮挡的像素,从而避免在生成的内插中间帧里产生模糊的伪像(artifact)

感受一下Super-SloMo生成的“慢速回放”效果

注意,左右两边都是Super SloMo生成的视频。左边是原始慢速视频,右边是将这个结果再放慢4倍的效果,如果不告诉你中间的细节(帧)是神经网络生成的,你会不会把它们当做真的慢速回放?来源:Huaizu Jiang个人主页

实际用手机拍摄的画面是这样的,对比后,意识到Super SloMo补充多少细节了吗?

3、Super SloMo生成中间帧的时间消耗

根据Super SloMo项目主页,作者表示,使用他们未经优化的PyTorch代码,在单个NVIDIA GTX 1080Ti 和 Tesla V100 GPU上,生成7个分辨率为1280*720的中间帧,分别只需要0.97秒和0.79秒。(补充说明:从标准序列30-fps生成240-fps视频,一般需要在两个连续帧内插入7个中间帧。)

估算一下 :
显卡:1080Ti
时长:1 分钟
帧率:30fps
分辨率:1280*720(1080P的高清视频)


生成240帧需要的时间:
每秒从30fps插帧到240帧,插入210帧,210fps/7fp=30s
合成一分钟的视频需要的总时间 Time = 60*30 s = 1800 s = 30 min

二、Super SloMo实现原理

除了专业的高速摄像机尚未普及到每个人手里,人们用手机拍摄的视频 (一般为240FPS) 想要放慢的时刻是不可预测的,要实现这一点就不得不用标准帧速率来记录所有视频,但这样做需要的内存过大,对移动设备来说耗电量也花不起。

所以我们可以通过软件的方式来解决这个问题,下面来看看Super SloMo实现原理

1、引言介绍

  1. 生成好的中间视频帧要实现两点
  • 正确解释两个输入图像之间的运动(隐式或显式)

  • 要理解遮挡 (occlusion)。 否则,就可能导致插值帧中产生严重的伪像,尤其是在运动边界附近。

  1. 递归地应用单帧视频插值(当前方法的局限)

虽然递归地应用单帧视频插值方法生成多个中间帧是一个很不错的想法,但这种方法至少有两个限制:

  • 递归单帧插值不能完全并行化,速度较慢,因为有些帧是在其他帧完成后才进行计算的(例如,在七帧插值中,帧2取决于0和4,而帧4取决于0和8)。
  • 它只能生成2i-1个中间帧。因此,不能使用这种方法有效生地生成1008 - fps 24帧的视频,这需要生成41中间帧。

2、Super SloMo论文原理

论文 Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Interpolation 提出了一种高质量的变长多帧插值方法,该方法可以在两帧之间任意时间步长进行插值。

Super SloMo效果展示:注意在放慢过渡区域对伪像的处理

其主要思想是,将输入的两幅图像扭曲到特定的时间步长,然后自适应地融合这两幅扭曲图像,生成中间图像,其中的运动解释和遮挡推理在单个端到端可训练网络中建模。

具体来说,首先使用流量计算CNN来估计两幅输入图像之间的双向光流,然后线性融合来近似所需的中间光流,从而使输入图像发生扭曲。这种近似方法适用于光滑区域,但不适用于运动边界。

因此,Super SloMo 论文作者使用另一个流量插值CNN来细化流近似并预测软可见性图。

通过在融合之前将可见性图应用于变形图像,排除了被遮挡像素对内插中间帧的贡献,从而减少了伪像。

Super SloMo网络架构

“我们的流计算和插值网络的参数都独立于被插值的具体时间步长,是流插值网络的输入。因此,我们的方法可以并行生成任意多的中间帧。”作者在论文中写道。

为了训练该网络,团队从YouTube和手持摄像机收集了240-fps的视频。总量有1.1K视频剪辑,由300K个独立视频帧组成,典型分辨率为1080×720。

然后,团队在其他几个需要不同插值数量的独立数据集上评估了训练模型,包括Middlebury 、 UCF101 、慢流(slowflow)数据集和高帧率(high-frame-rate) MPI Sintel。

实验结果表明,该方法明显优于所有数据集上的现有方法。 团队还在KITTI 2012光流基准上评估了无监督(自监督)光流结果,并获得了比现有最近方法更好的结果。

三、 代码实现

1、github上的开源实现

有人在 Github 上开源了他对 Super-SloMo 的 PyTorch 实现。这位ID为atplwl的Reddit用户,在作者提供的adobe24fps数据集上预训练的模型(下图中pretrained mine),实现了与论文描述相差无几的结果。

github的实现地址:https://github.com/avinashpaliwal/Super-SloMo




♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

Super SloMo神经网络生成极慢视频(PyTorch实现)相关推荐

  1. NVIDIA团队:利用神经网络生成极慢视频

    NVIDIA团队:利用神经网络生成极慢视频 总有那么一些细节,你瞪大双眼拼了命想看清却依然奈不了何,比如下面这个: 跟得上球吗?要看清男子羽毛球比赛的细节实在不容易 有时候想盯住飞来飞去的羽毛球,非常 ...

  2. Super SloMo:用神经网络脑补超级慢动作

    如今,人们对于视频帧率的追求越来越高,因为高帧率视频更加顺滑.流畅,能极大地提升人们的观看体验. 现有相机拍摄的视频帧率,也从 25 FPS(Frames Per Second) 不断提升到 60 F ...

  3. 神经网络学习小记录52——Pytorch搭建孪生神经网络(Siamese network)比较图片相似性

    神经网络学习小记录52--Pytorch搭建孪生神经网络(Siamese network)比较图片相似性 学习前言 什么是孪生神经网络 代码下载 孪生神经网络的实现思路 一.预测部分 1.主干网络介绍 ...

  4. 神经网络学习小记录50——Pytorch 利用efficientnet系列模型搭建yolov3目标检测平台

    神经网络学习小记录50--Pytorch 利用efficientnet系列模型搭建yolov3目标检测平台 学习前言 什么是EfficientNet模型 源码下载 EfficientNet模型的实现思 ...

  5. 借助深度卷积神经网络对图片 GIF 视频进行超分辨率放大(即放大与降噪) 以及 对视频进行 插帧(即补帧).

    借助深度卷积神经网络对图片 & GIF & 视频进行超分辨率放大(即放大与降噪) 以及 对视频进行 插帧(即补帧). 软件下载地址:下载地址 界面效果: 处理效果: 图像清晰化 图像放 ...

  6. 腾讯多媒体实验室:基于三维卷积神经网络的全参考视频质量评估算法

    腾讯有多个视频业务线,点播视频有腾讯视频.企鹅影视,短视频有微视.K歌,直播类有Now直播.企鹅电竞,实时传输类有QQ和微信的音视频通话.无线投屏和腾讯会议等. 用户对不同的产品有不同程度的期待:比如 ...

  7. 神经网络学习小记录69——Pytorch 使用Google Colab进行深度学习

    神经网络学习小记录69--Pytorch 使用Google Colab进行深度学习 注意事项 学习前言 什么是Google Colab 相关链接 利用Colab进行训练 一.数据集与预训练权重的上传 ...

  8. 经典CNN卷积神经网络发展史+论文+网络实现(PyTorch)

    网络搭建目录: Lenet 学习笔记 pytorch官方demo代码复现_放风筝的猪的博客-CSDN博客 AlexNet网络结构详解与代码复现_放风筝的猪的博客-CSDN博客 VGG网络结构详解与代码 ...

  9. 9 大主题卷积神经网络(CNN)的 PyTorch 实现

    Datawhale干货 作者:红色石头,北京大学,Datawhale伙伴 大家还记得这张图吗? 之前,红色石头发文介绍过一份很不错的资源: 52 个深度学习目标检测模型汇总,论文.源码一应俱全! 深度 ...

最新文章

  1. iOS环信聊天界面中点击头像和消息的几种状态
  2. 以太网迎新增长 专家眼中的车载以太网及AVB技术
  3. 九维 Addon for SBO 功能说明及新版软件下载
  4. RabbitMQ 3.6 安装
  5. js操作元素节点对象innerHTML
  6. linux识别fat16还是32,FAT16 、FAT32 、NTFS、LINUX区别.doc
  7. upplemental Logging
  8. 基于智能的网络空间安全防御
  9. 改变文件权限的用户身份
  10. Angular v6 正式发布
  11. C++面试题-面向对象-多态性与虚函数
  12. OpenGL 坐标变换(1)
  13. Kicad快捷键大全
  14. Linux文件压缩,解压常用命令
  15. iOS开发UI篇—控制器的创建
  16. 名言名人2008-11-22
  17. 如何使用Python提取pdf表格及文本,并保存到excel
  18. MTK 手机支持3D
  19. 使用ns2仿真ping
  20. python的一些技巧操作,提高编码效率

热门文章

  1. python里的类与一切事物都是对象
  2. LPC1768外部中断与GPIO中断
  3. shell的一些常识
  4. PLSQL的DBMS_GETLINE
  5. USACO 2.3.3 罗马数字
  6. Android模拟器访问pc与网络的问题
  7. Jquery高亮显示文本中重要的关键字
  8. python在化学方面的应用-学材料、化学的要不要担心人工智能抢了自己的饭碗?...
  9. python项目-python项目
  10. python画三维立体图-Python 竟能绘制出如此酷炫的三维图