D2C SR - yubo105139/paper GitHub Wiki
D2C-SR: A Divergence to Convergence Approach for Image Super-Resolution
论文地址:paper
未复现
提出两阶段方案
divergence 阶段采用离散形式学习潜在高分辨率输出分布
convergence 阶段则用于将所学习预测融合为最终的输出
树状深度网络 每个分支都学习一种可能的高分辨率输出。
训练时,每个分支分别训练以拟合Ground-truth,采用triple损失迫使不同分支的输出具有发散性。融合模块采用端到端的方式训练。
Divergence network
设计一个树状结构网络得到期望预测
树状网络包含的三个主要模块:
- 浅层特征提取模块:它由一个卷积构成;
- 基础分支模块:它由多个残差组构成,每个残差组包含B个残差通道注意力模块(类似RCAN);
- 上采样模块:它由卷积+pixelshuffle构成。
每个分支的权重不进行共享。
Deep Residual Structure 在divergence网络中构建了相对深的残差,这种深度残差结构使得每个分支可以学习深度残差特征,它的子分支可以学习更深的残差结果。每个分支聚焦于学习比父分支更进一步的残差,进而促进高频学习。
Divergence loss divergence网络的发散损失函数 由 $L_2
$损失 与 triple损失 构成。预测结果$I^i_D
$ 与HR图像计算$L_2
$损失 并相加构成最终的损失,定义如下:
$L_{2}^{D}=\sum_{i=1}^{P}\left\|I_{D}^{i}-I_{H R}\right\|_{2}
$
对 $I^i_D
$ 如下处理
$G\left(I_{D}^{i}\right)=\frac{Y_{D}^{i}-\mu_{Y_{D}^{i}}}{\sigma_{Y_{D}^{i}}}
$
注:Y表示YCbCr空间中的Y通道。上述操作使得网络聚焦于学习纹理特征差异。
直接在RGB图像空间使用triplet损失,会导致网络聚焦与学习其他不同的方向(比如RGB空间特征、亮度)而非纹理.使用YCbCr空间中的Y通道可以使得网络聚焦于学习纹理特征差异.
由于超分病态问题主要源于高频区域,因此我们在残差域计算triplet损失,残差定义如下:
$res_{I_{D}^{i}}=\left\|G\left(I_{D}^{i}\right)-G\left(I_{H R}\right)\right\|
$
triplet 损失定义如下:
$\operatorname{trip}(a, p, n)=\operatorname{Max}[d(a, p)-d(a, n)+\operatorname{margin}, 0]
$
其中 a,p,n 为 anchor,positive,negative,feed数据包括 锚(Anchor)实例、正示例,负示例,通过优化锚示例与正示例的距离小于锚示例与负示例的距离,实现样本的相似性计算。
a 为0的矩阵 (HR数据-HR数据),positive 为 $I_D^i
$ 层减去 真实数据的 Y 通道数据,negative 为 $I_D^j ,j!=i
$ 减去 真实数据的 Y 通道数据
最终损失定义如下:
$T_{D}=\frac{\sum_{i=1}^{P} \sum_{i=1, j \neq i}^{P} \beta_{i j} * \operatorname{trip}\left(\operatorname{res}_{I_{D}^{i}}, z \operatorname{zero}, \operatorname{res}_{I_{D}^{j}}\right)}{P(P-1)}
$
注: $β_{ij}=θ^{l-1}
$,$l∈[1,L]
$表示注意力系数,它用于控制不同分支的相似性.最终总体损失则定义如下:
$L_D=L^D_2+α * T_D
$
Convergence Network
组合divergence网络的多个输出可以生成更加精准的结果,采用加权方式组合divergence网络的多个输出。
convergence 网络采用divergence 网络的M个输出concat操作用作Convergence的输入。
$W=F(Concat(I_D));ΘC)
$
W,表示经过训练的权重,
然后采用所得数值与divergence网络输出W內积 得到最终的结果
$I_{SR}=\sum_{i=1}^{P}\left(I_{D}^{i} \cdot W_{i}\right)
$
合并过程中,不同分支在不同区域具有不同的加权权值.
convergence loss convergence网络的目标是合并divergence网络的输出,仅仅包含$L_2
$损失,定义如下:
$L_2^C=||I_{SR}-I_{HR}||_2
$
Training Strategy and Experiments
该框架的两个网络分别训练,首先训练divergence网络到稳定状态;然后固定divergence网络参数训练convergence网络。
作者测试结果发现 不同倍率下,所提方法均大幅优于其他方案,超出次优模型0.2~0.5dB不等
贡献点:
-
提出一种新颖的框架,包含divergence与convergence 两个阶段;
-
半监督方式训练divergence阶段模型,采用triplet损失迫使预测的发散性;
-
创建一个8x超分数据集D2CRealSR;
周会问题
问题1:为什么使用Y通道?
答:作者认为使用RGB通道的可能使得网络注重点在纹理上,而Y通道可以让网络着重看重图片的空间和亮度。
问题2:triplet 损失函数的输入
答:举例 第i个网络分支网络输出记做$I_i
$,第j个网络分支输出结果记做$I_j
$,则Anchor记做 $I_i-I_{HR}
$,正例positive记做0矩阵(1-1=0),负例negative记做 $I_j-I_{HR}
$,作用是使得每个网络分支参数有区别不一样,确保网络参数不同.尽量保证网络参数不共享.
问题3:收敛区域的输入是怎么构成的。
答: 采用divergence 网络输出的M个结果 concat 操作得来。 附带 concat 和add 的区别?
答:add 是特征图相加,通道数不变;concat是通道数的增加。 add 计算量比 concat的计算量小。详情
问题4:收敛区域的方案、W
将concat得到结果$I_D^i
$进过两层卷积训练得到权重参数W,然后将$I_D^i*W
$作为网络的输出$I_{SR}
$.
权重W 是经过网络训练得到的。
问题5 table 2实验解释
table2 中是指去掉收敛层、triplet、deep res相应的结果,以此证明网络设置收敛层、triplet loss、深度残差的重要性。