在语义分割发展早期,一些研究观点认为将CNN用于图像分割主要存在两个问题:一个是下采样导致的信息丢失问题,另一个则是CNN的空间不变性问题,这与CNN本身的特性有关,这种空间不变性有利于图像分类但却不利于图像分割中的像素定位。从多尺度和上下文信息的角度来看,这两个问题是导致FCN分割效果有限的重要原因。因而,相关研究针对上述两个问题提出了Deeplab v1网络,通过在常规卷积中引入空洞(Atrous)和对CNN分割结果补充CRF作为后处理来优化分割效果。提出Deeplab v1的论文为Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs,是Deeplab系列的开篇之作。

针对第一个问题,池化下采样操作引起信息丢失,Deeplab v1给出的解决方案算是另辟蹊径。常规卷积中,使用池化下采样的主要目的是增大每个像素的感受野,但在Deeplab v1中,作者们的想法是可以不用池化也可以增大像素的感受野,尝试在卷积操作本身上重新进行设计。在Deeplab v1,一种在常规卷积核中插入空洞的设计被提出,相较于池化下采样,空洞卷积能够在不降低图像分辨率的情况下扩大像素感受野,从而就避免了信息损失的问题。

空洞卷积(Dilated/Atrous Convolution)也叫扩张卷积或者膨胀卷积,字面意思上来说就是在卷积核中插入空洞,起到扩大感受野的作用。空洞卷积的直接做法是在常规卷积核中填充0,用来扩大感受野,且进行计算时,空洞卷积中实际只有非零的元素起了作用。假设以一个变量a来衡量空洞卷积的扩张系数,则加入空洞之后的实际卷积核尺寸与原始卷积核尺寸之间的关系:

K=k+(k-1)(a-1)

其中为k原始卷积核大小,a为空洞率(Dilation Rate),K为经过扩展后实际卷积核大小。除此之外,空洞卷积的卷积方式跟常规卷积一样。当a=1时,空洞卷积就退化为常规卷积。a=1,2,4时,空洞卷积示意图如下图所示。

对于语义分割而言,空洞卷积主要有三个作用:

第一是扩大感受野,具体前面已经说的比较多了,这里不做重复。但需要明确一点,池化也可以扩大感受野,但空间分辨率降低了,相比之下,空洞卷积可以在扩大感受野的同时不丢失分辨率,且保持像素的相对空间位置不变。简单而言就是空洞卷积可以同时控制感受野和分辨率。

第二就是获取多尺度上下文信息。当多个带有不同空洞率的空洞卷积核叠加时,不同的感受野会带来多尺度信息,这对于分割任务是非常重要的。

第三就是可以降低计算量,不需要引入额外的参数,如图4-13所示,实际卷积时只有带有红点的元素真正进行计算。

针对第二个问题,Deeplab v1通过引入全连接的CRF来对CNN的粗分割结果进行优化。CRF作为一种经典的概率图模型,可用于图像像素之间的关系描述,在传统图像处理中主要用于图像平滑处理。但对于CNN分割问题来说,使用短程的CRFs可能会于事无补,因为分割问题的目标是恢复图像的局部细节信息,而不是对图像做平滑处理。所以Deeplab v1提出的解决方案叫做全连接CRF(Fully Connected CRF)。

CRF是一种经典的概率图模型,简单而言就是给定一组输入序列的条件下,求另一组输出序列的条件概率分布模型,CRF在自然语言处理领域有着广泛应用。CRF在语义分割后处理中用法的基本思路如下:对于FCN或者其他分割网络的粗粒度分割结果而言,每个像素点i具有对应的类别标签x_i和观测值y_i,以每个像素为节点,以像素与像素之间的关系作为边即可构建一个CRF模型。在这个CRF模型中,我们通过观测变量y_i来预测像素i对应的标签值x_i。CRF用于像素预测的结构如下图所示。

全连接CRF使用的能量函数为:

Deeplab v1模型流程如下图所示。输入图像经过深度卷积网络(DCNN)后生成浓缩的、粗粒度的语义特征图,再经过双线性插值上采样后形成粗分割结果,最后经全连接的CRF后处理生成最终的分割结果图。

下图是Deeplab v1在无CRF和有CRF后处理的分割效果图:

总的来看,Deeplab v1有如下几个有点:

(1)速度快。基于空洞卷积的CNN分割网络,能够保证8秒每帧(Frame Per Second,FPS)的推理速度,后处理的全连接CRF也仅需要0.5秒。

(2)精度高。Deeplab v1在当时取得了在PASCAL VOC数据集上SOTA的分割模型表现,准确率超过此前SOTA的7.2%。

(3)简易性。DCNN和CRF均为成熟的算法模块,将其进行简单的级联即可在当前的语义分割模型上取得好的效果。

Deeplab v1 PyTorch参考实现代码如下:

