语义分割系列之FCN、DeeplabV1、V2、V3、V3Plus论文学习

2024-02-08 01:52

本文主要是介绍语义分割系列之FCN、DeeplabV1、V2、V3、V3Plus论文学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

FCN Fully Convolutional Networks

论文:Fully Convolutional Networks for Semantic Segmentation
地址:https://openaccess.thecvf.com/content_cvpr_2015/papers/Long_Fully_Convolutional_Networks_2015_CVPR_paper.pdf
特点:用全卷积替代了全连接、反转卷积的操作来恢复信息、高低通道特征融合

0.网络结构

FCN网络结构主要分为两个部分:全卷积部分和反卷积部分
在这里插入图片描述

1.全连接

全连接层转化为卷积层
在这里插入图片描述

2.Deconvlution上采样

反卷积(Deconvolution),也叫做转置卷积(Transposed Convolution)
作用:反卷积的主要作用是将低维特征图还原为高维特征图,从而实现特征图的上采样或升维。
在这里插入图片描述
另一种反卷积的方法:内部填充
在这里插入图片描述

3.Skips高低特征融合

如果只利用反卷积对最后一层的特征图进行上采样得到原图大小的分割,由于最后一层的特征图太小,会损失很多细节。因而提出增加Skips(跳层连接结构)将最后一层的预测(有更富的全局信息)和更浅层(有更多的局部细节)的预测结合起来。
在这里插入图片描述

Deeplab系列

这一系列的核心思想就是找到合适的手段代替pooling带来的位置和细节损失,或者补偿损失
参考:https://blog.csdn.net/fanxuelian/article/details/85145558
在这里插入图片描述

DeeplabV1

原文:Semantic image segmentation with deep convolutional nets and fully connected CRFs
论文下载地址:https://arxiv.org/abs/1412.7062
参考源码:https://github.com/TheLegendAli/DeepLab-Context
Backbone:VGG16
trick:Atrous convolution空洞卷积、CRF条件随机场、ASPP空洞空间金字塔池化

0.网络结构

输入Input -> CNN提取特征 -> 粗糙的分割图(1/8原图大小) -> 双线性插值回原图大小 -> CRF后处理 -> 最终输出Output
在这里插入图片描述

1.空洞卷积

使用背景:语义分割是一个end-to-end的问题,需要对每个像素进行精确的分类,对像素的位置很敏感,是个精细活儿。
池化层的第一个作用,缩小特征层的尺寸,减少计算量。池化层还有另一个重要作用,快速扩大感受野。但pooling是一个不断丢失位置信息的过程,而语义分割又需要这些信息,矛盾就产生了,于是引入了空洞卷积。

实现方法:空洞卷积通过在卷积核的元素之间插入空洞或空白像素(pixel=0)来实现感受野的扩张。
作用:通过使用空洞卷积,可以在不增加参数数量的情况下增加感受野,从而提高模型对于大范围上下文信息的理解能力。
膨胀率:空洞卷积的一个重要参数是膨胀率(dilation rate),它决定了空洞的大小。通常,膨胀率为1表示普通的卷积操作,膨胀率大于1表示扩大感受野。

在这里插入图片描述

2.CRF条件随机场

参考:https://zhuanlan.zhihu.com/p/601952029

2.1随机场

随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。简单理解,随机场就是一种分布关系,其分布关系只于位置有关。

2.2马尔可夫随机场

马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,和与其不相邻的位置的赋值无关。马尔可夫随机场中元素的分布关系不仅和自身位置有关,还和相邻元素属性有关。

2.3条件随机场

CRF是马尔科夫随机场的特例,在极端的约束下,马尔可夫随机场中每个点的值Y可以由该元素的位置关系X推出,并且分布关系可以由P(X|Y)表示,此时就获得了CRF,并且条件概率分布P(Y|X)是条件随机场的表达式。

2.4 DEEPLAB中的CRF

CRFs有两种形式,一种是成对的CRFs(pairwise CRFs),另一种是全连接的CRFs(fully connected CRFs),成对的CRFs只考虑相邻像素之间的关系,而全连接的CRFs考虑所有像素之间的关系。
输入图像经过多层卷积下采样后会导致分辨率大幅下降,这使得像素的位置信息丢失,导致还原图像尺寸的过程pixel的定位有偏失,体现为pixel-wise的最终预测结果不准确,这最主要表现在物体的边缘位置. 而CRF利用不同位置的像素类别信息关系,通过建立概率图的方式,有效缓解了边缘定位不准确的问题.

具体效果如下图所示.

在这里插入图片描述
在这里插入图片描述
根据公式来看,就是一个全连接的滤波器

DeeplabV2

原文:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs
Backbone:ResNet-101 with atrous convolution
特点:ASPP

0.网络结构

在这里插入图片描述

1.ASPP空洞空间金字塔池化

就是在backbone输出的Feature Map上并联四个分支,每个分支的第一层都是使用的膨胀卷积,但不同的分支使用的膨胀系数不同,由于每个分支的感受野不同,从而具有解决目标多尺度的问题
在这里插入图片描述
然后将得到的结果 concat 到一起,扩大通道数;最后通过 1 × 1的卷积将通道数降低到预期的数值。相当于以多个比例捕捉图像的上下文。
在这里插入图片描述

DeeplabV3

原文:Rethinking Atrous Convolution for Semantic Image Segmentation
Backbone:ResNet-101
特点:在ASPP中使用BN层、cascaded 级联

1.batch normalization

对于ASPP,空洞卷积之后使用batch normalization

DeepLab V3+

原文:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
Backbone:Xception
特点:Encoder-decoder structure

这篇关于语义分割系列之FCN、DeeplabV1、V2、V3、V3Plus论文学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/689586

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Python如何将大TXT文件分割成4KB小文件

《Python如何将大TXT文件分割成4KB小文件》处理大文本文件是程序员经常遇到的挑战,特别是当我们需要把一个几百MB甚至几个GB的TXT文件分割成小块时,下面我们来聊聊如何用Python自动完成这... 目录为什么需要分割TXT文件基础版:按行分割进阶版:精确控制文件大小完美解决方案:支持UTF-8编码

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert