深度学习之超分辨率,视频增强基础:光流估计与可变性卷积

Posted C_小米同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习之超分辨率,视频增强基础:光流估计与可变性卷积相关的知识,希望对你有一定的参考价值。

目录

一、帧对齐简介      

二、显式帧对齐:光流估计+运动补偿

三、隐式帧对齐:可变性卷积

四、几个疑问

1.为什么要进行帧对齐

2.光流估计为什么可以应用视频插帧?

3.光流估计和可变性卷积的区别

4.运动幅度很大对可变性卷积有什么影响?


一、帧对齐简介      

在进行视频超分辨率、压缩视频增强等任务的时候,我们通常会把目标帧和参考帧进行帧对齐,而帧对齐分为两种:显式帧对齐(光流估计+运动补偿)、隐式帧对齐(可变性卷积、3D卷积、循环神经网络等,这里只讲可变性卷积)。

二、显式帧对齐:光流估计+运动补偿

        给定两个输入图像(前一帧:图1-后一帧:图2),我们的目标是找到每个像素的运动向量,光流就是前后两帧的运动矢量。而光流估计就是估计前后两帧的运动矢量。运动矢量就是我们物理上的“速度”。

        其简单的计算过程就是:输入(两帧图像)-> 输出(光流),如图3所示。

           图1        

     图2

 图3

        如下面两帧图像I和J,存像素点的移动,即上一帧I中红色像素点d在下一帧J中,其位置会有些轻微的变动,则该变动即为位移向量,也就是像素点的光流。(如图4)

 图4

        传统的光流估计需要满足一下三个条件:

        1.相邻帧之间的亮度恒定

        2.相邻视频帧的取帧时间连续,或者相邻帧之间物体的运动比较“微小”

        3.保持空间一致性,也就是同一子像素的像素点具有相同的运动

          而深度学习的光流估计很大程度上打破这中束缚,可以完全实现端到端的训练、预测,目前比较流行的网络Spynet(如图5所示),该网络在时间推理和性能上都达到了很不错的效果。

          

 图5

几个参数说明:

u:上采样(2倍)

d:下采样(2倍)

G:生成光流的网络(需要训练)

vk:光流残差

Vk:光流(最终的计算结果)

Vk = u(Vk−1) + vk(光流计算)

vk =  Vk − u(Vk−1) (光流残差计算)

Loss计算:欧式距离(如图6)

 图6

        该网络是基于金字塔的分层结构,从小尺度的光流估计到大尺度的光流估计,一定程度上缓解了运动幅度大的问题。效果如图7所示。有一个细节:之前说了,上面的光流代表了运动矢量,也就是速度,光流的颜色越深,速度越大,也就是运动幅度越大,我们在金字塔的第一层把降采样多次的图片(根据金字塔的层数决定降采样次数)输入光流网络G0,此时,两张图像并没有进行warp(运动补偿\\帧对齐-一开始用0代替了初始的光流,也就是说:在金字塔的顶端,降采样多次后的小尺寸图像,我们默认两张图像的运动是不变的),这两张图像的运动幅度很大,所以由G0计算出来的残差光流v0颜色很深。而下一层的网络在图像传入G1之前,会进行warp操作,此时的两张图像的运动幅度会很小,所以出来的残差光流颜色很浅。

图7

        我们可以发现,Spynet预测的光流和真实的光流还是非常接近的。

三、隐式帧对齐:可变性卷积

        可变性卷积的结构如图8所示。

 图8

        我们可以看见,输入特征经过一个“conv”,得到2倍通道的偏移场(x,y两个方向),然后我们把偏移场展开,得到偏移量(offsets),然后我们把输入特征和偏移场同时放入可变性卷积,得到输出特征。

        偏移量也是一个矢量,类似于光流,它可以“指导”特征图的像素移动,实现帧对齐,如图9所示。

