【计算机视觉】最全语义分割模型总结(从FCN到deeplabv3+)

article/2025/8/18 4:01:21

文章目录

  • 一、前言
    • 1.1 语义分割
  • 二、FCN:CNN语义分割的开山之作
    • 2.1 结构
    • 2.2 特点
  • 三、Deeplab_v1
    • 3.1 前言
    • 3.2 特点
  • 四、U-Net
    • 4.1 结构
    • 4.2 特点
  • 五、Seg-Net
    • 5.1 结构
    • 5.2 特点
  • 六、Deeplab_v2
    • 6.1 结构
    • 6.2 特点
    • 6.3 Fcis
      • 6.3.1 特点
  • 七、RefineNet
    • 7.1 结构
    • 7.2 特点
  • 八、Large Kernel Matters
    • 8.1 结构
    • 8.2 特点
  • 九、deeplabv3
    • 9.1 结构
    • 9.2 特点
  • 十、deeplabv3+
    • 10.1 结构
    • 10.2 特点

一、前言

语义分割是指对图片中的像素进行类别上的分类,有别于实例分割,不能区分同一类别的不同个体。

参考文献:

  1. https://mp.weixin.qq.com/s/2EMOHeG_Z0CKHs1YwKL0uA
  2. https://zhuanlan.zhihu.com/p/27794982

1.1 语义分割

语义分割是计算机视觉中很重要的一个方向。

不同于目标检测和识别,语义分割实现了图像像素级的分类。

它能够将一张图片或者视频(视频以帧来提取的话其实就是图片),按照类别的异同,将图像分为多个块。如下图所示:

在这里插入图片描述
明白了分割就是将图像按类别划分为不同的块,那么我们如何来理解语义这个词语呢。

我们知道一句话或者一篇文章,都有其表达的意思,这叫做语义。

同样,当我们看见一张图片时,我们能够通过我们的大脑很快明白其意思,图像表达出的意思就是图像的语义。

语义分割就是将一张图片,表达成机器能够读懂的语言。那么,我们就需要对图像进行操作,将不同类型的事物分割。

语义分割有较多的方法,大致可以分成两类,一类是传统的方法,一类是基于深度学习的方法。其中,基于深度学习的语义分割,目前已经具有较大的发展,并且能够使用在一些现实生活中的场合里。

此外,还有两个与语义分割类似的说法,但是不是属于同一种概念。

  • 实例分割:实例分割就是对同一类的不同对象也要进行分割,比如说,语义分割会将车分为一类,人分为另一类。但是,实例分割不同的是,它会将车继续进行分类,每一辆车都是一个实例类别。
  • 全景分割:简单地来讲,全景分割是实例分割与语义分割的结合。全景分割中的每一个像素点都会分成对应的语义标签和实例标签。如果一种类别里有多个实例,会用不同的颜色进行区分,我们可以知道哪个像素属于哪个类中的哪个实例。

下图中,子图a、b、c、d分别表示图像、语义分割、实例分割和全景分割。通过图应该可以更好地区分它们:

在这里插入图片描述

本文对从FCN开始的语义分割网络进行了一些总结。

二、FCN:CNN语义分割的开山之作

在这里插入图片描述

2.1 结构

简单来说,FCN在网络上的改变就是基于当时最好的图像分类模型,将最后的全连接层替换成了卷积层,这样最后汇聚到一个点的网络结构,变成了汇聚成缩小一定比例的分类图,并且最后一层的21个通道代表着最后的21个分类结果。

同时也揭示了伴随着端到端语义分割的一个主流矛盾:既需要全局的感受野来完成分类任务,又需要在边缘部位,用局部信息和低层的低级视觉信息来达到准确的边缘分割。

2.2 特点

  • 用全卷积替代了全连接
  • 为了弥补下采样操作造成的损失,使用了反转卷积的操作来恢复信息
  • 单纯地使用反转卷积无法得到好的效果,用下采样之前的特征图与上采样之后的图片进行融合这样可以指引上采样过程恢复到比较好的效果。即高低通道特征融合。恢复低级视觉信息。

