三、图像分割的模型
5.Deconv Net
2015年的模型,其网络结构为:
这是一个基于VGG16改进而来的模型,标准的哑铃结构,左右对称,输入与输出大小一致。
下采样部分使用的是VGG16的前13层,共计13层卷积,中间还夹杂有Relu和MaxPooling,下采样之后,中间连着两层全连接以增强分类效果。
上采样部分与下采样一致,这里使用了反卷积和反池化。
反卷积:又叫转置卷积(非数学意义上的),是卷积的逆过程,许多网络都有用到,不过多描绘。
反池化:前面使用了MaxPooling,会丢失空间位置信息,这种信息对语义分割来说很重要,所以在池化的时候记录了最大池化的索引,然后上采样反池化时对应位置的把**值放回原位。
训练:
- Batch Normalization:每一层的输入分布归一化到标准高斯分布,减少训练难度。
- Two-stage Training:先用简单的例子训练网络,再用复杂的例子对网络进行微调。
可以看到,其相比于FCN分割出的图像更为精细:
6.SegNet
2016年出来的网络,结构跟Deconv Net差不多:
相对Deconv Net不同之处为:
- 去掉了中间的全连接层,参数量大大减少,速度提升了许多。
- 上采样时,Deconv Net用的Deconvolution,而SegNet使用的是convolution。
与Deconv Net一样,它也使用了反池化(也就是记录MaxPooling索引)的手段:
好处有:
- 改善了边界划分
- 减少了端到端训练的参数量
- 仅需要少量的修改而可合并到任何编码-解码形式的架构
看一下结果,SegNet划定边界的能力更强:
精度比较:
相关代码(pytorch):