图9

        可变性卷积的魅力在哪里?我们看图10。

 图10

        我们可以对比一下感受野:(a)是普通卷积,其感受也是矩形,它可能会关注到物体之外事物,如背景等,这可能对目标检测,图片识别,运动估计这样的任务产生影响。(b)图是可变性卷积,可变性卷积的感受野是不规则的,随着偏移量变化而变化,它更关注物体本身,并且有更大的感受野。更确切的说是增大了有效感受野。

        简单分析一下图(a)的感受野,如下图所示:

 图11

        5x5的特征图通过3x3的卷积核输出3x3的特征图,然后再经过3x3卷积核输出1x1的特征图,此时的感受野就是5x5。

        如果对感受野不理解,可以参看我的这篇博客:C_小米同学

四、几个疑问

1.为什么要进行帧对齐

        如图所示,

 图12

         我们可以看到,如果不进行帧对齐,T时刻的卷积核T+i时刻的卷积学习到的东西是不一样的,左边的卷积学习到的是一个背景,右边的卷积学习到的是物体,当两个卷积学习到的进行叠加的时候,会出现“叠影”,这会影响目标检测,运动估计等任务。

2.光流估计为什么可以应用视频插帧?

        通过上面的介绍,我们知道:光流是描述两帧画面的运动矢量,而 位移= 速度x时间,我们可以通过时间,来计算位移。比如:我需要在第一秒的画面和第二秒的画面之间插入一帧(比如1.5秒),那我就可以计算他的 位移= 速度x1.5,此时的速度就是第一帧和第二帧画面的光流

3.光流估计和可变性卷积的区别

        光流估计的可解释性更强,明确的表示两者之间的运动,可以明确的提取到光流特征。可变形卷积是自适应学习到的一个offset,offset并不一定描述的是运动性,它可能学习到了其他的东西。但是,可变性卷积的灵活性更高,可以自适应学习(虽然不能完全学习到运动信息)

        可变性卷积的帧对齐并不是针对图片上的所有像素进行对齐,而光流是针对的全图。

4.运动幅度很大对可变性卷积有什么影响?

        如图所示。

 图13

        我们可以看到,T和T+i时刻帧的运动幅度很大的时候,在同一个位置的卷积(红色框),右边卷积的物体在左边找不到参照物,不能把两者之间的运动联系起来,不能很好的预测offsets,所以,在这种情况下,offsets预测不准。

        可以通过金字塔结构(类似于上面介绍的金字塔结构的光流法),把物体下采样几倍,然后卷积核大小不变,先对来说,扩大了感受野,卷积可以包含两个物体(可以捕获联两个物体的关系),这就可以很好地学习。

深度学习之图片压缩算法

近年来,深度学习在计算机视觉领域已经占据主导地位,不论是在图像识别还是超分辨重现上,深度学习已成为图片研究的重要技术;现在深度学习技术已进入图片压缩领域。以图鸭科技最新研发的图片压缩——Tiny Network Graphics (TNG) 为例,其以深度学习卷积神经网络为内核,在保持相同图片质量的情况下,其图片大小仅为 JPEG 的 45%。

本文将和大家分享如何使用深度学习卷积神经网络技术设计图像压缩算法。

说到图像压缩算法,目前市面上影响力比较大的图片压缩技术是 WebP 和 BPG。

WebP:谷歌在 2010 年推出的一款可以同时提供有损压缩和无损压缩的图片文件格式,其以 VP8 为编码内核,在 2011 年 11 月开始可以支持无损和透明色功能。目前 facebook、Ebay 等网站都已采用此图片格式。

BPG:知名程序员、ffmpeg 和 QEMU 等项目作者 Fabrice Bellard 推出的图像格式,它以 HEVC 为编码内核,在相同体积下,BPG 文件大小只有 JPEG 的一半。另外 BPG 还支持 8 位和 16 位通道等等。尽管 BPG 有很好的压缩效果,但是 HEVC 的专利费很高,所以目前的市场使用比较少。

就压缩效果来说,BPG 更优于 WebP,但是 BPG 采用的 HEVC 内核所带来的专利费,导致其无法在市场进行大范围使用。在这种情况下,运用深度学习来设计图片压缩算法就应运而生。

如何用深度学习技术设计图片压缩算法