使用全卷积网络做语义分割的矛盾就在于,图片中的语义信息在大的感受野条件下,可以得到很好的分类结果。但是过大的感受野会丢失细节信息,丢失边缘,局部信息,又不利于局部分割信息的恢复,如何设计网络平衡这个矛盾是个比较重要的问题。

毫无疑问,FCN提过了一个很不错的方法和方向。即Encoder-Decoder并强调高低通道特征的融合。

三、Deeplab_v1

3.1 前言

空洞卷积的示意图如下:

在这里插入图片描述

因为主流的网络为了获取较大的感受野(理论上来说大的感受野有助于分类),都采用了conv中加上stride,或者采用pool(池化)来让神经网络高层获得的感受野更大,这样分类结果会更准确,但带来的缺点就是图像分辨率会下降,同时maxpool这个操作会丢失图像的部分细节信息,不利于分割任务,所以在deeplab中大范围用空洞卷积来扩大感受野,同时也尽量避免降低图像分辨率的操作,这样更容易恢复到原始分辨率大小。

3.2 特点

  • 空洞卷积,就是上图这个东西,不损失分辨率和边缘信息的情况下增大感受野。

在这里插入图片描述

  • 条件随机场,虽然使用空洞卷积,但仍然存在着池化操作,并且卷积本身就会让边缘信息弱化一些,使用传统的CRF条件随机场能让模糊的边界信息更清晰,使图像更加精细化,相当于网络中的Decoder部分的功能。实际实验中,CRF对于Deeplab的准确率提升非常显著。

在deeplab中对于缩小后的图像并没有使用神经网络实现和FCN一样的解码器结构,而是使用了上头的条件随机场这个偏向传统视觉处理的方法。后续的deeplabv3版本中已经不使用该方法。

四、U-Net

4.1 结构

在这里插入图片描述

4.2 特点

  • U-net的结构非常对称,优雅,清晰。作者论文中的图片简明易懂
  • 该网络结构强化了FCN中特征融合的思想,很明显,每一层中都加入了低级通道的特征图,并且,采用了通道叠加,而不是直接加和的思想,这样给了网络充足的能力去选择不同的区域叠加不同的通道,而不是暴力加和,这个应该是改进比较好的地方。
  • U-net在loss中引入了加权权重的思想,这个想法是很好的,因为由于感受野的问题,最后的特征图的边缘信息会弱一些,因为感受野捕获到的边界背景信息与主体信息几乎是一半一半可以说,边缘信息会弱化,那么增大边缘部分的loss权重,会促使网络在边缘部分多留意,这样会让边缘效果稍好一些。嗯就这样。这也是大的感受野,与细分边缘之间的矛盾。

可以看到这个网络结构还是比较浅的,不像其他主流网络堆得很深,目前在医疗图像分割领域用U-net的非常多,分割效果也很不错,但在分类任务很复杂的的语义分割数据集中表现的并不是很好,这跟网络本身比较浅也有关系。同时,正是由于U-net本身比较浅,很多低层视觉信息很重要,被保存了下来,所以在医疗图像分割上可以达到很精准的边缘提取,等等分割任务。

五、Seg-Net

5.1 结构

在这里插入图片描述

5.2 特点

  • 在上采样步骤那,进行了一个所谓的坐标上采样功能,这样恢复后的上采样特征图会将像素恢复在之前的坐标处,然后再结合低层的特征图,得到比之前直接上采样的效果会好一些,实际上这样做性能是大幅提升了,速度快了很多,计算量和参数都少了很多,不过准确率只能说一般吧。

六、Deeplab_v2

6.1 结构

ASPP模块:

在这里插入图片描述

6.2 特点

  • 用了新的Resnet结构,并将卷积替换成了空洞卷积部分。
  • ASPP模块,也就是使用不同扩张率的空洞卷积来获取最终特征图上的不同大小的物体,还是关于感受野的问题,作者认为之前一味地提高感受野也不是好事,因为毕竟有大的物体,和小的物体,不能通过一个固定不变的感受野来解决问题,所以不同尺度的感受野很重要,所以大概设计了四种不同大小的感受野来找到对应的物体。这个想法很不错,很work,并且之前大家似乎都没有提到,也没有改进。
  • 还是传统的CRF。

