语义分割领域最经常使用的编解码方案中, 上采样是一个重要的环节, 用来恢复分辨率. 经常使用的是, 双线性插值和卷积的配合. 相较于具备必定的棋盘效应的转置卷积, 双线性插值简单快捷, 并且配合后续卷积, 也能够实现和转置卷积相似的效果, 而其余的方法, 如外围补零, 则是会引入过多的冗余无用信息(我的理解, 这个操做在UNet中使用了).github
还有一种方案是扩张卷积为主的方案, 早期的deeplab设计中使用的. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs.
常见的上采样方式: https://github.com/lartpang/Machine-Deep-Learning/issues/25#issuecomment-448911117算法
以当前最优秀的语义分割网络deeplabv3+的结构为例(结合扩张卷积与编解码结构的方案). 能够看见, 为了恢复通过下采样以后特征图, 使用了不少的双线性插值.安全
为了进一步提高当前研究的效果水平, 人们的研究通常是两个方向, 一个是创新, 一个是改进, 固然后者居多. 当前的进步更可能是使用了第二个思路, 可是"改进"的思路却也是最让后来的研究者人找到方向的, 也是通常研究者更愿意作的事情. 这篇文章, 就作的是改进的工做.网络
他们把目光放在了这个最多见的上采样过程上. 文章重点考虑了双线性插值所带来的问题: 过简单的双线性上采样的一个缺点是, 其在准确恢复像素预测方面的能力有限. 双线性上采样不考虑每一个像素的预测之间的相关性,由于它是数据独立的.框架
所以,卷积解码器被须要来产生相对较高分辨率的特征图, 以便得到良好的最终预测. 可是这个须要也会致使两个问题:ide
实验代表,在不考虑特征映射分辨率约束的状况下,能够设计出更好的特征聚合策略。
虽然当前不少工做已经花费了不少精力来设计更好的解码器, 但到目前为止, 它们几乎都不能绕过对融合特征的分辨率的限制以及很难更好地进行特征聚合.函数
为了处理这些问题, 文章提出了一个可学习的"上采样"模块: DUpsamling. 来替换被普遍使用的双线性插值上采样方法, 恢复特征图的分辨率. 来利用分割标签空间的冗余, 以及准确的恢复像素级预测. 减小了对卷积解码器的精确响应的须要. 所以, 编码器再也不须要过分减小其总体步幅, 从而大大减小整个分割框架的计算时间和内存占用.性能
同时, 因为 DUpsampling 的有效性, 它容许解码器在合并以前将融合的特征降采样到特征映射的最低分辨率. 这种下行采样不只减小了解码器的计算量, 更重要的是它将融合特征的分辨率和最终预测的分辨率解耦. 这种解耦使解码器可以利用任意特征聚合, 从而能够利用更好的特征聚合, 从而尽量提升分割性能.学习
最后, DUpsampling能够经过标准的 1x1 卷积无缝地合并到网络中, 所以不须要ad-hoc编码. (也就是不须要专门为了使用它而设计网络)
Ad-Hoc,wiki的定义是: 是拉丁文经常使用短语中的一个短语. 意思是“特设的、特定目的的、即席的、临时的、将就的、专案的”. 一般用来形容一些特殊的、不能用于其它方面的的,为一个特定的问题、任务而专门设定的解决方案。
https://zhuanlan.zhihu.com/p/24268597
整体而言, 贡献为提出了一种新的解码器方案:
一个重要的观察是, 图片的语义分割标签Y并非独立同分布的(i.i.d, 也就是互相有依赖), 其中包含着结构信息, 以致于Y能够被压缩而不会形成太大的损失. 所以, 这里不像以前的文章上采样编码器卷积输出F到标签真值F大小, 文章中选择压缩标签真值Y(HxWxC, 已经通过one-hot编码处理, 一个像素只有一个通道对应的类别位置标记为1)到Ywide, 其size和F(Hwide x Wwide x Cwide)一致. 为了更好的进行这个转换, 保证转换中损失更少的信息, 这里设定一个重建偏差. 压缩的方法是:
感受能够直接使用kernel_size=stride的卷积操做来实现. 不知道有没有差别.
关于这个重建偏差(重建偏差也就是要保证变换以后在进行一次反变换后, 与原始信息的差别程度)的计算, 文中给出计算方法:
对于压缩后的数据(1xCwide的那个张量)的反变换(正变换矩阵与反变换矩阵(又称为重建矩阵))后的结果(1xN大小张量)与原始数据(1xN大小的那个张量)使用平方偏差累和进行偏差计算. 优化目标函数:
这个优化问题, 能够利用迭代的标准SGD算法优化. 同时, 这里提到, 使用正交约束, 能够简单的使用PCA来获得这个目标的闭式解.(确实这里很像PCA降维)
在网络训练的时候, 要计算损失, 这里考虑了两种计算方法, 后者更为直接:
对于前面的方法2, 使用了 DUpsample(数据依赖上采样)替换了原始的双线性上采样.
这里提出的方法相同于在空间维度上应用1x1卷积(可使用空间上的1x1卷积实现), 卷积核存储在W里, 也就是前面优化目标函数中的反变换矩阵.
因此这里实际上就没有用到前面那些, 直接就是使用了提出的这个DUpsample操做, 计算最后的损失便可, 前面的公式都没用.没有体会到做者的意思, 这里的上采样滤波器是前面计算好的.
因此说, 主要用到的公式是这里的第二个损失和前面的目标函数.
除了上面提出的线性上采样, 文章还使用非线性自编码器进行了上采样实验. 对自编码器的训练也是为了最大限度地减小重建损失, 而且比线性状况下更通用. 经验上观察到最终的**语义预测精度几乎与使用更简单的线性重建手段是相同的. 所以文章主要关注与线性重建方法.
这里提出的上采样操做有点相似于超分辨率重建任务中的亚像素卷积的操做. 最简单的线性形式的 DUpsample 能够被视为一个使用了预计算上采样滤波器的改进 Depth-to-Space 或 Sub-pixel.
亚像素卷积层, 图片来自: https://blog.csdn.net/antkillerfarm/article/details/79956241
虽然能够经过1x1卷积操做实现DUpsampling, 但直接将其合并到框架中会遇到优化困难, 文章认为, 由于W是利用one-hot编码后的Y来计算的, 原始softmax和提出的DUpsample的计算, 很难产生较为锐利的激活.结果致使交叉熵损失在训练中被卡住, 使得训练过程收敛很慢.
为了解决这个问题, 这里使用了Hinton著名论文 Distilling the knowledge in a neural network 里提到的"温度"的概念. 对softmax添加了一个"温度"T的参数, 来锐利/软化softmax的激活.这个参数T能够再反向传播中自动学习, 无需调整.
对比以往的结构使用的集成策略:
这里的F是最终的双线性上采样/DUpsample以前的卷积输出(此时经过这些上采样能够获得最终像素级预测)
先对生成的特征图进行上采样, 再结合较低层级的高分辨率特征信息. 这样的设计主要有两个问题:
相反, 在提出的框架中, 恢复全分辨率预测的责任在很大程度上已经转移到DUpsampling.所以, 能够安全地下采样要使用的任何级别的低层特征到最后一个特征图Flast的分辨率(特征图的最低分辨率), 而后融合这些特性以产生最终的预测. 表示为:
文章中使用双线性下采样.
这种重排不只使特征始终以最低分辨率高效计算,并且还使底层特征 Fi 和最终分割预测的分辨率分离, 容许任何级别的功能进行融合.
在实验中展现了灵活的特征融合使机制可以利用更好的特征融合, 以尽量提升分割性能.
只有在与上述 DUpsampling 合做时, 下采样低级特征的方案才能工做. 不然, 性能是由解码器的incapable上采样方法的上界所限定的. 这就是为何之前的方法须要上采样 低分辨率的高级特征图 到融合的低层特征映射的空间大小.
以前的上采样后解码主要是由于上采样方法会限制住最终的性能, 因此更不能使用下采样低级特征的方案, 会使得性能更加被限制.
In order to understand how the fusion works, we visualize the segmentation results with and without low-level features in Fig. 4. Intuitively, the one fusing low-level features yields more consistent segmentation, which suggests the downsampled low-level features are still able to refine the segmentation prediction substantially.
提出了一种灵活、轻便的语义图像分割方案. 这种新型解码器采用提出的数据依赖上采样产生像素预测.
实验代表, 与以往语义分割方法中普遍使用的普通解码器相比, 提出的解码器具备有效性和高效性。最后, 与提出的解码器的框架达到了最早进的性能, 同时须要比之前的最早进的方法更少的计算.