本文为稀土技能社区首发签约文章,30天内禁止转载,30天后未获授权禁止转载,侵权必究!

作者简介:秃头小苏,致力于用最浅显的语言描述问题

专栏引荐:深度学习网络原理与实战

近期方针:写好专栏的每一篇文章

支撑小苏:点赞、收藏⭐、留言

深度学习语义切割篇——DeepLabV1原理详解篇

写在前面

Hello,咱们好,我是小苏

​ 之前我现已为咱们介绍过最根底的一种语义切割网络——FCN啦,假如你对FCN还不了解的话,能够点击如下链接了解概况,这对你入门语义切割会非常有协助:

  • 深度学习语义切割篇——FCN原理详解篇
  • 深度学习语义切割篇——FCN源码解析篇

今日为咱们带来的是DeepLab系列的榜首篇文章,目前此Deeplab系列的更新方案如下:

  • DeepLabV1原理详解篇,具体介绍DeepLabV1的网络结构和要害立异点。
  • DeepLabV2原理详解篇,具体介绍DeepLabV2的网络结构和要害立异点。
  • DeepLabV3原理详解篇,具体介绍DeepLabV3的网络结构和要害立异点。
  • DeepLabV3源码实战篇,带咱们阅览源码,对DeepLabV3有更深化的了解。

在此DeepLab系列中没有对DeepLabV1和DeepLabV2做源码解读,我觉得没啥必要,感兴趣的能够去看一看。

论文链接:DeepLabV1论文

语义切割存在的问题及处理办法

在论文中,作者提出了将DCNN运用到语义切割任务中存在的两个技能障碍,如下图所示:

深度学习语义分割篇——DeepLabV1原理详解篇

翻译过来什么意思呢,即存在信号下采样和空间不变性这两个问题,那么为什么会呈现这样的现象呢?又该怎样处理呢?论文中也给出了相关解说:

为什么?

  • 信号下采样:这是指卷积神经网络重复的运用下采样max-pooling,从而导致图画分辨率不断下降。
  • 空间不变性:论文中解说为与从分类器中获得以物体为中心的决策需求空间转换的不变性有关,这本质上限制了DCNN模型的空间精度。说实话,听不懂。其实啊,这儿便是说像图画分类、方针检测这些High-Level的视觉任务(以获取图画中物体为中心的任务)需求空间不变性,也便是说对方针检测这类任务而言,关于同一张图片进行空间改换其图画分类的成果是不变的;而像语义切割这些Low-Level视觉任务,关于一张图片进行空间改换后,其成果就会发生变化,这就导致DCNN做语义切割时定位精准度不行。

怎样办?

  • 信号下采样:既然重复运用了下采样max-pooling,那么咱们自然会想到少运用几次下采样或者下降stride步长,但是这样会使得感触野变小,这是咱们不期望看到的。那么是否有什么办法能够既不用不断下采样下降分辨率,又能保持感触野不变呢?这就要咱们的空泛卷积上场了,它能够增大咱们的感触野。关于空泛卷积的细节不了解的能够阅览我的这篇博客:Dilated Convolution(空泛卷积、胀大卷积)详解
  • 空间不变性:为了处理这个问题,作者选用了fully-connected CRF(全衔接条件随机场)办法,对DCNN得到的切割成果进行细节上的调整。这个办法在DeepLabV1和DeepLabV2中都运用了,但是在DeepLabV3中就不在运用了,自己看了看,公式怪多的,有点头大,后边也用不到,就没有深化学习了,咱们感兴趣的能够去看一下,也引荐一篇博文叭:DenseCRF

DeepLabV1网络优势

论文中给出了DeepLabV1网络的三点优势,如下图所示:

深度学习语义分割篇——DeepLabV1原理详解篇

  • 速度更快:借助atrous算法(空泛卷积算法),密布的DCNN运行速度为8帧/秒。
  • 准确率更高:在PASCAL语义切割挑战上获得了最先进的成果,比Mostajabi等人的次优办法高出7.2%。
  • 模型结构简单:系统由两个相当完善的模块级联组成,即DCNN和CRF。

DeepLabV1网络结构

前面现已为咱们简单介绍了一下DeepLabV1网络的一些模块和优势,下面就来为咱们来讲讲DeepLabV1的网络结构。我打算选用总-分结构为咱们叙述,先和咱们唠唠DeepLabV1中几个要害模块,然后再为咱们介绍DeepLabV1的全体网络结构。

LargeFOV模块

首要需求阐明的是DeepLabV1的框架是依据VGG16实现的,对VGG16不熟悉的能够看一下我的这篇博客:深度学习经典网络模型汇总2——VGGNet,为了方便咱们阅览,这儿贴出VGG16的网络结构图,如下:

深度学习语义分割篇——DeepLabV1原理详解篇

深度学习语义分割篇——DeepLabV1原理详解篇

那么这个LargeFOV模块是什么呢?又作用在什么位置呢?其实呀,这个LargeFOV模块便是咱们在前面说到的空泛卷积,作者将VGG16的榜首个全衔接层换成了空泛卷积,确保了网络在mIOU不下降的前提下,减少参数量,加快速度。