最大的改进就是ASPP模块了,之前提到扩大感受野对于正确的分类有很大的好处,但是也不是一味地提升感受野,这样必然会导致泛化能力太弱,图片中的物体大小自然是不一样的,用相同的感受野只能说对于某个大小的物体识别比较准确,一旦有比较大的,或者很小的自然效果很差,作者考虑到这个问题,在特征图的最后加入了ASPP,简单理解就是通过不同大小的空洞卷积模块来达到不同的感受野的目的,这样就可以对不同大小的物体都能做到比较准确地检测,进而提高准确率,事实也证明这个网络模块非常有效!

6.3 Fcis

基于实例分割的分割,其实实例分割有很多好处,实例分割,可以将分类和分割两件事分离开来,正如何凯明在论文中提到的类间竞争,分割的时候只负责分割,然后类的事交给专门的分类网络判断,这样可以减少相互之间的干扰,分类可以有较大的感受野,分割可以去获得低层的视觉信息。也是种不错的选择吧。

6.3.1 特点

实例分割改善分割效果应该会有帮助。最终语义分割也是要走向实例分割的,并且实例分割带来的分类和分割准确度的提升应该很大,具体可以看mask-rcnn中对这一问题的阐述。

七、RefineNet

7.1 结构

在这里插入图片描述

7.2 特点

  • 整个网络都是用Res-Net结构的参差思想设计每个模块,这是个很不错的想法,如果某个地方学不到有用的信息,那就不要添乱嘛,直接映射原来的信息,可以让网络的信息流传递更加健康;
  • 基本思路还是高低特征融合,也就加了点自己的pool链在里头,还是根据何凯明的那个参差思想做的一个最大池化操作,这个操作还是比较有用的,增大了整个特征图的感受野,有助于正确的分类结果;
  • 在每一个stage阶段都进行了conv3的卷积操作,可能对于任务过渡也有一定的好处,这样可以使网络更加平滑地过渡到下一个功能阶段;
  • 附加loss是个不错的决定,这样加强了对网络内部层的监督,这样可能会导致更有效的结果,并能加快网络的收敛吧。

八、Large Kernel Matters

8.1 结构

网络结果如下:
在这里插入图片描述

8.2 特点

  • 对于large kernel 的卷积模块做了具体地解释,尽管卷积操作能够理论上到来较高的感受野,但实际上由于卷积的反向传播,不重要的偏向边缘信息由于在逐层的卷积和连接过程中,会慢慢地被削弱,这就涉及到文中提及的有效感受野问题,具体在一片论文中专门研究了实际有效感受野的问题。
  • 当然直接在某一层使用大的感受野的卷积核,是一个非常直接、有效的扩充感受野的方法,但直接用大内核会带来很大的计算量。实际上之前googlenet中也介绍了这个问题,使用小的卷积核堆叠很多层来近似为一个大内核的来达到这样的效果。
  • 在分类任务上,文中专门对如何设计大的内核做了大量的详细实验,包括 k × k k\times k k×k k × 1 k\times 1 k×1 1 × k 1\times k 1×k相结合, 3 × 3 3\times 3 3×3的堆叠,实际上证明只有 1 × k 1\times k 1×k- k × 1 k\times 1 k×1是work的,甚至直接kxk的这样的结构效果都不够好,这个和xception中提到的想法类似,都是讲两个操作分离化,这样既减少了计算量,同时甚至带来了效果上的提升,至于为什么会带来很大的提升,作者说的都是我们猜,我们假设,神经网络本来很多东西都是基于经验
  • 同时网络中为了细化边缘还引入了一个叫BR的边缘定义模块,其实就是一个普通的参差模块吗,可能这个模块放在底高层的特征图融合后,能够刚好配合反向传播学到一些对边缘细化有用的信息,也就是大家都在做的对decoder模块的各种各样的小改进,有效果就好。个人觉得不是太重要的东西。

九、deeplabv3

9.1 结构

网络结构如下:
在这里插入图片描述

9.2 特点

  • 加入了像素级别的特征图以及原始的图片信息在ASPP模块中,实际上没改什么东西,也就是把特征融合地更多了,这有点显而易见,必然结合的特征越多,对于效果的提升越来越大。