通过深度学习技术设计压缩算法的目的之一是设计一个比目前商用图片压缩更优的压缩算法,同时借助于深度学习技术还可以设计更简洁的端到端算法。在图片、视频压缩领域,主要用到的深度学习技术是卷积神经网络 (CNN)。如图 1 所显示,像搭积木一样,一个卷积神经网络由卷积、池化、非线性函数、归一化层等模块组成。最终的输出根据应用而定,如在人脸识别领域,我们可以用它来提取一串数字(专业术语称为特征)来表示一幅人脸图片,然后通过比较特征的异同进行人脸识别。

技术分享图片

图 1 卷积神经网络示意图

用深度学习设计的图片压缩完整框架包括 CNN 编码器、量化、反量化、CNN ×××、熵编码、码字估计、码率 - 失真优化等几个模块。编码器的作用是将图片转换为压缩特征,×××就是从压缩特征恢复出原始图片。其中编码器和×××,可以用卷积、池化、非线性等模块进行设计和搭建。

技术分享图片

(图 2 用深度学习进行图片压缩示意图)

如何评判压缩算法

在深入技术细节前,我们先来了解一下如何评判压缩算法。评判一个压缩算法好坏的重要指标有三个:PSNR(Peak Signal to Noise Ratio)、BPP(bit per pixel)和 MS-SSIM(multi-scaleSSIM index)。我们知道,任何数据在计算机内都是以比特形式存储,所需比特数越多则占据的存储空间越大。PSNR 用来评估解码后图像恢复质量,BPP 用于表示图像中每个像素所占据的比特数,MS-SSIM 值用来衡量图片的主观质量,简单来说在同等的 Rate/BPP 下 PSNR 更高,恢复质量越好,MS-SSIM 更高,主观感受越好。

举个例子,假设长宽为 768×512 的图片大小为 1M,利用深度学习技术对它编码,通过编码网络后产生包括 96×64×192 个数据单元的压缩特征数据,如果表示每个数据单元平均需要消耗 1 个比特,则编码整张图需要 96×64×192 个比特。经过压缩后,编码每个像素需要的比特数为(96×64×192)/(768×512)=3,所以 BPP 值为 3bit/pixel,压缩比为 24:3=8:1。这意味着一张 1M 的图,通过压缩后只需要消耗 0.125M 的空间,换句话说,之前只能放 1 张照片的空间,现在可以放 8 张。

如何用深度学习做压缩

谈到如何用深度学习做压缩,还是用刚才那个例子。将一张大小 768×512 的三通道图片送入编码网络,进行前向处理后,会得到占据 96×64×192 个数据单元的压缩特征。有计算机基础的读者可能会想到,这个数据单元中可放一个浮点数、×××数、或者是二进制数。那到底应该放入什么类型的数据?从图像恢复角度和神经网络原理来讲,如果压缩特征数据都是浮点数,恢复图像质量是最高的。但一个浮点数占据 32 个比特位,按之前讲的比特数计算公式为(96×64×192×32)/(768×512)=96,压缩后反而每个像素占据比特从 24 变到 96,非但没有压缩,反而增加了,这是一个糟糕的结果,很显然浮点数不是好的选择。

所以为了设计靠谱的算法,我们使用一种称为量化的技术,它的目的是将浮点数转换为整数或二进制数,最简单的操作是去掉浮点数后面的小数,浮点数变成整数后只占据 8 比特,则表示每个像素要占据 24 个比特位。与之对应,在解码端,可以使用反量化技术将变换后的特征数据恢复成浮点数,如给整数加上一个随机小数,这样可以一定程度上降低量化对神经网络精度的影响,从而提高恢复图像的质量。

即使压缩特征中每个数据占据 1 个比特位,可是 8:1 的压缩比在我们看来并不是一个很理想的结果。那如何进一步优化算法?再看下 BPP 的计算公式。假设每个压缩特征数据单元占据 1 个比特,则公式可写成:(96×64×192×1)/(768×512)=3,计算结果是 3 bit/pixel,从压缩的目的来看,BPP 越小越好。在这个公式中,分母由图像决定,可以调整的部分在分子,分子中 96、64、192 这三个数字与网络结构相关。很显然,当我们设计出更优的网络结构,这三个数字就会变小。

