首发:AIWalker
CResMD-paper:https://arxiv.org/abs/1912.05293
CResMD-code:https://github.com/hejingwenh...
该文是SIAT-SenseTime
联合实验室提出的一种多模态可控图像复原方案。虽然该文很早之前就已经在arxiv上公开,但一直并未开源,今日突然发现:作者前几天已经将相关代码开源了。故对该方法做个学习记录。
Abstract
基于深度学习的定量学习图像复原方案已取得了极大成功,与此同时,交互连续可控图像复原也受到了越来越多的关注。该文的目标是设计一种方法可以通过调节控制系数达到生成质量效果连续的图像。
现有的方法往往聚焦于两种不同目标优化下的平滑渐变,比如DNI、AdaFM、CFSNet等与本文比较类似的方案。上述方法仅适合于单一降质下的连续渐变,然而实际图像往往具有更复杂的、多样性的降质问题。鉴于此,作者提出一种multi-dimension modulation, MD
用于模拟不同降质类型、不同降质程度的输出影响。相比前述single-dimension modulation, SD
方法(DNI, AdaFM, CFSNet均属于该范畴),MD具有三个独立特性:joint modulation
, zero starting point
, unbalanced learning
。
MD的这些困难促使作者提出了首个MD图像复原框架:CResMD。它在传统的残差连接基础上引入一个可控变量用于输入与残差的加权组合,这些加权系数通过额外的条件分支网络生成。为了平衡不同降质类型、降质程度问题,作者基于beta分布提出一种新的数据采样策略。CResMD以无损图像以及降质信息作为输入,输出合适的复原图像。在测试阶段,通过调整条件向量,用户可以自由的控制输出图像的效果。作者通过充分的实验验证了所提方案的有效性,无论是SD任务还是MD任务,所提方案均取得了卓越的效果。
Method
这里将从五个方面对该文所提方案进行介绍,包含:问题定义、模型框架、可控残差连接、条件网络、数据采样等。建议对图像复原方向感兴趣的小伙伴多费点时间了解一下问题定义与数据采样。
Problem Formulation
首先假定有N种降质类型,每种降质类型的降质程度为。本文的目标是构建一个这样的复原模型,它能够以降质图像及其对应的降质信息做为输入,输出对应的复原图像。在这里,降质信息(类型与程度)将起到滑动条的作用,在测试阶段它可以让用户通过交互方式调节复原效果。
以下图为例,它包含两种降质类型:模糊和噪声。此时有两个独立的滑动条用于调节模糊程度与噪声程度,调整空间为。SD方案只能从单一方向进行调节,而MD方案则可以从两个方向、甚至更多方向进行可控调节(SD是MD的一种特例)。
Framework
为达成MD调制,作者基于可控残差连接提出一种广义而有效的策略,整体框图见下图。所提方案包含两个分支:主分支(即base network)与条件分支(即condition network)。主分支用于控制图像复原,条件分支用于控制降质类型与降质程度。主分支网络采用了类似EDSR的网路架构,当然也可以是其他类型的架构,作者在这里选用了图像复原领域应用最多的架构体系。它与EDSR的区别仅在于额外的可控残差连接部分,见图中的蓝绿虚线。这些残差连接通过条件网络进行调节控制。对于任意降质类型、程度输入,条件网络受限将其转换为为条件向量,然后生成可控残差连接中的权值。
image-20200608113611769
Controllable Residual Connection
这里所提的可控残差连接是在标准残差连接基础上进行改进得到,为更好的介绍可控残差连接,首先介绍一下标准残差连接。假设X和Y分别表示输入与输出特征图,残差连接可以表述为:
而在可控残差连接中,额外添加了一个调制变量 用于控制加权权重,描述如下:
其中,具有与X相同的通道维度。这种极为简单的改变使得可控残差连接具有这样的两个特性:
- 通过调节变量可以使的输出Y从X连续渐变到;
- 当时,残差部分将会被跳过,不做处理。
在可控残差连接基础上,作者引入了两种形式的可控残差连接:
- 全局连接:全局形式的可控残差连接有助于模型同时实现
identity mapping
与图像复原功能,见下图中示意图。
image-20200608133305300
- 局部连接:作者在每个ResBlock基础上添加可控调制因子。这个很容易理解,不做解释。
Condition Network
作者提出一个条件网络用于接收降质类型、降质程度作为输入并为每个可控残差连接输出权值因子。由于不同降质类型拥有其独有的范围,需要将其编码为条件向量。作者对每个降质范围量化到并进行拼接到向量作为输入,条件网络由全连接层构成,网络结构也比较简单。代码如下:
`# 注:每个可控残差连接都具有一个这样的local_scale,是不是非常简单
local_scale = nn.Linear(cond_dim, nf, bias=True)
global_scale = nn.Linear(cond_dim, 3, bias=True)
`
Data Sampling Strategy
数据采样对于MD调制是非常重要的问题,由于训练图像包含不同的降质类型、降质强度,训练损失会存在严重的偏差。如果采用均匀采样方案,优化模型会忽略具有较小MSE的块,进而导致模型的性能无法得到保证。
为解决上述不平衡学习问题,作者提出对不同降质类型按照beta分布进行降质强度采样。下图给出了不同参数时采样函数示意图,在实验过程中,作者设置。
`# 上图绘制参考代码(这里提供的代码可以用于数据分布采样)
作者并未提供训练数据集采样相关代码,所以想复现3D_modulation的小伙伴可以参考笔者这里提供的代码稍加修改进行降质强度的数据采样。
from scipy import stats
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 1.0, 51)
y0 = stats.beta(0.2, 1.0).pdf(x)
y1 = stats.beta(0.5, 1.0).pdf(x)
y2 = stats.beta(1.0, 1.0).pdf(x)
y3 = stats.beta(1.0, 2.0).pdf(x)
plt.plot(x, y0)
plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)
plt.xlim((0.0, 1.0))
plt.ylim((0.0, 2.5))
plt.ylabel('pdf')
plt.grid(linestyle='-.')
plt.legend([r'beta($\alpha$=0.2,$\beta$=1)',
r'beta($\alpha$=0.5,$\beta$=1)',
r'beta($\alpha$=1.0,$\beta$=1)',
r'beta($\alpha$=1.0,$\beta$=2)'],
loc='upper right', fontsize=10)
plt.show()`
Experiments
“实践出真知”,为验证方案的有效性,作者进行了充分的实验对比与分析。
作者首先评估了所提方法在2D调制任务中的性能,见下表与效果图。
由于所提方法更关注于MD调制,作者在更复杂的降质问题中进行了分析,见下表与效果。
最后作者还进行了一些消融实验以说明不同模块的重要性,具体见查看原文,这里仅列出采样策略的实验对比,见下表。均匀采样对应表中第一行,从表中结果可以看到:作者所提的数据采样策略将模型的性能进一提升了0.28dB。
Conclusion
作者提出了图像复原中的首个多维调制问题,并基于动态可控残差连接提出一种有效的解决方案。所提方案CR额SMD可以部分的解决多维调制的三个困难问题,最后作者通过验证了所提方案取得的优异效果。最后附上用作者提供的模型在验证数据上的效果图(注:中间的是生成效果,好像效果还是很不错的哦,可惜的是作者仅提供了一个2D的模型,并未提供3D模型)。
相关文章
AdaFM: Modulating Image Restoration with Continual Levels via Adaptive Feature Modification Layers.
CFSNet: Towards a Controllable Feature Space for Image Restoration.
推荐阅读:
本文章著作权归作者所有,任何形式的转载都请注明出处。更多动态滤波,图像质量,超分辨相关请关注我的专栏深度学习从入门到精通。