https://github.com/wangleihitcs/DeepLab-V1-PyTorch

往期精彩:

深度学习论文精读[9]:PSPNet

深度学习论文精读[8]:ParseNet

深度学习论文精读[7]:nnUNet

深度学习论文精读[6]:UNet++

深度学习论文精读[5]:Attention UNet

深度学习论文精读[4]:RefineNet

深度学习论文精读[3]:SegNet

深度学习论文精读[2]:UNet网络

深度学习论文精读[1]:FCN全卷积网络

深度学习论文精读[10]:Deeplab v1相关推荐

  1. 深度学习论文精读(4):MobileNetV2

    深度学习论文精读(4):MobileNetV2 论文地址:MobileNetV2: Inverted Residuals and Linear Bottlenecks 参考博文1:https://zh ...

  2. 深度学习论文精读[9]:PSPNet

    场景解析(scene parsing)是语义分割的一个重要应用方向,区别于一般的语义分割任务,场景解析需要在复杂的自然图像场景下对更庞大的物体类别的每一个像素进行分类,场景解析在自动驾驶和机器人感知等 ...

  3. 深度学习论文精读05——用于乳腺癌组织病理学图像分类的深度特征

    用于乳腺癌组织病理学图像分类的深度特征 标题:Deep Features for Breast Cancer Histopathological Image Classifification 链接:查 ...

  4. 深度学习论文精读01——基于多任务学习的肿瘤医学影像语义分割与分类研究

    基于多任务学习的肿瘤医学影像语义分割与分类研究 文章目录 基于多任务学习的肿瘤医学影像语义分割与分类研究 1 背景介绍 2 主要内容 3 材料和方法 3.1卷积神经网络 多层感知模型(全连接) 3.1 ...

  5. 深度学习论文精读06——应对卷积神经网络对乳腺癌组织病理学图像进行分类

    标题:Deep Features for Breast Cancer Histopathological Image Classifification 链接:查看文献原文 翻译参考:查看文献翻译 文章 ...

  6. 脉脉发布AI人才数据图鉴;『李沐·深度学习论文精读』视频合辑;CVPR 2022自动驾驶资源合集;线性代数图绘笔记;前沿论文 | ShowMeAI资讯日报

    ShowMeAI日报系列全新升级!覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向.点击查看 历史文章列表, ...

  7. (深度学习论文精读总结)You Only Look Once: Unified, Real-Time Object Detection

    一.文献名字和作者 文献名:You Only Look Once: Unified, Real-Time Object Detection 作者名:Joseph Redmon,Santosh Divv ...

  8. 深度学习论文阅读目标检测篇(一):R-CNN《Rich feature hierarchies for accurate object detection and semantic...》

    深度学习论文阅读目标检测篇(一):R-CNN<Rich feature hierarchies for accurate object detection and semantic segmen ...

  9. 【更新于12.29】深度学习论文汇总

    本博客用于记录自己平时收集的一些不错的深度学习论文,近9成的文章都是引用量3位数以上的论文,剩下少部分来自个人喜好,本博客将伴随着我的研究生涯长期更新,如有错误或者推荐文章烦请私信. 深度学习书籍和入 ...

最新文章

  1. c# 第28节 面向对象概述
  2. 用友服务器整体迁移--数据库附加
  3. 跨链Cosmos(10) IBC接口
  4. 【python 9】python注册器
  5. java中super关键字的用法
  6. python基础之字符串定义常见操作、列表定义进阶操作
  7. 碰撞回避算法(一) Velocity Obstacle
  8. 普通机器学习模型的提升
  9. PHP开源的项目管理软件
  10. 贝叶斯方法学习笔记(二)
  11. 实现网络IPv6平滑演进的DS-Lite CGN技术
  12. html5在线加密,HTML源代码在线加密解密
  13. python打开txt文件
  14. sharkle里的链接
  15. matlab 图片倒影_计算物理基于matlab方法研究水中倒影问题
  16. c语言高效位运算函数之 __builtin_
  17. pandas 获取Dataframe元素值的几种方法
  18. 判断有向图中是否存在从vi到vj的路径
  19. Elasticsearch7.8
  20. WTG: Windows10企业版中安装Docker

热门文章

  1. OSI七层模型及TCP/IP四层模型
  2. 【你踩的坑这里都有】微信小程序分包指南
  3. useSSL=true错误---报大量错误,又都是jdbc地方报错时候看
  4. 有万能PDF格式转换器吗
  5. oh-my-zsh 安装和使用
  6. vue服务端渲染 MySQL_Vue 服务端渲染(SSR)
  7. java实现插入排序的详细代码
  8. 【C/C++】程序员面试,掌握这些,丹尼斯·里奇来了也难不倒你
  9. bzoj1149: [CTSC2007]风玲Mobiles
  10. 三体中的科学:人列计算机