本文是第一篇端到端使用神经网络来进行视频压缩的论文,

github地址:GitHub - GuoLusjtu/DVC: DVC: An End-to-end Deep Video Compression Framework, CVPR 2019 (Oral)

论文地址:https://arxiv.org/pdf/1812.00101.pdf

各个领域的第一篇,还是值得精读的~

本文最大的贡献有两点:

1,整个视频压缩框架都由神经网络完成,并能统一训练

2,损失函数考虑了率失真和压缩率,前者表示压缩恢复后视频的质量情况,后者表示压缩比

摘要

传统的视频压缩方法使用预测的编码结构,并对相应的运动信息和残差信息进行编码。本文,利用了传统视频压缩方案的经典架构和神经网络的非线性表示能力,提出了第一个端到端的视频压缩深度模型 并且同时对视频压缩的所有模块网络进行统一优化。特别的,使用光流估计网络得到运动信息并对当前帧进行重建,然后利用两个自编码器来压缩运动和残差信息。所有的模块使用一个损失函数联合训练,该损失函数同时考虑了压缩比和解码视频的质量,实验表明提出的方法超过了传统视频编码标准H.264 并且在ms-ssim损失函数上优化的模型可以和H.265相当。

1. 简介

如今,视频占据了互联网流量的80%,并且该比例还在逐步提升,因此,在有限的带宽负荷下 建立一个有效的视频压缩系统并且生成更高质量的视频帧尤为重要。此外,大多数视频相关的机器视觉任务比如视频目标检测和视频的目标追踪对压缩后的视频质量非常敏感,有效的视频压缩会对视觉任务更有益。此外,视频压缩技术对行为识别和模型压缩也有益处。

然而,在过去的几十年,视频压缩算法依赖于手动设计的模块,比如基于块的运动估计和离散余弦变换DCT,为了减少视频冗余,每个模块精心设计,整体的压缩系统不是端到端进行优化的,可以通过优化整个压缩系统来进一步提升压缩性能。

近年来,基于深度学习模型DNN的自编码器用于图像压缩领域,并且超过了传统编码性能比如JPEG,JPEG2000,BPG。一个可能的解释是基于DNN的图像压缩方法可以利用大尺度端到端的训练和高度非线性表示能力,这些都是传统方法不具备的。

不过,直接利用这些技术来进行视频压缩也是重要的。首先,生成和压缩视频压缩框架中的运动信息依然是一个开放的问题。视频压缩方法严重依赖于运动信息来减少视频序列的时间冗余,一个直观的解决方案是使用光流来表示运动信息,不过,当前的基于光流的方法目的是尽可能准确的生成光流场。但是,精确的光流对于特定视频任务不是最优的。此外,当和传统压缩系统的运动信息对比时光流数据量增长明显,并且直接应用现存的压缩方法来压缩光流值将明显增大运动信息存储的比特。第二,如何建立一个基于DNN的视频压缩系统来最小化残差和运动信息的率失真还不明朗,率失真优化(RDO)目的是当压缩的比特量给定时获取更高质量的重建帧,RDO对于视频压缩性能很重要。为了利用压缩系统端到端训练的能力,RDO的策略是优化整个系统。

本文中,提出了第一个端到端的深度视频压缩模型DVC联合训练运动估计、运动压缩和残差压缩。网络的优势可以总结如下:

  • 视频压缩的所有组件,如运动估计、运动补偿、残差压缩、运动压缩、量化和比特率估计、均应用到了端到端的神经网络中;
  • 视频压缩的关键是通过一个损失函数进行基于RDO的联合优化,目的是更高的压缩性能;
  • 传统视频压缩方法中的组件都可以对应到DVC模型中,这项工作也给未来的研究者提供了思路,比如更好的光流估计模型和图像压缩模型可以很容易的嵌入到本框架中。

2. 相关工作

2.1. 图像压缩

近几十年提出了大量的图像压缩算法,这些方法强依赖人工设计,比如JPEG使用DCT将像素映射到另一个空间表征,并在熵编码之前进行系数量化。一个优势是这些模块是分开优化的 也许不会获得最优的压缩性能。

