当前位置: 首页 > news >正文

SS-Model【3】:DeepLabv2

系列文章目录

DeepLab语义分割系列(一):
SS-Model【2】:DeepLabv1
DeepLab语义分割系列(二):
SS-Model【3】:DeepLabv2
DeepLab语义分割系列(三):


文章目录

  • 系列文章目录
  • 前言
  • 1. Abstract & Introduction
    • 1.1. Abstract
    • 1.2. Introduction
  • 2. Methods
    • 2.1. Structure
    • 2.2. Atrous Convolution
    • 2.3. ASPP
    • 2.4. CRF
    • 2.5. Learning rate policy
  • 总结


前言

DeepLabv2是一个用于语义分割的架构,它建立在DeepLab的基础上,有一个无轨的空间金字塔集合方案。在这里,我们在输入特征图中应用了不同速率的平行扩张卷积,然后将它们融合在一起。由于同一类别的物体在图像中可能有不同的尺寸,ASPP有助于解释不同的物体尺寸。

原论文链接:
DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs


1. Abstract & Introduction

1.1. Abstract

回顾下 DeepLab v1 ,其主要是在 FCN 的基础上对 VGG 网络进行调参 fine tuning,并在最后加上一个全连接的 CRF,保证对 FCN 得到的结果在局部细节(边界)上进行优化。

DeepLab v2 的主要贡献有三个,具体如下:

  • Atrous Convolution 代替原来上采样的方法,作为密集预测任务的强大工具,空洞卷积能够明确的控制 DCNN 内计算特征响应的分辨率。 既可以有效的扩大感受野,在不增加参数量和计算量的同时获取更多的上下文
  • ASPP (atrous spatial pyramid pooling) ,基于空间空洞金字塔池化的多尺度分割方法,即多尺度特征提取,ASPP 并行的采用了多个采样率的空洞卷积层来预测,用多个比例捕获对象以及图像上下文
  • 全连接的CRF,利用低层的细节信息对分类的局部特征(边缘)进行优化
    • 通过组合 DCNN 和 概率图模型 DenseCRF,改进分割边界结果。在 DCNN 中最大池化和下采样组合存在平移不变性,通过最终的DCNN层相应与全连接的CRF结合,来克服这个问题

DeepLab v2 是在 DeepLab v1 的基础上进行改进。改进点有三个,具体如下:

  • backbone:用 RestNet 网络替代了 VGG网络
  • ASPP:解决了多尺度上存在对象的问题
  • DenseCRF:公式的更新

主要优点

  • 效果:在 PASCAL VOC2012、PASCAL-Context、PASCALPerson-Part、Cityscapes 上都获得当时的最优的性能
  • 速度:现代 GPU 上,运行效率达到 8 FPS,DenseCRF 平均需要 0.5s(与v1一样)
  • 简单:系统是由两个非常成熟的模块结合而来,DCNN、CRF(与v1一样)

1.2. Introduction

在语义分割任务中,DCNN 面临三方面挑战:

  • 传统分类DCNNs中连续的池化和下采样将导致空间分辨率明显下降,不利于图像分割
    • 对应的解决方案:去掉最后几个最大池化层下采样,而在随后的卷积层中进行上采样,从而得到了采样率更高的特征图
  • 对象多尺度检测问题
    • 常用方法:将不同尺度重新调节至尺度相同并聚合特征图或分数图,但计算量大大增加
    • 解决方案:对特征层重采样,得到多尺度的图像文本信息,使用具有不同采样率的多个并行的空洞卷积层来有效地实现多尺度采样,提出的技术称为 ASPP
  • 以物体为中心的分类器,需要保证空间转换不变性 ,导致细节信息丢失
    • 使用跳跃层结构,从多个网络层中抽取高层次特征进行预测,并且使用全连接条件随机场增强捕捉精细细节能力,进行边界预测优化

DeepLab 系统的整个过程(将 VGG16 和 ResNet-101 迁移到语义分割中),如下所示:

  • 将全连接层转为卷积层
  • 通过空洞卷积提高特征图分辨率,将原图降低8倍,而不是32倍
  • 使用双线性插值得到原图的分辨率
  • 输入到CRF得到最后的分割结果。

在这里插入图片描述


2. Methods

2.1. Structure

backbone 为 ResNet-101 的网络结构如下所示(不考虑MSC):

在这里插入图片描述

2.2. Atrous Convolution

一维上的空洞卷积,如下所示:

在这里插入图片描述

其中rate是膨胀因子,空洞卷积公式如下:
y [ i ] = ∑ k = 1 K x [ i + r ⋅ k ] w [ k ] y[i] = \displaystyle\sum^K_{k=1} x[i + r \cdot k] w[k] y[i]=k=1Kx[i+rk]w[k]

参数含义:

  • y:输出信号
  • x:输入信号
  • w:卷积模板
  • K:滤波器长度
  • r:输入信号的采样间隔

二维上的空洞卷积,如下所示:

在这里插入图片描述

