关于语义切割(semantic segmentation)网络中upsample方法总结
引言介绍:
语义切割网络中,很多网络结构都会被设计成对称型,在这种类型的网络中,可以总结为”编码-解码”两个阶段。在编码阶段,主要任务是提取feature map,一层一层的进行downsample以保留最重要的feature。在解码阶段,主要是根据feature map进行语义重建,使得最终feature map能恢复到original size. 而upsampling就是在解码阶段中最常使用的方法。
本文主要针对语义切割领域中出现的upsampling方法进行总结分析。
现有的upsampling 方法:
Upsampling(上采样),就是将原本低分辨率的对象在保留texture和featurn的条件下进行成比例放大。
Upsampling的难点在于如何产生新的采样数据,并填充在高分辨率图片上。在整个upsmapling的过程,主要有两个难点:1)相对应位置点的映射,因为图片尺寸的不同势必带来pixel value所处位置的变化。 2)在进行坐标映射后,如何确定border(边界区)和同质区(Homogenous region),并对剩下的区域进行填充。
方法介绍:
- 双线性插值
同时可以对X,Y轴两个方向进行插值。将图片对象映射在坐标系上
假设源图像大小为mxn,目标图像为axb。那么两幅图像的边长比分别为:m/a和n/b。注意,通常这个比例不是整数,编程存储的时候要用浮点型。目标图像的第(i,j)个像素点(i行j列)可以通过边长比对应回源图像。其对应坐标为(i*m/a,j*n/b)。显然,这个对应坐标一般来说不是整数,而非整数的坐标是无法在图像这种离散数据上使用的。双线性插值通过寻找距离这个对应坐标最近的四个像素点,来计算该点的值(灰度值或者RGB值)。
举例:
将上图3*3的feanture map 进行上采样,最终得到5*5的输出。在将原图片中的pixel Value投影到新的位置点后,对于剩余区域的填充:在已知四点 = (
), x12= (
),
= (
),
= (
), 假设有functionin
,对于剩余点 (
):
- 转置卷积
Transpose convolution是现有upsamling method中最常被使用的,研究者认为,图片在network中处理过程中,存在一种处理“路径”,而在对称型的网络中,upsampling的路径和downupsampling的路径多多少少存在一种对称关系(没有研究结果能证明这个说法)。设单次convolution操作为y=C*x,从整个网络的角度思考,假设我们已得到
,则在反向传播(back propagation,)中:
从中可以得到和
的关系,则转置卷积,实际上就乘
实际操作演示:2*2 feature-------------->4*4
通过padding恢复到原始尺寸。再乘以
- unpooling(反池化)
操作非常简单,回到对称网络结构,编码阶段进行maxpooling时,记录下max pixel value的位置信息,其余位置填充0
反池化的优点在于参数需求少,节省内存
ps:本文未经许可,禁止转载和使用文中图片和公式,否则追究法律责任,谢谢合作!!