最近,基于DNN的图像压缩方法获取了越来越多的关注。文献[34][35][19]利用RNN建立了图像压缩框架,文献[11][12][33]利用CNN设计了自编码器网络用于图像压缩。为了优化神经网络,这些文献[34][35][19] 仅仅尝试最小化原始帧和重建帧之间的形变(均方误差), 但是它们并没有考虑压缩视频所占字节量,率失真优化技术在文献[11][12][33][21]中通过引入优化过程的字节数来用于更高的压缩效率。

2.2. 视频压缩

过去的几十年,有若干传统视频压缩算法提出,比如H.264和H.265,大多数算法遵循预编码结构。尽管提供了高效的压缩性能,他们依然需要人工设计并且无法端到端的联合优化。

视频领域,大量的DNN方法用来进行帧内预测和残差编码、模式决策、熵编码和后处理。这些方法可以用来提升传统视频压缩算法的性能,而不是建立一个端到端的压缩框架。文献[14]中,Chen提出基于块的视频压缩方法。此外,使用传统方法进行运动估计。Tsai 提出自编码器对H.264残差进行压缩,这项工作的运动估计、运动补偿和运动压缩并没有使用深度模型。

最新的相关工作是基于RNN的方法[40],其中视频压缩被看作为帧插值工作,不过,该方法中的运动信息也通过传统运动估计模块生成。换句话说,运动的估计和压缩并不是深度学习模型完成的。此外,文献[40]中的视频编码只是为了最小化原始帧和重建帧之间的形变误差,而没有考虑训练过程中的率失真。作为对比,在我们的网络中,训练完整的压缩系统同时考虑到了率失真。

2.3. 运动估计

运动估计是视频压缩系统的关键部分,传统视频编码使用基于块的运动估计算法[39],对硬件更友好。

在计算机视觉任务中,光流广泛应用来获取图像间的时序关系,最近,大量的光流估计方法[15]27[32][17][18]提出。这些方法激发我们加入光流估计。相比现存的视频压缩方法中基于块的运动估计方法,光流法可以提供像素级精确的运动信息,也可以使用端到端的方式优化。不过,通过使用传统视频压缩方法对运动信息进行光流编码需要更大的存储量。

3. 提出的方法

符号介绍

V = {,,...,,...}  指原始视频序列,

 , , 分别指时刻t 的原始帧,预测帧,解码/重建帧,

是残差原始帧和预测帧之间的残差,

  表示最终的解码残差,

为了去除视频帧间的时序冗余,使用基于光流估计的像素级的运动向量,

分别指时刻t 的原始运动向量或者光流值,解码/重建运动向量,

线性和非线性变换可以用来提升压缩效率,

因此,残差转换为, 运动信息转化为 是相应的量化版本,

 分别对应的量化版本,

3.1 视频压缩简介

本节中,对视频压缩进行简单的介绍,更多的细节参考文献[39][31],视频压缩编码器基于当前帧生成比特流。解码器对接收的比特流重建视频帧,图2 中蓝色模块没有包含在解码侧

图2a是经典的视频压缩框架。输入帧拆分为一系列的块,比如正方形块,大小8*8,传统视频压缩算法的编码过程如下所示:

步骤1:运动估计。当前帧和上一时刻的重建帧进行运动估计,获得对应每一个块的运动向量

步骤2:运动补偿。

