视频压缩:谷歌基于GAN实现

2023-11-08 06:30
文章标签 实现 谷歌 gan 视频压缩

本文主要是介绍视频压缩:谷歌基于GAN实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

机器之心编译  编辑:陈萍

来自谷歌的研究者提出了一种基于生成对抗网络 (GAN) 的神经视频压缩方法,该方法优于以前的神经视频压缩方法,并且在用户研究中与 HEVC 性能相当。

通常,视频压缩的目标是通过利用时间和空间冗余来降低存储视频所需的比特率,同时保留视觉内容,目前广泛使用的方法是非神经标准编解码器(例如 H.264/AVC 、H.265/HEVC)。一些研究表明,神经网络在学习视频压缩方面取得了更好的进展,最新的方法在峰值信噪比(PSNR)方面可以与 HEVC 相媲美,或者在 MS-SSIM 方面优于 HEVC。然而,因为很少有研究者发布重制后的视频,这些方法尚未在主观视觉质量方面进行评估。

来自谷歌的研究者提出了一种基于生成对抗网络 (GAN) 的神经视频压缩方法,该方法优于以前的神经视频压缩方法,并且在用户研究中与 HEVC 性能相当。研究者提出了减少时间累积误差的方法,该累积误差由递归帧压缩引起,该方法使用随机移位和非移位,由频谱分析驱动。论文详细介绍了网络设计的选择以及重要性,并阐述了在用户研究中评估视频压缩方法的挑战。

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

本文主要贡献包括:

  • 该研究提出了首个在视觉质量方面与 HEVC 具有竞争性的神经压缩方法,这是在用户研究中衡量的。研究表明,在 PSNR 方面具有竞争力的方法在视觉质量方面的表现要差得多;

  • 该研究提出了一种减少展开时时间误差累积的技术,该技术通过随机移动残差输入,然后保持输出不变,激励频谱分析,研究表明该技术在系统和 toy 线性 CNN 模型中具备有效性;

  • 该研究探索了由用户研究测量的视觉质量与可用视频质量指标之间的相关性。为了促进未来的研究,研究者发布了对 MCL-JCV 视频数据集的重建以及从用户研究中获得的所有数据(附录 B 中的链接)。

研究方法

下图为该研究使用的网络架构,其中 x = {x_1, x_2, . . . } 为帧序列,x_1 为初始帧 (I)。该研究在低延迟模式下操作,因此可以从先前的帧中预测后续 (P) 帧,设是重建视频。

灰色框是中间张量的可视化结果。灰线左侧是 I-frame 分支(蓝色代表用 CNN 学习),右侧是 P-frame 分支(绿色代表用 CNN 学习)。虚线在解码期间没有被激活,判别器 D_I、D_P 仅在训练期间激活。CNN 的大小粗略地表明了它们的容量。SG 是停止梯度操作,Blur 是尺度空间模糊,Warp 是双三次扭曲, UFlow 是冻结光流模型。

研究者采用以下策略来获得高保真重建视频:

  • 在 I-frame 中合成可信的细节;

  • 尽可能清晰地传递这些可信细节;

  • 对于出现在 P-frame 中的新内容,研究者希望能够合成可信细节。

论文中的公式是基于 HiFiC 的。使用条件 GAN,其中生成器和判别器都可以访问额外的标签:公式假设数据点 x 和标签 s 遵循联合分布 p(x, s)。生成器将样本 y ∼ p(y) 映射到分布 p(x|y),而判别器用来预测给定对 (x, s) 是否来自 p(x|s) 而不是来自生成器。

在设置中需要处理帧序列和重建。在 HiFiC 之后,研究者在潜在 y 上调节生成器和判别器,对于 I-frame,y = yI,对于 P-frame,y = y_t,r。为了简化问题,该研究的目标是对每帧分布进行匹配,即对于 T 长度的视频序列,目标是获得一个模型 s.t.:

通过随机移位展开时防止错误累积

正如文中所提到的,「低延迟」设置的循环性质在时域中的泛化具有挑战性,这可能会发生错误传播。理想情况下,只要研究评估的内容至少 T = 60 帧,就可以使用序列进行训练,但实际上由于内存限制,这在当前硬件上是不可行的。虽然我们最多可以将 T = 12 放入加速器中,但这样会使训练模型会变得非常慢。

为了加速原型设计和训练新模型,以及防止展开(unrolling)问题,该研究采用以下训练方案。 