空洞卷积级联的尝试:

在这里插入图片描述

  • 尝试了级联空洞卷积模块,实际应用中发现是不work得,从res的四个模块加到了7个模块后没有发现较大的性能提升。当然这样一味地增大感受野没有ASPP那样对不同层次,和不同大小的有效感受野从理论上和实践上有效果。
  • 去掉了CRF模块,证明网络已经基本上与其他的end to end网络达到了同样性能,没有CRF这样的黑科技的加成下。

本来个人认为,语义分割就是用神经网络来实习端到端的分割结果,来找出每个像素的分类结果,尽可能保留主要语音信息,边缘稍微有些混乱,也是正常现象,通过各种各样传统视觉算法中的trick当然可以细化这个边缘结果,让效果更好,不过既然大家主要都是研究神经网络,那就只用神经网络这块的性能提升来比较客观、公正一些。

十、deeplabv3+

10.1 结构

左1 depplabv3 中间 主流的编码-解码结构 右边 deeplabv3+的改进后的编码结构

在这里插入图片描述

10.2 特点

  • 主干网络采取了Xception,并融入了他的空洞卷积操作
  • 采用了Decoder模块,那为什么没有像其他网络一样经过了很多个低级特征到高级特征的融合呢?在4倍到原始分辨率的时候,我猜这是因为可能再低级的信息缺乏价值?明明我觉得中间的解码结构是很好的,没有看到作者介绍。或者对于deeplab这样的结构来说两次解码已经可以达到很好的效果,再多的信息可能没有什么提升吧。

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

相关文章

语义分割网络系列2——Unet

