网站首页 > 技术文章 正文
作者丨happy
来源丨AIWalker
论文链接:https://arxiv.org/pdf/2112.12089.pdf
本文是 X-Pixel 团队关于dropout在图像超分中应用的探索。Dropout不适用于low-level任务已成为常识性认知,却鲜少有学者对其背后的机理进行挖掘分析。本文通过充分的实验与分析得出:合理使用dropout有益于超分模型性能提升,并改善其泛化性能。如此有意义的研究,何不跟着笔者一起观赏一番呢?
Abstract
Dropout有助于缓解high-level视觉任务中的过拟合问题,但在low-level视觉任务(如图像超分)中却鲜少应用。作为经典的回归问题,SR具有与high-level任务不同的行为:对dropout操作非常敏感。
然而,本文研究表明:合理的使用dropout有益于SR模型,提升其泛化性能。具体来说,dropout更适合于嵌入到网络的尾部,并对于多退化情形帮助极大。下图给出了不同配置下采用Dropout前后的性能对比,可以看到:引入dropout可以大幅提升模型的泛化性能,甚至可以将SRResNet的提升到优于RRDB的程度。重要的是,添加dropout仅需一行code。真可谓:One line of code is worth a ten-fold increase in the model parameters.
该发现打破了我们的常识并启发我们探索其工作机理。我们采用两种分析工具(Channel Saliency Map与Deep Degradation Representation)进行分析,分析结果为实验发现提供了佐证并为SR模型的理解提供了新视角。
Observation
关于如何将Dropout引入到超分网络中,我们做了很多尝试并在不同配置下得出了完全不同的行为表现,见上图。
- Dropout is harmful for SR. 该实验为常规超分配置,即bicubic退化。dropout则为广泛采用的通道级形式(见上图a)。正如预期,dropout会导致模型性能大幅下降(与常识相一致)。
- Dropout does not affect SR. 我们还发现一个与上述结论相悖的特例(见上图b),即仅在最后卷积之前添加dropout。此时,dropout对于模型性能无影响,这意味着:那一层的特征可以随机masked且不会影响回归结果。这些特征发生了什么?这是否意味着回归与分类网络具有某些共性呢?
- Dropout is beneficial for SR. 最后的发现就更有意思了(见上图c和d),在多退化配置下,dropout有益于SR。这意味着:dropout可以一定程度下改善超分模型的泛化性能。
上述实验结果为我们提供了寻找low-level任务中dropout有效性的线索。我们将从不同角度对其进行分析,如dropout使用策略、dropout的工作机制。
Apply Dropout in SR Network
为探索Dropout的实用策略,我们以SRResNet、RRDB作为基线进行尝试。影响dropout使用的主要有两点:(1) 使用位置;(2) 使用策略,即维度和概率。
上图给出了dropout的不同使用位置示意图,可以划分为三大类:
- dropout before the last-conv. 该情形见上图a,这也是本文最终的发现与结论;
- dropout at middle of network. 该情形见上图a,即作用在body部分;
- dropout in residual network. 该情形见上图c与b。
除了使用位置外,维度与概率是另一个重要的因素。在维度方面,有channel与element两种形式:channel形式会随机丢弃整个changnel,而element则随机丢弃所有特征的某些element。
丢弃概率则会决定了channel/element的丢弃比例。在分类网络中,50%的概率不会影响最终的结果但会提升泛化性能。然而,该概率对于SR来说过大。为获得可能的增益且不影响模型,我们首先测试了三种概率:10%、20%以及30%。
总而言之,我们具有八个候选位置、两个候选维度以及三个候选概率。然而,大部分结果是有害的。last-conv与channel形式drop的组合不会影响SR性能,且有益于多退化配置下的超分。
Experiments
How to apply Dropout
在该部分实验中,作者以bicubic退化配置探索Dropout的使用方式。上图给出了关于dropout实用位置、概率以及形式的实验结果对比(注:bicubic退化配置),从中可以看到:
- 不同的dropout位置具有完全不同的性能。当采用单个dropout时,越靠近模型尾部性能越好;当采用多个dropout时,越多的dropout导致越多的性能下降。总而言之,last-conv方案性能最佳。
- element形式的dropout倾向于降低模型性能,而channel形式dropout则具有更好的性能;
- 更大的dropout概率会带来负面影响,在该配置下10%会是一个不错的选择。
- last-conv+channel的实用组合可以带来有意义且鲁棒的结果。
Multi-degradation setting
在该部分实验,作者采用Real-ESRGAN一文的高阶退化(如对高阶退化感兴趣,可移步 【Real-ESRGAN:走出温室,迈向实用】)方式进行模型训练。
上表给出了不同配置下使用dropout前后的性能对比,从中可以看到:
- 在多退化配置下,引入dropout可以大幅改善模型的性能。最大性能提升高达0.78dB(Real-SRResNet)与0.95dB(Real-RRDB)。
- 表中红色标注表示使用Dropout后,SRResNet的性能超越了RRDB。
上图给出了使用dropout前后模型的可视化效果对比,可以看到:使用dropout的模型具有更好的内容重建、伪影移除以及降噪效果。总而言之,dropout可以改善多退化配置超分模型性能。
此外,作者还在bilinear、NN及其与噪声组合数据上进行了性能验证。可以看到:对于“域外”测试集(NN),引入dropout仍可以看到可见的性能提升。这说明:Dropout可以提升模型对于未知退化的泛化性能。
上表给出了关于dropout概率的消融分析,可以看到:
- 对于Real-SRResNet而言,10%-90%的概率均有益于性能提升;
- 对于Real-SRResNet,默认选择p=0.7;对于Real-RRDB,默认选择p=0.5.
Interpretation
在得到上述结果之后,我们非常好奇:引入dropout后到底发生了什么,它又是如何改善模型泛化性能的。接下来,作者从模型可解释性与可视化两个角度进行了分析。
上图给出了PSNR与显著性图之间的相关性。当我们对某些特征进行mask后,我们可以得到不同的PSNR值,低PSNR对应了更亮的显著性图,更亮的只意味着对超分结果的更大影响。很明显:不同特征对于最终的结果影响程度是不一样的。
那么dropout会平衡特征的重要性,打破co-adapting吗?正如上图所示,引入dropout后,特征与属性图得到了平衡。
为进一步验证,我们zero某些通道并线性缩放其他特征,结果见上图。可以看到:未使用dropout训练的Real-SRResNet模型性能出现了严重下降;而使用了dropout训练的模型则保持不变。也就是说,对于使用dropout的模型来首,PSNR不再仅仅依赖于特定的几个通道。哪怕丢弃到三分之特征仍可保持性能不变。总而言之,某些特征对于重建更为重要,而****dropout可以平衡不同特征的重要性。
评估泛化性能最直接的方式是在更宽范围数据集上进行测试,但对于模型泛化性的预测非常难。本文采用DDR工具进行了分析(DDR说明:网络处理多退化的时候可能是先给他们分分类再分别处理。也就是说:分的越开(越不集中)泛化性越差),结果见上图。从中可以看到:
- SRResNet的聚集程度弱于Real-SRResNet,这说明:相比bicubic退化,采用更多退化类型数据训练的模型具有更好的泛化性能;
- 相比Real-SRResNet(p=0),Real-SRResNet(p=0.9)引入Dropout进一步提升了聚集程度。这说明:Dropout可以进一步提升Real-SRResNet的泛化性能。
- 作者进一步引入了CHI(Calinski-Harabaz Index)指标描述聚类分离度(CHI越低意味着更优的泛化性能)。CHI会随dropout概率提升而降低,进一步说明:dropout有助于改善超分模型的泛化性能。
- 一个有意思的发现:带噪数据的分布总是“特立独行”。这与前面表中的结果相一致,噪声数据的性能总是远弱于clean数据。
为验证:dropout会不会改变模型的收敛特性。作者以Real-SRResNet、Real-RRDB以及SwinIR进行了对比,见上图。可以看到:dropout不会改变模型的收敛特性,收敛曲线几乎一致,同时具有更优的性能。最后贴上所得dropout使用方案对SwinIR性能影响,见下图。可以看到:采用Dropout训练后,SwinIR的性能得到了进一步提升,最高提升达0.46dB。这进一步说明了所得方案的通用性。
猜你喜欢
- 2024-10-17 【Python深度学习系列】网格搜索神经网络超参数:丢弃率dropout
- 2024-10-17 中英趣译,用英文说对方“活该”才痛快!
- 2024-10-17 问题:ID:16145下列属于dropout特性的有()
- 2024-10-17 那些与out有关的英文表达! 与out有关的英语词组
- 2024-10-17 Dropout和标准化(Batch Normalization)
- 2024-10-17 麦克风将被静音,美网友都在猜:特朗普会如何应对?
- 2024-10-17 不只Dropout,刚刚,至少30项机器学习技术都变成了谷歌专利
- 2024-10-17 Dropout VS BN: 别在你的网络中使用Dropout
- 2024-10-17 神经网络中的损失函数正则化和 Dropout 并手写代码实现
- 2024-10-17 TensorFlow中tf.nn.dropout防止过拟合(overfitting)
你 发表评论:
欢迎- 11-19零基础学习!数据分析分类模型「支持向量机」
- 11-19机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现
- 11-19我以前一直没有真正理解支持向量机,直到我画了一张图
- 11-19研一小姑娘分享机器学习之SVM支持向量机
- 11-19[机器学习] sklearn支持向量机
- 11-19支持向量机
- 11-19初探支持向量机:用大白话解释、原理详解、Python实现
- 11-19支持向量机的核函数
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)