1) 仅在随机选择的帧上训练 E_I 、 G_I 、 D_I ,1 000000 step。

2) 冻结 E_I、G_I、D_I ,并从 E_I 、G_I 初始化 E_res、G_res 权重。使用分阶段展开( staged unrolling )训练 E_flow、G_flow、E_res、G_res、D_P 450000step,即使用 T = 2 直到 80k step,T = 3 直到 300step,T = 4 直到 350step,T = 6 直到 400k,T = 9 直到 450k。 

该研究将其分为步骤 1) 和 2),因为经过训练的 E_I、 G_I 可以重新用于 P-frame 分支的许多变体,并且跨运行共享 E_I、 G_I 使其更具可比性。

使用比例控制器在训练期间控制速率:超参数 λ_R 用来控制比特率和其他损失项(例如 GAN 损失等)之间的权衡。 

实验结果

数据集:训练数据包括大约 992000 个时间 - 空间裁剪视频集,每个视频集长度 T 为 12 帧,每帧画面大小为 256×256,从 YouTube 的公开视频中获取。这些视频的分辨率至少为 1080p,长宽比至少为 16:9,帧率至少为 30 fps。

模型和基准:基线称为「MSE-only」,并且该基准使用了与研究所用一样的架构和训练过程,但没有使用 GAN 损失。实验还与尺度空间流(Scale-Space Flow,SSF)进行了比较,这是最近的神经压缩方法,在 PSNR 方面与 HEVC 相当。最后,该研究与无学习的 HEVC 进行了比较。

研究者在图 1 中总结了评分者偏好,并在图 7 中展示了性能指标。该研究与三种比特率下的 HEVC 进行了比较,结果证明该研究所用方法与 HEVC 在 0.064 bpp 下具有可比性 (14vs12),在 0.13bpp 下效果更佳(18vs9),在 0.22bpp 下性能也不错(16vs9)。

为了评估 GAN 损失对视觉质量的影响,研究者在低速率 (≈ 0.064 bpp) 下将 GAN 损失与 MSE-only 和 SSF 进行了比较。如图 1 所示,在 MSE-only 下,在 30 次结果中只有 4 次结果较好,4 次平局,结果表明了 GAN 损失的重要性,并且 SSF 没有一次是首选、没有平局。研究者强调 MSE-only 仅在 PSNR 方面与 HEVC 相当(图 7),但在视觉质量方面明显更差。

研究发现,下列组件对性能的提升至关重要:不使用「free latent」会引起模糊的重建效果,这类似于 MSE-only 基线产生的效果,如图 3 顶部所示。研究发现,使用「free latent」而不使用条件判别器也会导致模糊的重建效果。当信息不传递给 UFlow 时,实验结果会得到前后不一致的流,当信息传递给 UFlow 时,但没有使用流损失正则化(即公式 6),实验结果也不理想。因此,删除任何一个组件都会损害时间一致性,参见图 3 底部。

总体来说,没有一个指标能够预测图 1 中的结果,但是 PIM 和 LPIPS 对一些比较进行了正确的排序。在神经图像压缩领域已经观察到了这种结果,其中最好的方法是由人类来排序的,因为目前还没有一种度量标准能够根据主观质量来准确地对这些方法进行排序。

猜您喜欢:

等你着陆!【GAN生成对抗网络】知识星球!  

CVPR 2021 | GAN的说话人驱动、3D人脸论文汇总

CVPR 2021 | 图像转换 今如何?几篇GAN论文

【CVPR 2021】通过GAN提升人脸识别的遗留难题

CVPR 2021生成对抗网络GAN部分论文汇总

经典GAN不得不读:StyleGAN

最新最全20篇!基于 StyleGAN 改进或应用相关论文

超100篇!CVPR 2020最全GAN论文梳理汇总!

附下载 | 《Python进阶》中文版

附下载 | 经典《Think Python》中文版

附下载 | 《Pytorch模型训练实用教程》

附下载 | 最新2020李沐《动手学深度学习》

附下载 | 《可解释的机器学习》中文版

附下载 |《TensorFlow 2.0 深度学习算法实战》

附下载 | 超100篇!CVPR 2020最全GAN论文梳理汇总!

附下载 |《计算机视觉中的数学方法》分享

这篇关于视频压缩:谷歌基于GAN实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/368367

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到