全衔接层换成了空泛卷积?怎样换的呢?或许你会有这样的疑问,咱们一起来学习一下。首要将全衔接层换成一般卷积这种操作咱们是否了解呢,比如在FCN中就将VGG16的榜首个全衔接层换成了卷积核巨细为77,卷积核个数为4096的卷积层,对此不了解的能够点击☞☞☞了解概况。知道了如何将全衔接层转换成一般卷积,那剩余的便是将一般卷积变成空泛卷积了,这就没什么好说的了,不了解空泛卷积的点击☞☞☞为自己赋能喔。

论文中也做了一系列不同kernel size和input stride(胀大因子)的比照试验,如下图所示:

深度学习语义分割篇——DeepLabV1原理详解篇

依据试验作用,最终作者挑选了选用卷积核巨细为33,input strede为12的空泛卷积。【最终一行感触野大,参数量小,mean IOU高,速度快】


这儿其实我是有一些疑惑的,便是不知道这个感触野224是怎样核算得到的,按照我的了解,怎样算感触野也不是这么多,假如有大佬知道,麻烦告诉小弟一声,不胜感激 !!!


fully-connected CRF模块

fully-connected CRF中文翻译为全衔接条件随机场,哈哈哈哈,我是一脸懵逼,在前文中我也说到了,这一部分我不会介绍这个模块是怎样实现的,只会说说这个模块的作用。其实啊,这个模块便是让切割愈加精密,它相当于咱们对得到的粗略的切割图又进行了进一步的细化操作,过程如下:

            

深度学习语义分割篇——DeepLabV1原理详解篇

网络结构

话不多说,直接上图:

深度学习语义分割篇——DeepLabV1原理详解篇

                  图片来自B站霹雳吧啦Wz

这个结构是依据VGG16的,因而咱们需求比照着VGG16来看,让咱们来看看它相较于VGG16做了哪些改动叭~~~

  • VGG16所运用的一切Maxpool选用的keenel_size=2,stride=2,padding=0;而在DeepLabV1中,前三个Maxpool选用的keenel_size=3,stride=2,padding=1,此参数装备的Maxpool相同起到下采样的作用,每次下采样2倍,通过3次Maxpool讲原始图画下采样8倍,在语义切割任务中咱们不期望图画被过度的下采样,这样会丢掉部分信息,因而后边两次Maxpool不再进行下采样,选用keenel_size=3,stride=1,padding=1的参数装备。此外在第五次Maxpool后DeepLabV1还接了一个keenel_size=3,stride=1,padding=1的Avgpool层,相同这层也没有再进行下采样 。
  • 将VGG16模型最终三个卷积层改成了空泛卷积,其间keenel_size=3,r=2,stride=1,padding=2。【r为胀大因子】【注:什么这儿要运用空泛卷积腻,这是因为在DeepLabV1中咱们只下采样了8倍,感触野较低,运用空泛卷积能够增大感触野】
    深度学习语义分割篇——DeepLabV1原理详解篇
  • 将VGG16模型的榜首个全衔接层换成空泛卷积,其间keenel_size=3,r=12,stride=1,padding=12,这便是上文说到的LargeFOV模块。
  • 将VGG16模型的第二个和第三个全衔接层都换成了卷积操作,需求留意一下通过最终一个全衔接层(DeepLabV1中的最终一个卷积层)后的输出巨细为2828num_classes2828num\_classes

带Multi-Scale的网络结构

论文中还说到了运用了多标准(Multi-Scale)的结构,即交融了原始图片和前四个Maxpool层的输出,咱们直接看下图会更明晰:

深度学习语义分割篇——DeepLabV1原理详解篇

                  图片来自B站霹雳吧啦Wz

这个结构好像没什么么好说的,现在看来是比较常规的一个多标准办法,不过仍是需求咱们留意一下这儿原始图片和前四个Maxpool层的输出尺寸的都是2828num_classes2828num\_classes,最终将这些特征图进行ad操作。

咱们能够来看看是否添加多标准试验的对照成果,如下图所示:

深度学习语义分割篇——DeepLabV1原理详解篇

榜首行为没有添加MSC的作用,第二行为添加了MSC的作用,怎样样,仍是挺明显的叭。

DeepLabV1试验比照

其实在上文现已展现了相关的对照试验,这儿咱们再从直观上来感触一下DeepLabV1和其它算法的比较,如下图所示:

深度学习语义分割篇——DeepLabV1原理详解篇

榜首行表明原图,第二行为ground truths,第三行是最近提出的模型,左面为FCN-8s,右边为TTI-Zoomout-16,第四行为DeepLabV1。从上图能够很明显的看出DeepLabV1的成果愈加精密,对图画边际的处理作用更好。

小结

DeepLabV1到这儿就差不多为咱们介绍完啦,期望咱们都有所收获喔~~~最终我想在稍微提一下DeepLabV1是怎样核算丢失的。咱们知道,FCN是用GT和网络输出成果核算穿插熵丢失(cross_entropy)的,不知道的点击☞☞☞补课去,里边介绍的很具体。但是在DeepLabV1中咱们会先将GT下采样8倍,然后再与2828num_classes2828num\_classes【2828相较于原图224224下采样了8倍】的输出特征图核算穿插熵丢失。论文中也有相关的表述,如下图所示,咱们这儿留意一下就好。

深度学习语义分割篇——DeepLabV1原理详解篇

参考链接

DeepLabV1网络简析

DeepLabV1论文

[论文笔记]DeepLabv1

如若文章对你有所协助,那就

        

深度学习语义分割篇——DeepLabV1原理详解篇