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

news/2024/11/15 2:33:14/

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

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 = {^{x_{1}},^{x_{2}},...,^{x_{t}},...}  指原始视频序列,

{x_{t}} ,\bar{x_{t}} ,\hat{x_{t}} 分别指时刻t 的原始帧,预测帧,解码/重建帧,

{r_{t}}是残差原始帧{x_{t}}和预测帧\bar{x_{t}}之间的残差,

\hat{r_{t}}  表示最终的解码残差,

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

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

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

因此,残差{r_{t}}转换为\dpi{120} {y_{t}}, 运动信息{v_{t}}转化为{m_{t}}\hat{y_{t}}\hat{m_{t}} 是相应的量化版本,

\hat{y_{t}}\hat{m_{t}} 分别对应{y_{t}}{m_{t}}的量化版本,

3.1 视频压缩简介

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

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

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

步骤2:运动补偿。


http://www.ppmy.cn/news/910476.html

相关文章

PA-DVC-D24-1000 PA-SVC-D24-1500最大输出电流可调比例放大器

控制不带电气位移反馈的单双电磁铁比例线圈; 输入电压为差动输入; 高精度,低温度漂移; PWM调制,负反馈恒流控制; 非对称斜坡时间(上升和下降时间独立可调);调制频率可调; 共信号地和电源地。 保护电路齐全(电源反接保护&…

论文笔记24 -- (视频压缩)【CVPR2019】DVC: An End-to-end Deep Video Compression Framework

《DVC: An End-to-end Deep Video Compression Framework》 论文:点这里 原作代码:点这里 TensorFlow开源实现:OpenDVC Guo Lu, Wanli Ouyang, Dong Xu, Xiaoyun Zhang, Chunlei Cai, Zhiyong Gao CVPR 2019 (Oral) DVC是首个端到端的深度学…

Python 和 DVC 进行 git 版本控制

大家好,我是Mr数据杨,设想我们正准备上演一出《三国演义》,需要设置工作环境。就像古代的诸侯需要配置自己的军队和物资。在数据的世界里需要准备数据和代码,这就如同筹备兵马和粮草。 跟踪文件并上传,就像各诸侯的斥…

DVCS

http://www.idnovo.com.cn/zhizao/2012/0724/article_13495.html http://www.gongkong.com/company/solution/2012062510034000001.htm http://www.chuandong.com/publish/application/2012-6/20467.html

DVC 官网教程-中文版

为什么选择 DVC? 即使我们今天在机器学习方面取得了巨大的成功,特别是在深度学习及其在商业中的应用方面;但是,数据科学家仍然缺乏组织项目和有效协作的最佳实践。 这是一个关键挑战:虽然 ML 算法和方法不再是部落知识…

AcWing 106. 动态中位数—对顶堆

问题链接 AcWing 106. 动态中位数 问题描述 分析 推荐b站董晓算法视频讲解对顶堆 这道题应该用树状数组、平衡树也能解决,这里用对顶堆来做,对顶堆能够用维护第K位置的数,K是固定的,在这道题中,维护两个堆&#xff…

DVC 的使用

DVC 的基本使用 DVC (Data Version Control) 数据版本管理工具。DVC 类似于常用到的git代码管理工具。但 git 在工程中往往只是针对代码进行管理,换句话说就是对小文件进行管理,而 DVC 则解决了 git 的这个短板,它可以对工程中的大文件&…

端到端视频编码:DVC

本文来自CVPR 2019论文《DVC: An End-to-end Deep Video Compression Framework》 官方开源代码地址:https://github.com/GuoLusjtu/DVC DVC是一个端到端的视频编码模型,之前也有过一些基于DNN的视频编码方法,但是通常是使用DNN模型替换视频…