深度学习入门:Fully Convolutional Networks for Semantic Segmentation

来源:互联网 发布:dota2赌博软件 编辑:程序博客网 时间:2024/04/26 14:09

              深度学习入门:Fully Convolutional Networks for Semantic Segmentation


      经典的AlexNet的网络架构模型是conv+pooling+fc+softmax层,该网络架构主要用于的图像的分类,达到了当年的state-of-the-art的结果。但是这篇paper主要是做语意分割,在最后那层直接把fc全连接层都改成了fc-conv层,但是,我们想pixelwise prediction,但是在conv+pooling中却是downSampling,这里我们可以在最后一层加上一个deconvolution layer,本质上就是通过差值算法来补上像素确实的地方。

        详细的定义了fully convolution layer,并且阐述了它在spatial dense prediction的应用。还定义了一种叫做skip的新行cnn框架,它可以把浅层的,描述整体信息清楚的层和粗糙的,深度的层进行联合起来到达了很好的效果。其中FCN-8s的效果最好。在阐述了convnet在图像处理各个方面牛掰的应用之后,提出了在每一个像素上从粗糙到精致的推理用以语意分割。表明fcn-net可以一次读入任意大小的图片在语意分割方面达到很好的效果。在network中,upsampling使得net可以进行pixelwise的预测。model主要是通过把fc改成fcn,fine-tuning从分类model中学习到的参数,把当前用于分类的cnn改变成为语意分割。x效果如下:

      仔细看一下,你会发现,在最后那儿是21维度的,但是他的面积却很小,如何实现的pixelwise的呢?具体是通过差值算法把像素"补起来"就可以。具体架构如下:


     需要注意的是:最后的upsampling操作是反卷积deconvoulation层,主要是用差值算法去上采样(upsampling)粗糙的输出(指的是conv+pooling+relu之后的feature map,说白了就是和源图像相关的空间信息)转化到pixel-dense的输出。作者在后面还提出了在不同的层次上会得到不同的空间架构,也就是说浅层得到的信息是相对具体,也就是边缘,颜色,纹理等信息,较深层次得到的是模糊的整体架构,可以试图把浅层的feature map和深层的feature map相加会得到比较好的结果,但是有一个问题,深层和浅层的空间大小是不同的,怎么办?那就对比较系数的进行再次划分呗,看看下面的架构:

      例如最后那一列中的第二行,是在pool4层上添加一个1*1的filter,然后把这个输出的结果和conv7的输出进行融合。然后就是把这次的输出结果和pool3上进行1*1的filter的输出进行融合,就会得到dense output.最终的结果表明;FCN-8s的结果最好。但是但是,虽然可以达到比较好的效果,还是有缺陷的,因为如果图片中的主题过大,会得到inconsistent的效果,当图片比较小的时候,不能检测,如下:效果和缺陷:





        
1 0
原创粉丝点击