DeepLabV1网络简析

article/2025/10/23 17:33:03

原论文名称:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
论文下载地址:https://arxiv.org/abs/1412.7062
参考源码:https://github.com/TheLegendAli/DeepLab-Context

讲解视频: https://www.bilibili.com/video/BV1SU4y1N7Ao

在这里插入图片描述


文章目录

  • 语义分割任务中存在的问题
  • DeepLabV1的优势
  • 网络搭建细节
    • LargeFOV
    • MSc(Multi-Scale)


这篇文章最早发表于2014年,是Google和UCLA等共同的杰作,也是一篇很经典的论文,DeepLab系列的第一篇论文。因为已经过了很久了,所以本博文只做部分简单的记录。


语义分割任务中存在的问题

在论文的引言部分(INTRODUCTION)首先抛出了两个问题(针对语义分割任务): 信号下采样导致分辨率降低空间“不敏感” 问题。

There are two technical hurdles in the application of DCNNs to image labeling tasks: signal downsampling, and spatial ‘insensitivity’ (invariance).

对于第一个问题信号下采样,作者说主要是采用Maxpooling导致的,为了解决这个问题作者引入了'atrous'(with holes) algorithm(空洞卷积 / 膨胀卷积 / 扩张卷积),如果不了解的可以参考我在bilibili上录的讲解视频。

对于第二个问题空间“不敏感”,作者说分类器自身的问题(分类器本来就具备一定空间不变性),我个人认为其实还是Maxpooling导致的。为了解决这个问题作者采用了fully-connected CRF(Conditional Random Field)方法,这个方法只在DeepLabV1-V2中使用到了,从V3之后就不去使用了,而且这个方法挺耗时的。


DeepLabV1的优势

相比之前的一些网络,本文提出的网络具有以下优势:

  • 速度更快,论文中说是因为采用了膨胀卷积的原因,但fully-connected CRF很耗时
  • 准确率更高,相比之前最好的网络提升了7.2个点
  • 模型很简单,主要由DCNN和CRF联级构成

网络搭建细节

LargeFOV

首先网络的backbone是当时比较火的VGG-16,并且和FCN网络一样将全连接层的权重转成了卷积层的权重,构成全卷积网络。然后关于膨胀卷积的使用,论文中是这么说的:

We skip subsampling after the last two max-pooling layers in the network of Simonyan & Zisserman (2014) and modify the convolutional filters in the layers that follow them by introducing zeros to increase their length (2×in the last three convolutional layers and 4× in the first fully connected layer).

感觉文中的skip subsampling说的有点模糊(可能是自己英语水平太菜)什么叫做跳过下采样。既然看不懂论文的表述,就去看看代码。根据代码我绘制了如下所示的网络结构(DeepLab-LargeFOV)。

在这里插入图片描述

通过分析发现虽然backbone是VGG-16但所使用Maxpool略有不同,VGG论文中是kernel=2,stride=2,但在DeepLabV1中是kernel=3,stride=2,padding=1。接着就是最后两个Maxpool层的stride全部设置成1了(这样下采样的倍率就从32变成了8)。最后三个3x3的卷积层采用了膨胀卷积,膨胀系数r=2。然后关于将全连接层卷积化过程中,对于第一个全连接层(FC1)在FCN网络中是直接转换成卷积核大小7x7,卷积核个数为4096的卷积层,但在DeepLabV1中作者说是对参数进行了下采样最终得到的是卷积核大小3x3,卷积核个数为1024的卷积层(这样不仅可以减少参数还可以减少计算量,详情可以看下论文中的Table2),对于第二个全连接层(FC2)卷积核个数也由4096采样成1024。

After converting the network to a fully convolutional one, the first fully connected layer has 4,096 filters of large 7 × 7 spatial size and becomes the computational bottleneck in our dense score map computation. We have addressed this practical problem by spatially subsampling (by simple decimation) the first FC layer to 4×4 (or 3×3) spatial size.

将FC1卷积化后,还设置了膨胀系数,论文3.1中说的是r=4但在Experimental EvaluationLarge of View章节里设置的是r=12对应LargeFOV。对于FC2卷积化后就是卷积核1x1,卷积核个数为1024的卷积层。接着再通过一个卷积核1x1,卷积核个数为num_classes(包含背景)的卷积层。最后通过8倍上采样还原回原图大小。

下表是关于是否使用LargeFOV(Field of View)的对比。

