Note_Fast Image Processing with Fully-Convolutional Networks
基本介绍
ICCV 2017
Fast Image Processing with Fully-Convolutional Networks
笔记
-
作者想建立一个神经网络模型去近似一些图像里的操作,比如图像风格迁移,图像铅笔画,去雾,上色,增加细节等等。主要考虑三个方面,近似的精度、运行时间、内存占用多少。
-
现在加快图像处理的一种通用的手段,是downsample-evaluate-upsample approach。这种方法的主要问题是:
- 操作主要低分辨率图像上,这个不利于交互式使用。
- 主要的操作是针对低分辨率图像的,对精度有影响。
-
作者想用一个模型来拟合十种图像操作。
All operators are approximated using an identical architecture with no hyperparameter tuning.
-
已经有很多中,图片处理的加速算法,比如中值滤波器等等,但是他们的问题没有一般性。有一般性的是上面提到的下采样方法。
-
整个网络是Context aggregation networks(CAN),核心就是:
\[L_i^s = \phi\left ( \psi^s(b_i^s+\sum_jL_j^{s-1}*_{r_s}K_{i,j}^s) \right) \]其中,\(L_i^s\)是\(s\)层\(L^s\)的第\(i\)个特征层,\(*_{r_s}\)代表空洞卷积操作,\(K_{i,j}^s\)代表3X3的卷积核,\(b_i^s\)是偏置项,$ \psi^s\(是自适应的归一化函数,\) \phi$ 是像素级的非线性单元LReLU:\(\phi(x) = max(\alpha x,x)\) 。其中\(\alpha\)取的是0.2。
-
在使用batch Normalization的时候,也就是在给网络添加了BN层,作者发现对风格迁移、铅笔画有帮助,在其他操作上的表现不是很好,越是提出来自适应的BN,也就是自适应归一化函数。
\[\phi^s(x) = \lambda_s x + \mu_s BN(x)$$、 其中,$\lambda_s ,\mu_s \in \mathbb{R}$ 是在反向传播中学习的参数。 \]\[\ell(\mathcal{K},\mathcal{B}) = \sum_i \frac{1}{N_i} \parallel \hat{f} (I_i;\mathcal{K},\mathcal{B}) - f(I_i)\parallel \]那些复杂的loss,b并没有给实验提高精度。
-
为了提高模型对分辨率的使用能力,在训练的过程中,随机选择图片的分辨率在(320p到1440p)之间。这些图片是随机裁剪的获得的。训练的采用Adam ,迭代500k次,耗时一天。
-
实验进行近似模拟的十个操作如下:
- Rudin-Osher-Fatemi:是一种图像复原模型。
- TV-L1 image restoration:是一种图像复原模型。
- L0 smoothing:L0范式的图像平滑。
- relative total variation:一种通过剥离细节来提取图像结构的操作。
- image enhancement by multiscale tone manipulation:通过多尺度进行图像增强。
- multiscale detail manipulation based on local Laplacian filtering:通过低级算子仿造图像细节。
- photographic style transfer from a reference image:图像风格迁移。
- dark-channel dehazing :暗通道去雾。暗通道先验(Dark Channel Prior)是基于统计意义上的观测得到的结果。总结了大量的室外无雾的图像,提出基于暗通道先验的去雾算法,在大部分无雾图像的无天空区域,像素中至少存在一个颜色通道存在很低非常低的亮度值。这个最低的亮度值几乎等同于0。
- nonlocal dehazing :非局部去雾。
- pencil drawing :铅笔画风格。
-
网络的具体细节:
上图只是演示图,实际上的更深。圆圈表示非线性函数LReLU。除了第一层和最后一层是三个通道外,其余均是多个通道,倒数第二层使用1X1的卷积,无非线性转化,得到最后的一层。
CAN 32的结构(d = 10 and w = 32 )如下:
-
关于横向对比实验。
- 对比的网络设计一个plain,就是将上面的网络的空洞卷积全部换了,换成普通的卷积。作者说这样是为了保证结构的相似性。
- Encoder-decoder网络。说是参考U-Net搞得一个hourglass-shaped networks (沙漏型网络,这个形容词不错)。对于U-Net主要的修改是,为了减少计算量和内存,减少了一半的卷积核;缩放了最后结果输出,使得输出图片和输入一样大。(关于这个修改,我觉得很不科学啊,既然要和它对比,为什么要阉割之后再对比呢?)
文章给出的理由是:
we found that this is sufficient to get high accuracy and it matches our configuration of the other baselines.
然后又说,能够获得差不多的精度,甚至更快~缺点主要是参数太多,高出两个数量级。- 还有一个是FCN-8s。这个模型的问题是,参数多,精度低。
-
泛化能力的训练和测试:(每个模型,分别两次训练,然后两个都数据集测试):
- MIT-Adobe test set 和RAISE test set
- MIT-Adobe training set 、 RAISE training set
-
作者另外做了关于深度和宽度(应该说是通道数)的实验。
总结
作者工作量不少,可能也跟任务特别多有关,相当于整合了很多任务。模型最大的特点就是参考那篇ICLR 2016,大量使用空洞卷积。这个模型我也想过,只是没想到去用来代替这么多任务。实验有些地方不是很好,比如Unet那块。还是有些启发的。2333。