目录 1 Unet网络介绍1.1 Unet论文1.2 简介1.3 6大特点 2 Unet网络3种不同的实现方式2.1 Unet网络的class实现(mIou)2.2 Unet网络的layer的实现(mIou)2.3 第3种实现方法(存在问题,验证集准确率一直不变&…

毕业设计 U-Net遥感图像语义分割(源码+论文)

文章目录 0 项目说明1 研究目的2 研究方法3 研究结论4 论文目录5 项目源码6 最后 0 项目说明 **基于 U-Net 网络的遥感图像语义分割 ** 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 实验训练使用 Anaconda 版 Python 3.7 下的 T…

基于深度学习的遥感影像语义分割数据预处理

基于深度学习的遥感影像语义分割数据预处理 第一次处理数据,不熟练,仅供参考 数据预处理工具:Arcgis 第一步:下载遥感影像tif数据 根据实际需求选择感兴趣的遥感影像区域 数据来源:Google卫星影像 第二步&#xff1…

语义分割—遥感影像数据标签制作(ARCGIS)

目录 制作标签 转为tif格式 制作标签 1.新建文件夹链接 2.右键新建的文件夹,新建一个shp文件 3.要素类型选择面要素,并为shp文件命名 此处可以配置与依赖图层相同的坐标系,也可以在转为.tif的时候修改环境里的两个选项统一坐标系 4.右键文…

语义分割:遥感影像标签制作

1、打开一张遥感影像,或者航片 2.新建shp:在对应文件夹下,右键新建shpfile 选择面,添加坐标系与影像坐标系相同 3.开始编辑新建的shp 选择面,沿图像四周紧贴图像画矩形 4. 保存编辑内容后停止编辑否则无法添加字段&…

LaTeX的斜体,粗体

参考 LaTeX的斜体,粗体 - 云社区 - 腾讯云 写文章的小伙伴应该知道,在文章中,变量是需要斜体的,那么怎么才是斜体呢 首先,在LATEX中,强调可以以斜体形式展现出来。那么强调命令是如何体现的呢&#xff1a…

LaTeX 加粗

本系列文章由 yhl_leo 出品,转载请注明出处。 文章链接: http://blog.csdn.net/yhl_leo/article/details/50997822 LaTeX中文本加粗的方法,给出代码示例,一看就懂: \documentclass{article} \usepackage{amsmath}\beg…

【LaTex 中英文样式加粗】自由选择中英文字体样式,中英文字体粗黑程度设置

🌼 在本文中,选择楷体样式,以及加粗的楷体。 ▚ 01 设置全文字体 1.1 中文 以设置中文为楷体为例: 在\documentclass{article}与\begin{document}之间,添加语句\setCJKmainfont[AutoFakeBold2.5,ItalicFont{楷体}]{…

LaTeX表格字体加粗(解决文本变宽问题)

latex中对文本加粗常用的方法是 \textbf{*} 在表格中,这个命令也同样生效。但它会使文本变宽,如 尝试的方法 网上找了很多办法,想改变表格加粗的宽度,常见是是调整LaTeX字体,如下 Command Nominal Point Size …

Latex排版小技巧0001:中文字体加粗

论文排版时中文字体加粗 在设置CJK字体过程中添加[AutoFakeBold {3.17}]设置,参数 “3.17” 用于指定加粗程度。加粗时使用 latex 默认加粗指令 \textbf 即可。 \setallmainfonts{Times New Roman}\setCJKmainfont[AutoFakeBoldtrue]{SimSun}\newCJKfontfamily{\h…

latex中如何加粗字体?

加粗代码: \textbf{文字} 效果图:

LaTeX中\textbf无法将汉字进行加粗

场景 利用\textbf对汉字进行加粗: \textbf{模型复杂度}显示如下: 可以发现,确实没有被加粗。 解决 一开始设置了全局字体为宋体: \setCJKmainfont{SimSun}注释掉即可。

解决LaTeX英文字体加粗失效、无法加粗问题

文章目录 一、前言二、具体问题三、解决办法四、使用效果 一、前言 最近使用 LaTeX 作为模板写实验报告、论文时,在自己写的 cls 文件里定义好了各种字体及格式,但是在使用过程中却出现了部分问题。 二、具体问题 标题、摘要里的英文字体并不能像中文字…

LaTex常用技巧3:加粗字体

截图来自[1] 普通加粗 \mathbf 斜体加粗 \usepackage{bm} \bm 矩阵、向量的加粗需要使用。 相关参考 [1]latex矩阵加粗

【latex】Latex如何加粗文字;表格中如何加粗文字而不让文本变宽

问题 latex中对文本加粗常用的方法是 \textbf{*}在表格中,这个命令也同样生效。但它会使文本变宽,如 尝试 网上找了很多办法,想改变表格加粗的宽度,常见是是调整LaTeX字体,如下 Command Nominal Point Size …

vmware 安装报错:failed to install hcmon drivers 完美解决(含VMware15激活码)

首先绝大部分使用网上的方法,删除各种驱动和注册表都是结果都是失败的:再次安装的结果仍然是: 在网上搜寻几天找到一位大神博客,完美解决,试了之后的结果是完美安装,搬运如下: 解决方法&…

安装VMware WorkStation

安装VMware准备: 软件准备: VMware-workstation-full-12.1.1-3770994.exe 秘钥准备: 1、双击VMware-workstation-full-12.1.1-3770994.exe,进行安装如下图所示: 2、弹出的界面中选择“我接受许可协议中的条款”&…

虚拟机安装以及镜像激活码下载

虚拟机的概念和作用,这里不再阐述,不明白的可以自行百度。 需要注意的是,穿越火线无需虚拟机即可多开,安装虚拟机 后台 挂机刷经验,英雄联盟使用虚拟机可以后台挂机刷金币。 〓-------------------------- -------- --…

Deepin 系统下安装VMware并激活.

打开深度商店:搜索VMware,并下载安装. 打开启动器:点击VMware-install, 填写你的管理员密码.(如果当出现这个页面,同时按住ctrl alt A 键 会卡掉.按esc 退出,因该是一个bug) 然后就是下一步. 最后完成安装. 然后打开VMware Workstation.输入密钥. CG54H-D8D0H-H8DHY-C6X7X-…

MacBook Pro完整卸载及安装激活VMware Fusion13.0.0教程

目录 一、MacBook Pro 卸载原有的VMware Fusion二、MacBook Pro下载并安装激活VMware Fusion2.1 下载并安装于Ventura 13.0.1系统2.1.1 下载地址2.1.2 安装2.1.3 激活 VMware Fusion 13.0.0 一、MacBook Pro 卸载原有的VMware Fusion 具体操作过程可以详见: mac完整…