图像分割
图像分割即为图片的每个对象创建一个像素级的掩膜,该技术可使大家对图像中的对象有更深入的了解。
图像分割分为:语义分割和实例分割。
语义分割(根据人的类视为一个整体,分割)
实例分割(每个人视为不同的实例)
计算机视觉的五大应用
1. 语义分割-FCN (Fully Convolutional Networks)全卷积网络
一句话概括原理:
FCN将传统卷积网络后面的全连接层换成了卷积层,这样网络输出不再是类别而是heatmap;
同时为了解决因为卷积和池化对图像尺寸的影响,提出使用上采样的方式恢复尺寸。
核心思想:
- 不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。
- 增大数据尺寸的反卷积(deconv)层。能够输出精细的结果。
FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。
最后逐个像素计算softmax分类的损失, 相当于每一个像素对应一个训练样本。
上采样upsampling方式:最临近插值、双线性插值、反卷积(转置卷积)
反卷积(转置卷积)deconvolutional
反卷积/转置卷积:它并不是正向卷积的完全逆过程。反卷积是一种特殊的正向卷积,先按照一定的比例通过补0来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积。
通过反卷积操作并不能还原出卷积之前的图片,只能还原出卷积之前图片的尺寸。卷积和反卷积,并没有什么关系,操作的过程也都是不可逆的
反卷积用在什么地方?
- 反卷积/转置卷积在语义分割领域应用很广,如果说pooling层用于特征降维,那么在多个pooling层后,就需要用转置卷积来进行分辨率的恢复。
- 如果up-sampling采用双线性插值进行分辨率的提升,这种提升是非学习的。采用反卷积来完成上采样的工作,就可以通过学习的方式得到更高的精度
conv --> deconv --> 结果1
反卷积具体步骤:
- 将上一层的卷积核反转(上下左右方向进行反转)。
- 将上一层卷积的结果作为输入,做补0扩充操作,即往每一个元素后面补0。这一步是根据步长来的,对于每个元素沿着步长方向补(步长-1)个0。例如,步长为1就不用补0了。
- 在扩充后的输入基础上再对整体补0。以原始输入的shape作为输出shape,按照卷积padding规则,计算pading的补0的位置及个数,得到补0的位置及个数。
- 将补0后的卷积结果作为真正的输入,反转后的卷积核为filter,进行步长为1的卷积操作。
注意:计算padding按规则补0时,统一按照padding=‘SAME’、步长为1*1的方式来计算
Unpool 反池化
反最大池化需要记录池化时最大值的位置,记录位置后,其他地方补0
反平均池化不需要此过程。
DeconvNet
对称结构。先编码再解码
2.实例分割
待续…