在这里插入图片描述

  • 第一行DeepLab-CRF-7x7就是直接将FC1按照FCN论文中的方法转换成7x7大小的卷积层,并且膨胀因子r=4(receptive field=224)。
  • 第二行DeepLab-CRF是将7x7下采样到4x4大小的卷积层,同样膨胀因子r=4(receptive field=128),可以看到参数减半,训练速度翻倍,但mean IOU下降了约4个点。
  • 第三行DeepLab-CRF-4x4,是在DeepLab-CRF的基础上把膨胀因子r改成了8(receptive field=224),mean IOU又提升了回去了。
  • 第四行DeepLab-CRF-LargeFOV,是将7x7下采样到3x3大小的卷积层,膨胀因子r=12(receptive field=224),相比DeepLab-CRF-7x7,参数减少了6倍,训练速度提升了3倍多,mean IOU不变。

MSc(Multi-Scale)

其实在论文的4.3中还提到了Multi-Scale Prediction,即融合多个特征层的输出。关于MSc(Multi-Scale)的结构论文中是这么说的:

Specifically, we attach to the input image and the output of each of the first four max pooling layers a
two-layer MLP (first layer: 128 3x3 convolutional filters, second layer: 128 1x1 convolutional filters) whose feature map is concatenated to the main network’s last layer feature map. The aggregate feature map fed into the softmax layer is thus enhanced by 5 * 128 = 640 channels.

即,除了使用之前主分支上输出外,还融合了来自原图尺度以及前四个Maxpool层的输出,更详细的结构参考下图。论文中说使用MSc大概能提升1.5个点,使用fully-connected CRF大概能提升4个点。但在源码中作者建议使用的是不带MSc的版本,以及看github上的一些开源实现都没有使用MSc。我个人猜测是因为这里的MSc不仅费时而且很吃显存。根据参考如下代码绘制了DeepLab-MSc-LargeFOV结构。

https://www.cs.jhu.edu/~alanlab/ccvl/DeepLab-MSc-LargeFOV/train.prototxt

在这里插入图片描述

下表是在PASCAL VOC2012 test数据集上的一个消融实验:
在这里插入图片描述

关于fully-connected CRF,说实话不太懂,这里就不讲了。


http://chatgpt.dhexx.cn/article/PAtpGbpk.shtml

相关文章

DeepLab v3+原理和实现

这节课讲DeepLabv3模型,及前身DeepLabv3模型,两篇论文来自Google的同一个团队。 参考资料 DeepLabv3,被引1000 DeepLabv3,被引1000 Pytorch DeepLabv3实现,Star 1.5k 我们讲1.模型原理2.代码实现 from PIL import Im…

deeplabcut使用

cuda11.2和cudnn8.1安装 win 最新的 Win11/WIN10 安装CUDA11.2和cuDNNlinux ubuntu 16.04 安装 cuda11.2 和cudnn8.2.1 dlc安装 创建虚拟环境 安装deeplabcut2.2.3 tensorflow2.11.0 wxPython4.0.4 pip install deeplabcut2.2.3 deeplabcut里面包含了tensorflow的不用再安…

MATLAB与深度学习(一)— Deep Learning Toolbox

MATLAB与深度学习(一)— Deep Learning Toolbox 最近,我在学习基于matlab的深度学习的内容,并整理出如下学习笔记。本文借鉴和引用了网上许多前辈的经验和代码,如有冒犯,请及时与我联系。 1. MATLAB与深度…

Deeplab V1 和 V2讲解

Deeplab V1 Background: CNN的一个特性是invariance(不变性),这个特性使得它在high-level的计算机视觉任务比如classification中,取得很好的效果。但是在semantic segmentation任务中,这个特性反而是个障…

deeplab v3+ 源码详解