深度学习视频压缩1—DVC: An End-to-end Deep Video Compression Framework相关推荐

  1. 深度学习视频压缩3——M-LVC: Multiple Frames Prediction for Learned Video Compression

    <M-LVC: Multiple Frames Prediction for Learned Video Compression> 代码:https://github.com/Jianpi ...

  2. 解密最接近人脑的智能学习机器——深度学习及并行化实现,最全的Deep Learning解析

    摘要: 深度学习可以完成需要高度抽象特征的人工智能任务,如语音识别.图像识别和检索.自然语言理解等.深层模型是包含多个隐藏层的人工神经网络,多层非线性结构使其具备强大的特征表达能力和对复杂任务建模能力 ...

  3. 论文笔记30 -- (视频压缩)【CVPR2021】FVC: A New Framework towards Deep Video Compression in Feature Space

    <FVC: A New Framework towards Deep Video Compression in Feature Space> CVPR 2021 的一篇Oral 提出了特征 ...

  4. 走进深度学习:一文带你深入了解Deep Learning算法

    2020-05-02 17:00:00 全文共4028字,预计学习时长13分钟 图源:towardsdatascience 深度学习.机器学习.人工智能--你可能常常见到这些词一起出现,然而它们之间是 ...

  5. Homepage Machine Learning Algorithm 浅谈深度学习中的激活函数 - The Activation Function in Deep Learning

    原文地址:http://www.cnblogs.com/rgvb178/p/6055213.html 版权声明:本文为博主原创文章,未经博主允许不得转载. 激活函数的作用 首先,激活函数不是真的要去激 ...

  6. 异常检测中的浅层模型与深度学习模型综述(A Unifying Review of Deep and Shallow Anomaly Detection)

    A Unifying Review of Deep and Shallow Anomaly Detection 异常检测中的浅层模型与深度学习模型综述 摘要:随着众多异常检测方法(基于生成模型,单分类 ...

  7. 深度学习性能提升的诀窍 How To Improve Deep Learning Performance

    原文: How To Improve Deep Learning Performance  作者: Jason Brownlee  翻译: KK4SBB 责编:何永灿 克服过拟合和提高泛化能力的20条 ...

  8. 浅谈深度学习中的激活函数 - The Activation Function in Deep Learning

    原文地址:http://www.cnblogs.com/rgvb178/p/6055213.html 版权声明:本文为博主原创文章,未经博主允许不得转载. 激活函数的作用 首先,激活函数不是真的要去激 ...

  9. 深度学习文本分类文献综述(翻译自Deep Learning Based Text Classification: A Comprehensive Review)

    深度学习文本分类文献综述 摘要 介绍 1. 文本分类任务 2.文本分类中的深度模型 2.1 Feed-Forward Neural Networks 2.2 RNN-Based Models 2.3 ...

最新文章

  1. *** Procedure 存储过程 ***
  2. 自定义eachFile遍历文件夹文件
  3. Spring Cloud学习系列第六篇【分布式配置中心】
  4. HDOJ 1143 Tri Tiling
  5. 翻译《Writing Idiomatic Python》(五):类、上下文管理器、生成器
  6. 常用PHP数组函数总结
  7. php mysql 复制数据库表结构图_MySQL_Mysql复制表结构、表数据的方法,本文给大家分享了好几种复制 - phpStudy...
  8. 百度推广为什么出现在右侧
  9. 防止数据中心停机需要采取什么措施
  10. IOS开发 ios7适配
  11. JSpider(4):Tasks,EventsVisitors
  12. PAT 1032 (未完成)
  13. Scrapy架构及其组件之间的交互
  14. 仿真工具NS3的基本知识
  15. 驻点(稳定点,临界点,要求平滑) 极值点 拐点 保号性及证明
  16. LiberoIP核使用——CoreSPI
  17. LeetCode不浪费原料的汉堡制作方案
  18. python windows 下设置文件锁、多线程
  19. JAVA-打印星号三角形
  20. 扫码进入微信小程序使用WIFI进行UDP通信发送消息

热门文章

  1. c语言外部中断按三次LED灯亮,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
  2. 【干货#002】小程序开发最佳图标库:阿里图标库
  3. (二)MyBatis
  4. js 文件 使用c标签
  5. 中兴进入“赵先明时间” 号称要放大招重回前三
  6. Flex4 css中skin设置报错解决
  7. Android 华为 桌面图标适配(显示未读数目)
  8. 细数STM32F103的那些坑
  9. android texturevideoview 缓存,TextureView实现VideoView
  10. html5脸型捕捉,八种脸型所暗藏的运势