空洞卷积有两种实现方式:

  • 方式一:先下采样输入特征图,使得特征图变为原来的 1 / 2,隔行去采样最后产生 r 2 r^2 r2 个子特征图,然后正常卷积,最后插值返回与输入大小相等的特征图
  • 方式二:先对卷积核上采样,将卷积核参数之间插入 ( r - 1 ) 个 0
    • 例如 K 大小的卷积核上采样之后大小为 k + ( k - 1 ) ( r - 1 )

更详细的内容可以参考我的另一篇blog:SS【1】:转置卷积与膨胀卷积

2.3. ASPP

尝试的两种在多尺度上进行分割的方案:

  • 通过 resize 多尺度输入图片,取对象像素点位置最大的响应结果为最终结果
  • 受spatial pyramid pooling (SPP) 启发,得到 ASPP 结构

ASPP 具体结构如下所示:

在这里插入图片描述

文中提出了 2 组感受野的尺寸:

  • ASPP-S: r = {2, 4, 8, 12}
  • ASPP-L: r = {6, 12, 18, 24}
    • 需要注意的是,在 DeepLabv1 中,我们堆叠使用空洞卷积层,该情况下堆叠空洞卷积层的空洞系数需要满足对应的条件(如:各空洞卷积层的空洞系数的最大公约数为1,具体信息请参考我的另一篇blog:SS-Model【2】:DeepLabv1)
    • 此处所使用的一组空洞卷积层并不是堆叠使用,只是每次使用一组并将对应的结果融合,所以无需满足特定的条件

将 ASPP 添加到 backbone 为 VGG16 的网络结构中:

在这里插入图片描述

2.4. CRF

对于每个像素位置 i i i 具有隐变量 x i x_i xi (这里隐变量就是像素的真实类别标签,如果预测结果有21类,则 i ∈ 1 , 2 , . . , 21 i \in 1, 2, .. ,21 i1,2,..,21),还有对应的观测值 y i y_i yi(即像素点对应的颜色值)。以像素为节点,像素与像素间的关系作为边,构成了一个条件随机场(CRF)。通过观测变量 y i y_i yi 来推测像素位置i对应的类别标签xi。条件随机场示意图如下:

在这里插入图片描述

比起 DeepLabv1 的 CRF,v2 中的 CRF 修改了能量函数和二元势函数的表达式,给模型带来了一定程度的提升

此处涉及到复杂的数学推导与计算,博主不是很了解,建议大家自行在网上搜索,到了 Deeplabv3 的时候,将不再使用 CRF 了

2.5. Learning rate policy

l r × ( 1 − i t e r m a x _ i t e r ) p o w e r lr \times (1 - \frac{iter}{max\_iter})^{power} lr×(1max_iteriter)power

参数:

  • lr:初始学习率
  • iter:当前训练的“步数”
  • max_iter:整个训练过程所需迭代的“步数”
  • power:超参数,论文中的值为 0.9

总结

视频资料

DeepLabv2 将空洞卷积应用到密集的特征提取,进一步的提出了空洞卷积金字塔池化结构、并将 DCNN 和 CR F融合用于细化分割结果。实验表明,DeepLabv2 在多个数据集上表现优异,有着不错的分割性能。

相关文章:

  • 基于springboot高校社团管理系统
  • 在线教育项目【老师服务】
  • 堆的应用:堆排序及TopK问题
  • 【Android development】系列_01创建安卓应用程序
  • Keras CIFAR-10图像分类 GoogleNet 篇
  • 详解react生命周期和在父子组件中的执行顺序
  • 2022年山东省安全员C证复训题库模拟考试平台操作
  • 《算法导论》第11章-散列表 11.1-直接寻址表 11.2 散列表
  • 归并排序算法
  • DNSPod十问百果园焦岳:为什么开水果店是一门高科技生意?
  • 《nginx》三、nginx负载均衡
  • 操作系统——程序地址空间
  • JavaScript-操作表单和前端加密
  • 使用disruptor队列实现本地异步消费
  • 在Windows中自动压缩备份文件和目录的脚本
  • angular2开源库收集
  • CSS3 变换
  • echarts花样作死的坑
  • es6--symbol
  • GraphQL学习过程应该是这样的
  • JavaScript设计模式之工厂模式
  • Java精华积累:初学者都应该搞懂的问题
  • JS数组方法汇总
  • leetcode386. Lexicographical Numbers
  • mysql中InnoDB引擎中页的概念
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • rc-form之最单纯情况
  • React16时代,该用什么姿势写 React ?
  • STAR法则
  • Sublime text 3 3103 注册码
  • 计算机常识 - 收藏集 - 掘金
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 类orAPI - 收藏集 - 掘金
  • 前端技术周刊 2019-02-11 Serverless
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 少走弯路,给Java 1~5 年程序员的建议
  • 算法之不定期更新(一)(2018-04-12)
  • 详解NodeJs流之一
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 在weex里面使用chart图表
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • elasticsearch-head插件安装
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​iOS实时查看App运行日志
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ​用户画像从0到100的构建思路
  • #1014 : Trie树
  • #etcd#安装时出错
  • #stm32驱动外设模块总结w5500模块
  • $.ajax中的eval及dataType
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (附源码)SSM环卫人员管理平台 计算机毕设36412