本文主要分析了主流的几种框架及其发展历程。同样参考了以下几篇文章。
https://www.jeremyjordan.me/semantic-segmentation/
http://blog.qure.ai/notes/semantic-segmentation-deep-learning-review
http://www.myzaker.com/article/5968490c1bc8e00302000033/ (翻译)
1. 语义分割主要的数据库
- PASCAL VOC 2012 Segmentation Competition
- COCO 2018 Stuff Segmentation Task
- BDD100K: A Large-scale Diverse Driving Video Database
- Cambridge-driving Labeled Video Database (CamVid)
- Cityscapes Dataset
- Mapillary Vistas Dataset
- ApolloScape Scene Parsing
2. 主流方法
- FCN (https://arxiv.org/abs/1411.4038)
方法描述:
使用全卷积网络进行语义分割(Fully Convolutional Networks for Semantic Segmentation),于2014年提出
主要贡献:(a)将端到端的卷积网络应用于语义分割领域,(b)修改 Imagenet 预训练网络并应用于语义分割领域,(c)使用反卷积层进行上采样,(c)引用跳跃连接,改善上采样的粒度
相关解释:
本论文的关键点是分类网络中的全连接层可视为使用卷积核覆盖整个输入区域的卷积操作。这相当于根据重叠的输入图像块评估原始分类网络,但由于计算过程由图像块的重叠部分共同分担,这种方法比之前更加高效。尽管该结论并不是第一次提出,但它显著提高了 VOC2012 数据集上模型的最佳效果。
将全连接层在 VGG 等 ImageNet 预训练网络中进行卷积操作后,由于CNN 中的池化操作, 特征图仍旧需要上采样。反卷积层不使用简单的双线性插值,而是学习所进行的插值。反卷积层又被称为上卷积(upconvolution),完全卷积(full convolution)、转置卷积(transposed convolution)或微步卷积(fractionally-strided convolution)。
然而,由于编码器模块将输入分辨率降低了32倍,因此解码器模块难以产生细粒度分割,因为在合并期间会丢失信息。因此,从更高分辨率的特征映射引入跳跃连接(shortcut/skip connections)。较早层的跳跃连接(在下采样操作之前)提供了必要的细节,以便为分割边界重建精确的形状。实际上,我们可以通过添加这些跳过连接来恢复更细粒度的细节。
复现与应用:
(1) tensorflow: https://github.com/shekkizh/FCN.tensorflow
(2) caffe: https://blog.csdn.net/u013059662/article/details/51851797
(3)gluon: https://zh.gluon.ai/chapter_computer-vision/fcn.html
结果:
它也是一种FCN,但在医学上使用广泛。它是一个全卷积网络,输入和输出都是图像,没有全连接层,较浅的高分辨率层用来解决像素定位的问题,较深的层用来解决像素分类的问题。
实现:
(1) keras: https://github.com/zhixuhao/unet
(2) caffe: https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/
未完待续