【论文笔记3】CNNs在图像压缩领域的运用——An End-to-End Compression Framework Based on Convolutional Neural Networks

一、引言

之前写的论文笔记中讲的都是基于RNN的图像压缩网络,本文将要讲的是由哈尔滨工业大学Jiang Feng教授(具体的名字我也不知道怎么写)及其团队成员提出的基于CNN的图像压缩网络。该网络是CNN和标准图像算法在图像压缩领域中的首次结合,取得了state of the art 的效果。原论文请戳此传送门:《An End-to-End Compression Framework Based on Convolutional Neural Networks》。

文章的主要贡献如下:

(1)提出了一种基于CNN的图像压缩方法,该方法包括两个CNN网络(ComCNN、RecCNN)和一个标准图像编码器(可以是JPEG、JPEG2000等),其中ComCNN网络用来根据原始图像生成一个紧密的representation,该representation经过标准编码器编码,RecCNN用来根据解码器的结果重建原始图像。实际上,这篇文章依然属于post-processing方法,通过适当的后处理加工提高图像压缩的效果。

(2)提出了一种新的学习算法实现两个CNN的同时学习,解决了标准图像算法中的量化舍入函数不可微导致的反向传播梯度无法计算的问题。

(3)文章提出的图像压缩网络可以和现有的标准图像算法,例如JPEG、JPEG2000相媲美。

二、文章提出的CNN图像压缩网络的细节

1、图像压缩网络的架构

本文提出的方法的架构如下图所示:

【论文笔记3】CNNs在图像压缩领域的运用——An End-to-End Compression Framework Based on Convolutional Neural Networks_第1张图片

上文已经提到,网络包含两个CNN网络和一个标准编码解码器。ComCNN网络在保证原始结构信息不丢失的情况下生成原始图像的紧密representation,RecCNN作为重建CNN用来巩固解码器decoder的图片的质量,两个网络之间相互配合,共同训练实现高质量的图片压缩。现在来详细介绍一下两个网络的每一层的细节:

1.1 ComCNN

ComCNN一共由三层构成,用来保持图像的结构空间信息,每一层都是一个卷积加上一个Relu非线性激活操作。ComCNN的结构如下:

 

【论文笔记3】CNNs在图像压缩领域的运用——An End-to-End Compression Framework Based on Convolutional Neural Networks_第2张图片

(1)第一层有64个3×3×c的卷积核,c是图像通道数量,生成64通道的特征图,然后跟上一个Relu非线性激活;

(2)第二层有64个3×3×64的卷积核,用来巩固特征图并下采样,下采样通过设置步长为2实现,然后跟上一个BN加上Relu激活函数;

(3)第三层有c个3×3×64的卷积核,用来建立紧密的representation。

1.2 RecCNN

RecCNN由20层卷积层构成,结构如下:

【论文笔记3】CNNs在图像压缩领域的运用——An End-to-End Compression Framework Based on Convolutional Neural Networks_第3张图片

(1)第一层有64个3×3×64的卷积核,后面跟上Relu非线性激活函数,生成64通道的特征图;

(2)第二至十九层,每层有64个3×3×64的卷积核,后面跟上BN加Relu非线性激活;

(3)最后一层有c个3×3×64的卷积核,BN和残差学习都被加入进来,用来重建原始图片。

2、学习算法

2.1 理论优化目标函数

理论上,网络的优化函数如下:

x是原始图片的输入,θ1和θ2分别是ComCNN和RecCNN的参数,Cr(·)和Re(·)分别代表ComCNN和RecCNN,Co(·)代表标准编码解码器(JPEG,JPEG2000)。网络的训练目标就是优化ComCNN和RecCNN的参数,使的重建的图片和原始图片之间的差距最小。

然而,上述优化函数中的Co(·)有一个量化舍入函数,它是不可微的,所以反向传播过程无法进行,网络无法训练。为了解决上述问题,文章提出新的优化目标函数。

 

2.2 实际优化目标函数

通过控制θ2,计算最优的θ1:

通过控制θ1,计算最优的θ2:

参数的更新方法如下:

(1)更新RecCNN参数θ2:

(2)更新ComCNN参数θ1:

因为Co(·)的不可微性,θ1的更新依然很复杂。为了解决这个问题,文章引入辅助变量并假设Re(θ2尖,·)对辅助变量是单调的,辅助变量:

更新方法:

 

2.3 训练算法

网络的训练算法如下:

【论文笔记3】CNNs在图像压缩领域的运用——An End-to-End Compression Framework Based on Convolutional Neural Networks_第4张图片

 

2.4 损失函数

(1)利用均方根误差(MSE),在RecCNN网络参数θ2训练好的情况下,ComCNN网络训练损失函数:

其中N是batch size。

(2)经过ComCNN得到了一系列紧密的representation,用xm尖表示,MSE损失函数如下:

其中res(·)代表RecCNN学习得到的残差。

 

3、训练结果

文章将训练的结果和许多已有的网络结果比较,并开放了源码。代码请戳:https://github.com/compression-framework/compression_framwork_for_tesing。文章的实验结果可用下表表示:

【论文笔记3】CNNs在图像压缩领域的运用——An End-to-End Compression Framework Based on Convolutional Neural Networks_第5张图片

【论文笔记3】CNNs在图像压缩领域的运用——An End-to-End Compression Framework Based on Convolutional Neural Networks_第6张图片

 

4、总结

可以发现,这篇文章我没有写很多叙述性的文字帮助理解,是因为这篇文章的方法确实很容易理解。文章提出了一种CNN和标准编码解码算法相结合的方法,实现了state of the art的结果,说明图像压缩的质量可以依靠后处理加工来进一步提升,为其他基于深度神经网络图像压缩的方法提供了方向。文章提供了源码,后期我将继续学习相关代码,进一步深入理解文章的思想。

 

-------------------------------------------

Youzhi Gu, master student

Foresight Control Center

College of Control Science & Engineering

Zhejiang University

Email: [email protected]

 

你可能感兴趣的:(深度学习论文笔记)