计算机视觉

FCN - Fully Convolutional Networks for Semantic Segmentation

  1. 全卷积网络

    1. 将全连接层转换为卷积层,使得输入的图片大小不受限制。
    2. 输入经过一系列的 Conv-Pooling 后,feature map 比原图小 (FCN经过了五层 Pooling)
      为了实现pixel-wise prediction,可以采用最近邻上采样或者shift-and-stitch方法。或者使用双线性插值上采样法
    3. 基于 Patchwise 采样的训练方法可以缓解类别不平衡问题和空间相关性问题,但损失了一部分全局信息,是有损采样。而FCN将整张图片作为输入去训练,保留了全局信息
    4. Pooling 操作会使计算量下降,具有尺度不变性
  2. 架构

    FCN-32s - VGG16 (将全连接转换成卷积 4096 - 4096) -> 21 Conv 1x1 -> bilinear upsampling 32x -> crop -> softmax loss
    【这里的 filters 为21,是因为数据集中一共有21类】
    输入图片在第一层卷积前,padding 100
    转为卷积的 FC6,FC7 后面接0.5 dropout
    双线性插值可以用 deconvolution 代替。根据实验结果,双线性插值与反卷积产生的效果差别不大。

    pad the input and crop 使得输入可以为任意大小且输出与输入的大小相同

    网络权重通过迁移对应数据集上的分类网络得到

    FCN-16s - 计算 Pooling 4 -> 21 Conv 1x1 -> crop 和 FC7 -> 21 Conv 1x1 -> deconv/s2,然后相加 -> deconv/s16 -> crop -> softmax loss
    FCN-8s 同理,但一共训练了三次,先迁移 VGG16,训练 FCN-32s,然后迁移并训练 FCN-16s,最后迁移训练 FCN-8s

  3. 实验框架

    在整张图像上训练的效果与固定输入图片大小,然后 sampling patch【即 crop randomly 】相同
    不需要对 class balancing 单独处理
    最后一层 deconv 转换成双线性,前面的 deconv 在双线性初始化的情况下再训练
    【然而,开源的代码中全部使用双线性插值的方法】

SegNet - A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation

  1. max-pooling 与 sub-sampling 降低了特征的分辨率能力(即无法把握图片的局部信息)
    SegNet将低分辨率特征映射到输入分辨率级别。【采用 memorized max-pooling indices 可以获得更准确的边界位置信息】
    retrain boundary information in feature maps
    efficient memory and computation
    end-to-end

  2. 结构

    • encoder - 使用 VGG16 的结构,去掉了最后两层全连接。即 Conv - BN - ReLU 2 2 3 3 3,五次MaxPooling
    • decoder - 将 encoder 翻转过来。这里的上采样:Max Pooling时保存位置索引。上采样时恢复,其他位置置0。这样的优点是增加边界描述信息,减少网络参数,具有通用性
  3. 补充

    训练过程中增加了类别平衡。一个类别对应的权重为:该类别在训练图片中的占比的中位数。
    作者之后又提出了 Bayesian SegNet

DeconvNet - Learning Deconvolution Network for Semantic Segmentation

  1. FCNs 的限制

    • 感受野固定,对于过大的物体可能只看到局部,过小的物体被当作背景
      (skip architecture 在边界信息和语义信息中进行权衡)
    • 物体的细节结构在encoder过程中丢失
      (bilinear interpolation 直接将 coarse feature maps 扩大32倍)
  2. 本文结构与 SegNet主要区别是

    DeconvNet 在 7x7 feature maps【即 max pooling 5 的输出】后面接了两个全连接层
    即与VGG相同

  3. VGG的输出 1 x 1 x 4096 (deonv7/s1)-> 7 x 7 x 512 (unpool)-> 14 x 14 x 512,然后通过 deconv 和 unpool 交替出现的结构

    这里反卷积为 kernel 3 strides 1 pad 1,即 feature maps 大小不变

  4. Unpool captures example-specific structures
    Unpool追踪物体的信息
    Deconv captures class-specific structures
    Deconv确定是哪类物体

  5. 训练过程

    分两步训练:简单样本 -> 复杂样本 (目标:instance-wise)

    图片被分为多张proposals,最终将这些proposals聚合

    fully-connected CRF

    Ensemble

ENet - A Deep Neural Network Architecture for Real-Time Semantic Segmentation

  1. 结构

    end-to-end 和 real time

    input -> initial block -> bottleneck

  2. 策略

    • 图片分辨率 feature map resolution
      下采样缺点:损失空间信息,特别是边缘信息;语义分割要求输出的大小与输入相同,使用上采样会增加模型大小与计算代价
      下采样优点:更大的感受野,有利于区别不同的类(更具有判别性)【结合 dilated convolution 获得更大的感受野】
      对于损失空间信息的缺点来说,FCN 采用增加特征图维度的方法,SegNet 采用记录 MaxPooling 的索引,ENet 在上采样时,使用反卷积而不是卷积,同时像 SegNet 一样记录 MaxPooling 的索引位置。同时,下采样率仅为 8x

    • 较早的下采样 early downsampling
      视觉信息有较大的空间冗余,作者认为最初的网络层不应该有助于分类,相反,应作为特征处理器和图像预处理器

    • decoder 结构小于 encoder 结构,不是镜像对称的
      encoder 负责信息处理和过滤,decoder 上采样编码器的输出。

    • identify mappings in deep residual networks 指出卷积前加 ReLU 和 BN 的效果好。这里使用 PReLU 代替 ReLU

    • Information-preserving dimensionality changes
      使用 initial block,10倍速度加速
      下采样时 projection 1x1/s2 转变为 2x2/s2

    • factorizing filters - 5 x 5 -> 1 x 5 + 5 x 1

    • Dilated convolution
      获得更大的感受野。但是,交叉使用不同 rate 的空洞卷积的效果更好。
      本文中, dilated 1 -> dilated 2 -> asymmetric 5 -> dilated 4 -> dilated 1 -> dilated 8 -> asymmetric 5 -> dilated 16

    • Regularization 使用了 Spatial Dropout。dropout rate 0.01

Deeplab -Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

DCNN 具有平移不变性,使网络学到抽象的判别特征 abstract data representation
但损失了空间信息,不适合 dense prediction

语义分割面临三个挑战

  1. reduced feature resolution 由于下采样使得特征精度下降 -> atrous convolution

  2. 存在不同尺度大小的物体 -> atrous spatial pyramid pooling ASPP

  3. 平移不变性导致位置信息精度下降及边界信息丢失 -> fully connected pairwise CRF

空洞卷积扩大感受野的同时不需要增加参数和计算量

方法

  1. 空洞卷积:在不增加计算量的情况下扩大感受野,因此可以减小降采样率

  2. ASPP:Pool5 后,使用 rate 为 6,12,18,24 的空洞卷积,然后经过 FC7 1x1 + FC8 1x1,最后四路相加合并

  3. FC CRF:每个像素 i 具有类别标签 (x_i) 与观察值 (y_i)
    (P(X=x|I) = frac{exp(-E(X|I))}{Z(I)})
    (E(X|I) = sum_{i} heta_i(x_i) + sum_{ij} heta_{ij} (x_i, x_j))

    ( heta_{ij}) 与位置、颜色有关
    实际使用中,使用平均场近似方法

后续论文

  1. Rethinking Atrous Convolution for Semantic Image Segmentation

  2. Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation

  3. Understanding Convolution for Semantic Segmentation

原文地址:https://www.cnblogs.com/viredery/p/semantic_segmentation.html