那 1 与哪些模块相关?1 表示每个压缩特征数据单元平均占据 1 个比特位,量化会影响这个数字,但它不是唯一的影响因素,它还与码率控制和熵编码有关。码率控制的目的是在保证图像恢复质量的前提下,让压缩特征数据单元中的数据分布尽可能集中、出现数值范围尽可能小,这样我们就可以通过熵编码技术来进一步降低 1 这个数值,图像压缩率会进一步提升。

用深度学习做视频压缩,可以看作是在深度学习图片压缩基础上的扩展,可结合视频序列帧间的光流等时空信息,在单张压缩的基础上,进一步降低码率。

深度学习图片压缩的优势

图鸭科技通过深度学习技术研发的图片压缩 TNG 在内部的测试上已经超过 webp 与 BPG,下图是在 kodak24 标准数据集上测评结果, 分别是 PSNR 值与 MS-SSIM 值。

技术分享图片

技术分享图片

图 3 图 4 在 kodak24 标准数据集上测评结果,上图为 PSNR 结果,下图为 MS-SSIM 的结果

熟悉图像压缩的朋友可以直接通过 PSNR 和 MS-SSIM 值看出:TNG 的 PSNR 值与 MS-SSIM 值明显高于 WebP、jpeg2000 和 jpeg;且 TNG 在高码字的情况下 PSNR 值高于 BPG,且其 MS-SSIM 值基本一致高于 BPG。


  • 在低码字情况下 TNG 与 WebP 压缩效果对比

技术分享图片

技术分享图片

图 5 图 6 低码字情况下 TNG 与 WebP 压缩效果对比 图 5 TNG,图 6 webp

相比 TNG,WebP 尽管保留了更多的细节,但是其失真更多,不利于后期恢复。而 TNG 采用了保边滤波的方法,让其失真更少,整体图像效果优于 WebP。


  • 在高码字情况下 TNG 与 BPG 对比

技术分享图片

技术分享图片

图 7 图 8 高码字情况下 TNG 与 BPG 压缩效果对比,图 7 TNG 图 8 BPG

上面两幅图是高码字的情况,在实际的测试中,BPG 会出现上图所示的颜色失真情况;而反观 TNG 其基本不会出现这类的失真状况。

这是因为 BPG 在编码压缩时尽管图片时,其 YUV 通道是分开进行编解码,产生了一些色差。

而 TNG 在编码时考虑到了整体图片的情况,采用了同一编码,也就避免了上述的情况。


  • 在低码字的情况下 TNG 与 BPG 的对比

技术分享图片

技术分享图片

图 9 图 10 低码字情况下 TNG 与 BPG 压缩效果对比,图 9 TNG 图 10 BPG

在低码字的情况下,BPG 压缩图片中出现了伪轮廓和块效应等问题,整个图片的连续性比较差;而 TNG 的图片连续性和物体的轮廓保持的更好。

图片压缩的使用领域可以说的极其广泛了,从社交应用、新闻客户端到游戏等领域,可以说有图片的地方就有图片压缩功能。使用更先进的图片压缩技术,可以帮助大量使用图片的企业节省大量图片带宽成本,且能帮助用户节省图片流量,减少加载图片所需时间。

总结

总体而言,借助于深度学习设计图像压缩算法是一项非常具有前景但也非常具有挑战性的技术。深度学习技术图片压缩可以使大家在全面高清屏的时代有更优质的视觉体验,同时在游戏、空间图像传感等领域,深度学习图片压缩技术可以帮助图片达到更高分辨率,更小存储空间,从而为用户提供更好的视觉体验。

这里附上 TNG 的测试链接:

http://www.tucodec.com/picture/index

大家可以自行进行测试(建议在 PC 端进行测试),测试完成后可以下载压缩后图片和二进制文件,下载安装×××后也可以对已经压缩的图片进行恢复处理。


以上是关于深度学习之超分辨率,视频增强基础:光流估计与可变性卷积的主要内容,如果未能解决你的问题,请参考以下文章

深度学习之图片压缩算法

公开课预告:超分辨率技术在视频画质增强领域的研究与应用

深度学习之图像的数据增强

深度学习之超参数调试

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

大淘宝技术斩获NTIRE视频增强和超分比赛冠军(内含夺冠方案)