多篇用DL做Semantic Segmentation的文章总结
多篇用DL做Semantic Segmentation的文章总结
最近总结了一下语义分割相关的文章。
这是我在一篇文章(deconvolution network)中看到的近期一些方法的评估表:
下面谈到的一些文章整理都是关于以上的方法。
1、 FCN8s 文章出处:CVPR2015-FullyConvolutional Networks for Semantic Segmentation
CNN对分类问题的效果非常好,但不适合直接做分割;
CNN模型的输入维度固定则输出维度也被固定,不适合输入图片尺度变化的情况;
FCN是对CNN改进适合直接用于分割的模型,直接拿segmentation 的 ground truth作为监督信息,训练一个端到端的网络,让网络做pixelwise的prediction,直接预测label map。
网络特点:所有Layer都是Conv Layer,无FC层,适合end-to-end和dense/pixelwise prediction,输出结果就是Segment Map;
输入:整幅图像;
输出:resample到corresponding空间维度。
2、TTI-zoomout-16 文章出处:CVPR2015-Feedforwardsemantic segmentation with zoom-out features
这篇文章的方法是superpixel-level的,主要是基于CNN实现的。
这篇文章的亮点应该是:1,它把CNN每一层的特征都拿出来使用,兼顾了local信息和global信息2,直接使用image classification的现有成果,不用自己训练网络,方便高效,易于推广。3,实验结果好,比FCN的方法结果好。
从作者贴出的example来看,分割的边缘还是有些粗糙,原因是:本文方法是直接基于superpixel做特征提取和分类的,提取的superpixel是不够准确的,一个superpixel中可能包含了多个class。要优化这个边缘,应该还是要挖掘出pixel level的细节信息。
3、DeepLab-CRF 文章出处:ICLR2015-SemanticImage Segmentation with Deep Convolutional Nets and Fully Connected CRFs
主要在FCN改进的地方:
通过控制InputStride实现Fine目标(Dense Extractor)(hole algorithm),而不用像FCN结合Lower Layer和上采样的方式来Fine,相对FCN减小了运算量。Author最后还是结合了Lower Layer信息,进一步提升了效果。
以前对于分割物体的精确定位主要是两个方面:
一、 利用多层信息(如FCN中用前几个pooling层做预测);
二、 利用super-pixel(zoomoutrepresentation)。
本文提出了用CRF进行优化,主要是能够更好的修复分割的边界结构。
4、CRFasRNN 文章出处:ICCV2015-ConditionalRandom Fields as Recurrent Neural Networks
主要贡献点:将CRF融入到deep learning的网络结构中,作为其中的一层(递归神经网络)
进行端对端的学习时,CNN的训练也得到CRF的影响,将CNN的参数学习和CRF的参数学习统一到一个网络。
5、 Deconvolution Network 文章出处:Learning Deconvolution Network for SemanticSegmentation
FCN的缺点:由于感受野的固定,如果物体大了或者小了,分割效果就不好。而且通过纯粹的双线性插值算法得到最终的得分概率图,不太准确,虽然用了CRF进行了改善,但没有从根本上解决。
本文的创新点:
一、 学习了一个多层反卷积网络代替简单的双线性插值;
二、 将objectproposal(edge box)送入训练后的网络,然后整幅图像是这些proposal的分割结果的组合,这样就可以解决物体太大或者太小所带来的分割问题。
6、SDS 文章出处:Simultaneous Detection and Segmentation
这篇文章的效果不算太好,主要创新是把detection和分割结合一起。对于检测来说,只能提供一个粗略的位置,而对于语义分割的网络来说需要对每个点进行Label。
缺点:
一、 SDS使用了掩码后的图像,有很多边缘信息,而在CNN训练中并没有表现出来;
二、 SDS对每幅图产生2000多个候选框,每个候选框都要产生CNN特征,这是非常耗时的,Convolutional Feature Masking for Joint Object and StuffSegmentation这篇文章对这个问题做了很好的解决。
7、DeepLab-public 文章出处:Weakly-and Semi-Supervised Learning of a Deep Convolutional Network for Semantic ImageSegmentation
主要创新点在于:训练网络时用的是一些简单的训练数据如bounding boxes或者图像级标签,提出的是半监督和弱监督学习,不要太多的annotation effort而可以得到较好的结果,可以接近全监督学习的网络结果。这篇文章的网络框架用的是deepLab-CRF。
8、boxup 文章出处:BoxSup: ExploitingBounding Boxes to SuperviseConvolutional Networks
创新点:很多语义分割的CNN训练都是靠大量的annotated segmentation masks,这种方式需要大量的工作来标记。本文通过boundingbox来进行相应的监督学习,主要是一个迭代过程,首先在区域proposal的配合下用bounding box得到分割掩膜,得到掩膜反过来更新CNN模型,再用CNN模型估计掩膜,直到迭代终止。
这是论文里面的优化的核心部分,前者是考虑与bounding box的平均交集最多的segmentation mask作为监督信息,后者考虑的就是FCN(之前有文章介绍过)。
9、DecoupledNet 文章出处:DecoupledDeep Neural Network for Semi-supervised Semantic Segmentation
之前的很多方法都需要大量的ground truth,这样导致的结果是分割的图像类别有限制(20类都需要大量的ground truth),之前有提出半监督的训练,通过不断迭代的方式进行,但那种方式可能导致的问题的没法迭代收敛,相应的实现接口也比较复杂。这个方法对于类别数没有限制,具有可扩展性。
decoupling classification and segmentationreduces search space for segmentation significantly, which makes it feasible totrain the segmentation network with a handful number of segmentationannotations
输入一张图片,分类网络得到图片的标签,分割网络得到相应的每一类的前景背景分割图(概率分布?),中间加入bridge层提取class-specific information。
训练过程:先用大量的image-level 标签训练前面的分类网络,然后用少量的pixel-level标签来进行后续网络的训练,由于pixel-level标签较少,用数据增加得到人工的训练样本。
分类网络给的class-specific activation maps可以减少分割网络中优化时的搜索空间,因为只有两类(前景或者背景),这样减少了很多网络参数。
创新点和优点:
一、 提出了一个将分类和分割网络结合的半监督网络,对于训练来说比较简单;
二、 引入了bridgelayer连接两个网络,主要是提取每一类的activation map然后进行前景背景的分割,这些map提供了很好的先验信息,使得整个参数学习过程也比较简单容易,只需要少量的anotation。