训练模型: 下载好voc数据集,并传入所需的参数即可进行训练。 参数配置: """ 训练: --model deeplabv3plus_mobilenet --gpu_id 0 --year 2012_aug --crop_val --lr 0.01 --crop_size 513 --batch_size 4 --…

Deeplabcut教程(二)使用

因为很久没用这个了所以就一直没更使用教程,写的安装教程收到好几条私信要使用教程,这几天在帮一个朋友跑这个,于是就有了这个使用教程 安装教程:Deeplabcut教程(一)安装(GPU&CPU版本&…

概述DeepLab系列(deeplab v1, deeplab v2, deeplab v3, deeplab v3+)

前言:图像分割是指像素级别的图像识别,即标注出图像中每个像素所属的对象类别。 语义分割更注重类别之间的区分,而实例分割更注重个体之间的区别。 DeepLab是由Google团队提出的一系列图像分割算法。 DeepLab v1 (2014年&#xf…

DeepLab系列理解

原文Blog:https://zhuanlan.zhihu.com/p/61208558 1、deeplab v1 针对标准的深度卷积神经网络的两个主要问题:1.Striding操作使得输出尺寸减小; 2.Pooling对输入小变化的不变性,v1 使用空洞卷积(atrous)条件随机场(CRFs)来解决这…

Deep Lab 系列总结

Deep Lab v1 结合了深度卷积神经网络(DCNNs)和概率图模型(Dense CRFs)的方法 问题1:DCNN s做语义分割时精准度不够,根本原因是DCNNs的高级特征的平移不变性,即高层次特征映射,根…

DeepLab V3+:DeepLab系列的极致?

这篇文章提交在arXiv上的,对应代码也已经开源。 理解DeepLab V3的构架首先需要理解DeepLab V3(可以参考博主的前一篇博客),V3基本上可以理解成在原始的基础上增加了encoder-decoder模块,进一步保护物体的边缘细节信息…

【Deep Learning】DeepLab

【论文】SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS 前段时间学习了DeepLab,这里花时间记录一下,感谢几位小伙伴的分享。DeepLab的主体结构事实上是参照VGG改造的,它的几个优点:首先是速…

Deeplab笔记

一、Deeplab v2 对应论文是 DeepLab: Semantic Image Segmentiation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs Deeplab 是谷歌在FCN的基础上搞出来的。FCN为了得到一个更加dense的score map,将一张500x500的输入图像&#…

deeplab-v3+原理详解

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、deeplab-v3提出原因与简单介绍 二、deeplab-v3网络结构图 三、Encoder 1、Backbone(主干网络&#xff09…

深度学习 | MATLAB Deep Learning Toolbox Deeper Networks 创建

深度学习 | MATLAB Deep Learning Toolbox Deeper Networks 目录 深度学习 | MATLAB Deep Learning Toolbox Deeper NetworksDeeper Networks创建类比深度网络深度记忆原理深度学习层输入层卷积和全连接层序列层激活层归一化、丢弃和裁剪层池化和去池化层组合层输出层 参考资料…

深度学习(11)——DeepLab v1

DeepLab v1 DeepLab 由谷歌团队提出的,至今有了四个版本,也就是v1-v4。其结合了深度卷积神经网络(DCNNs)和概率图模型。 在论文《Semantic image segmentation with deep convolutional nets and fully connected CRFs》中提出&…

改进 DeepLabV3+

网络整体结构图 CFF结构图 import torch import torch.nn as nn import torch.nn.functional as F from nets.xception import xception from nets.mobilenetv2 import mobilenetv2class MobileNetV2(nn.Module):def __init__(self, downsample_factor8, pretrainedTrue):supe…

DeepFaceLab

DeepFaceLab从半脸(Half Face)到全脸(Full Face)再到整脸(Whole Face),脸部替换的区域愈来愈大,适用的范围也越来越广,效果也越来越震撼。当然很多人已经不满足与单纯换脸…

DeepLab系列总结

DeepLab系列总结 DeepLab系列DeepLab V1DeepLab V2DeepLab V3DeepLab V3 DeepLab系列 DeepLab网络是由Liang-Chieh Chen(下文以大神指代)与google团队提出来的,是一个专门用来处理语义分割的模型。目前推出了4个(或者说3.5个&…

DeepLab系列学习

DeepLab系列 文章目录 DeepLab系列DeepLabV1简介atrous algorithm利用全卷积增加感受野并加速运算条件随机场CRF实验结果多尺度预测VOC数据集上对比 DeepLabV2主要改进简介模型主体ASPP实验结果 DeepLabV3相应的改进实验 DeepLabV3(DeepLabV3 plus)相应改进整体结构解码器结构m…

deeplab系列总结(deeplab v1 v2 v3 v3+)

最近花了几天时间把deeplab系列撸了一遍,直观感受是不如当初看RCNN系列来的激动啊......像RPN这种划时代的改变没有看到--直奔主题。 Deeplab v1&v2 paper: deeplab v1 && deeplab v2 远古版本的deeplab系列,就像RCNN一样&…