语义分割知识点:UNet、FCN、SegNet、PSPNet、DeepLab系列

语义分割知识点:UNet、FCN、SegNet、PSPNet、DeepLab系列

  • 前言
  • 语义分割网络剖析
    • UNet系列
      • UNet
        • UNet网络有几个主要的特点:
        • 从UNet结构图可以知道,收敛路径主要的过程为
        • 简要总结:
      • UNet++
        • 为什么UNet++可以被剪枝?
        • 如何剪枝? 根据子网络在验证集的结果来决定剪多少。
      • UNET 3+
    • FCN
    • FPN
      • FCN,FPN,UNet对比总结:
    • SegNet
    • PSPNet
    • DeepLab 系列
      • DeepLab v1
      • DeepLab v2
      • DeepLab v3
      • DeepLab v3+

前言

  • 本文是个人收集、整理、总结的一些人工智能知识点,由于本人水平有限,难免出现错漏,敬请批评改正。
  • 由于本文是对知识点的收集和整理,图片基本来源于网络,图片若侵权,可联系删除。
  • 更多精彩内容,可点击进入人工智能知识点
    专栏、Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

语义分割网络剖析

语义分割是图像分割中的基本任务,是指对于图像将每个像素都标注上对应的类别,不区分个体。

UNet系列

UNet

UNet(U-Net)论文的地址是:

https://arxiv.org/abs/1505.04597

论文全称:U-Net: Convolutional Networks for Biomedical Image Segmentation

作者:Olaf Ronneberger, Philipp Fischer, Thomas Brox

UNet是一种经典的用于生物医学图像分割的卷积神经网络结构,因其U形的网络设计而得名,具有编码-解码结构,能够在有限的数据集上实现高精度的图像分割任务。
在这里插入图片描述

  • 编码器-解码器架构,四次下采样(maxpooling),四次上采样(转置卷积),形成了U型结构。
  • 网络首先对输入图片进行了4组卷积和下采样操作来获取图像的高阶特征,之后同样通过4组反卷积将图像放大回接近输入图像的大小。
  • Unet最核心的一个思想: 特征图的拼接
  • Unet一个重要的创新在相同深度的block之间加入了跳转连接
UNet网络有几个主要的特点:

① 网络可以从中间分为左右两部分,左边是收缩路径,利用降采样卷积模块提取不同尺度的特征;右边是扩展路径,利用上采样卷积模块恢复尺度并融合先前特征,逐渐恢复图像
② 卷积模块由两层连续的卷积层组成,它可以实现更大尺寸和更高深度的特征提取;降采样实现图像尺度的缩小上采样(或反卷积层)实现图像尺度的变大
③ 图中灰色的箭头线表示跳连,作用是在同一尺度下,将收缩路径上的特征合并到扩展路径上的特征,这样可以在扩展路径上提供更好的约束,网络也更容易输出我们期望的结果。

从UNet结构图可以知道,收敛路径主要的过程为

(1) 首先定义重复使用的卷积模块(函数)
重复两次“卷积层 -> 标准化层 -> 激活函数”,即创建了两个串联的卷积层,这是一种常用的特征提取器,最后输出X。
(2) 收敛路径
输入图片 -> ①(卷积模块 -> 下采样 -> dropout层) -> ②(卷积模块 ->下采样 -> dropout层) -> ③(卷积模块 ->下采样 -> dropout层) -> ④(卷积模块 ->下采样 -> dropout层)

img = Input(shape=self.shape) # self.shape是图片维度大小
c1 = conv2d_block(img, n_filters=n_filters * 1, kernel_size=3, batchnorm=batchnorm, padding=padding)
p1 = MaxPooling2D((2, 2))(c1)
p1 = Dropout(dropout * 0.5)(p1)
......

(3) 扩展路径
输入上一层的输出 -> ⑥(上采样 -> 特征合并 -> dropout层 -> 卷积模块) -> ⑦(上采样 -> 特征合并 -> dropout层 -> 卷积模块) -> ⑧(上采样 -> 特征合并 -> dropout层 -> 卷积模块) -> ⑨(上采样 -> 特征合并 -> dropout层 -> 卷积模块)。

u6 = Conv2DTranspose(n_filters * 8, (3, 3), strides=(2, 2), padding='same')(c5)
u6 = concatenate([u6, c4])
u6 = Dropout(dropout)(u6)
c6 = conv2d_block(u6, n_filters=n_filters * 8, kernel_size=3, batchnorm=batchnorm, padding=padding)
......

(4) 输出层
根据输出图片的数据格式,可以定义我们的输出层:

output = Conv2D(1, (1, 1), activation='sigmoid')(c9)
return Model(img, output)
简要总结:
  • 首先进行Conv+Pooling下采样; 然后反卷积进行上采样,crop之前的低层feature map,进行融合;
  • 再次上采样。
  • 重复这个过程,直到获得输出388x388x2的feature map,
  • 最后经过softmax获得output segment map。

UNet++

UNet++的论文地址是:

https://arxiv.org/abs/1807.10165

论文标题:UNet++: A Nested U-Net Architecture for Medical Image Segmentation

UNet++是对原始UNet模型的一种扩展和改进,通过引入多层次的跳跃连接以及更深层次的特征融合机制,旨在增强对图像细节的捕捉能力和分割准确性,特别是在处理医学图像分割任务时表现出了优越性。
在这里插入图片描述

UNet++是在UNet的基础上添加嵌套和密集跳过连接的CNN.
借鉴了DenceNet的密集连接,对Unet改进的点主要是skip connection,下图所示,其中黑色部分代表的就是原始Unet结构,绿色代表添加的卷积层,蓝色代表改进的skip connection,每一个水平层就是非常标准的DenseNet的结构。

引入了深度监督的思路。网络的loss函数是由不同层得到的分割图的loss的平均,每层的loss函数为 Dice loss 和 Binary cross-entropy loss 之和,

引入DSN(deep supervision net)后,通过model pruning(模型剪枝)能够实现模型的两种模式:高精度模式和高速模式。

UNet++性能的提升和参数量无直接关系,和网络结构有关。

为什么UNet++可以被剪枝?

测试时,剪掉部分对剩余结构不做影响;训练时,剪掉的分支对剩余部分有影响。

如何剪枝? 根据子网络在验证集的结果来决定剪多少。

剪枝好处在哪里? 模型的内存可以节省18倍 (移动端使用)。

UNET 3+

UNet 3+的论文地址没有直接提供,但根据之前的记录提及,该论文题目为“UNet 3+: A Full-Scale Connected UNet for Medical Image Segmentation”,并且它在2020年5月的ICASSP 2020(IEEE International Conference on Acoustics, Speech and Signal Processing)上有过展示。

由于未直接给出链接,您可以尝试通过搜索引擎或学术数据库(如IEEE Xplore)查找该论文全文。若需要具体链接,请进一步核实或访问相关学术资源网站进行检索。
在这里插入图片描述

使用全尺度的跳跃连接把不同尺度的特征图相融合,并且通过深度监督从多尺度聚合的特征图中学习特征表达,还提出了一种混合损失函数,将分类任务和分割任务相结合可以增强器官边界和减少非器官图像的过度分割,从而获得更准确的分割结果。

FCN

FCN(Fully Convolutional Networks)论文的地址是:

https://arxiv.org/abs/1411.4038

论文全称:Fully Convolutional Networks for Semantic Segmentation

作者:Jonathan Long, Evan Shelhamer, Trevor Darrell

发表时间:2014年11月

这是深度学习领域中关于语义分割的经典论文之一,首次提出了全卷积网络的概念,将卷积神经网络应用于像素级别的图像分割任务。
在这里插入图片描述
思路:通过将全连接层变成上采样层来恢复特征图的尺寸,进行端到端训练。采用VGG作为效果最好,但是推理最慢;

核心的思想是特征图的融合
backbone是分类网络,下采样都是maxpooling,上采样使用的是双线性插值初始化的转置卷积。

做语义分割,核心思想:

  • 不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。
  • 增大数据尺寸的反卷积(deconv)层。能够输出精细的结果。
  • 结合不同深度层结果的跳级(skip)结构。同时确保鲁棒性和精确性。

FPN

FPN(Feature Pyramid Network)论文的地址是:

https://arxiv.org/abs/1612.03144

论文全名:Feature Pyramid Networks for Object Detection

作者:Tsung-Yi Lin, Piotr Dollar, Ross Girshick, Kaiming He, Bharath Hariharan, Serge Belongie

FPN通过构建特征金字塔结构,有效地解决了目标检测中多尺度物体检测的问题,并且在保持计算效率的同时提高了对小目标的检测性能,尤其在与两阶段检测框架(如 Faster R-CNN)结合时表现出色。
在这里插入图片描述

单一维度的图片作为输入,然后它会选取所有层的特征来处理然后再联合起来做为最终的特征输出组合。

1.普通CNN特征自底至上逐层浓缩表达特征的一个过程;
2.自上至下的:在将上层feature map等比例放大后再与本层的feature maps做逐个元素地(element wise)相加。
3.CNN层特征与每一级别输出之间的表达关联。用1x1的Conv即可生成较好的输出特征,它可有效地降低中间层次的channels 数目。

FCN,FPN,UNet对比总结:

三者都是对称的下采样再上采样的全卷积网络。

  • 在上采样方式上:
    • FCN和U-Net都是使用以双线性插值为初始值的反卷积;
    • FPN最近邻上采样。
  • 在特征融合:
    • FCN将不同尺度的特征简单相加 ;(tf.add)
    • U-Net将浅层特征截取后和高层特征拼接;(tf.concat)
    • FPN是用1*1卷积处理浅层特征图再和高级特征相加。

SegNet

SegNet论文的地址是:

https://arxiv.org/abs/1511.00561

这篇论文的全名是 “A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation”,由 Badrinarayanan, K., Kendall, A., and Cipolla, R. 撰写。SegNet是一种用于图像语义分割的深度卷积编码-解码架构。
在这里插入图片描述
使用编码器-解码器结构,backbone是2个VGG16,去掉全连接层;

核心的想法是提出了maxpool索引来解码的方法,节省了内存;

PSPNet

PSPNet(Pyramid Scene Parsing Network)论文的地址是:

https://arxiv.org/abs/1612.01105

此外,您也可以在以下网址找到PDF版本的论文:

http://jiaya.me/papers/PSPNet_cvpr17.pdf

PSPNet是由何恺明等人在CVPR 2017会议上发表的研究成果,该网络结构利用了金字塔池化模块(Pyramid Pooling Module)有效捕捉并整合多尺度全局上下文信息,以提升图像语义分割性能。
在这里插入图片描述
核心思想是提出了金字塔池化模块,模型带有空洞卷积;

金字塔池化(Pyramid pooling)融合了四个比例的特征,结合多尺寸信息:SPP

其backbone为修改Resnet-101 为 ResNet-103,而且有辅助 loss,上采样是双线性插值 。

DeepLab 系列

DeepLab v1

DeepLab v1的论文地址如下:

https://arxiv.org/pdf/1412.7062v3.pdf

论文标题:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs

作者:Liang-Chieh Chen, George Papandreou, Iasonas Kokkinos, Kevin Murphy, and Alan L. Yuille

发表会议:ICLR 2015 (International Conference on Learning Representations)
在这里插入图片描述

核心思想是使用空洞卷积扩大感受野,条件随机场(CRF)细化边界

backbone是VGG16,下采样8倍

在这里插入图片描述

DeepLab v2

DeepLab v2的论文地址如下:

https://arxiv.org/abs/1606.00915

论文全称:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

作者:Liang-Chieh Chen, George Papandreou, Kelvin Xu, Tao Xu, Jonathan Huang, Andrew L. Ng

发表时间:2016年,并在2017年的IEEE TPAMI(IEEE Transactions on Pattern Analysis and Machine Intelligence)上被收录。
在这里插入图片描述
和v1比多了ASPP(空洞空间卷积池化金字塔)

流程上是DCNN + Atrous convlution + CRF

backbone是VGG16和ResNet-101,下采样8倍

ASPP是多尺度下融合特征,CRF是进行边界的精确化

DeepLab v3

DeepLab v3的论文地址是:

https://arxiv.org/abs/1706.05587

论文标题:Rethinking Atrous Convolution for Semantic Image Segmentation

作者:Chen, Liang-Chieh, et al.

该论文提出了一种重新思考和改进 atrous 卷积(空洞卷积)在语义图像分割中的应用方法,并介绍了DeepLab v3模型的关键改进之处,包括改进型的ASPP模块(空间金字塔池化模块)以及Multi-grid策略等。
在这里插入图片描述
和v2的区别在于ASPP多了image-level feature,没有使用CRF

提出了mutil-grid,改进了级联网络的性能

流程上是端到端训练,backbone是ResNet-101

下采样有8倍和16倍两种,8倍性能更好

计算损失时,将输出的上采样

DeepLab v3+

DeepLab v3+的论文地址如下:

https://arxiv.org/abs/1802.02611

论文标题:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation

DeepLab v3+是在DeepLab系列中的一个进化版本,它结合了编码器-解码器结构与空洞可分离卷积,旨在提高对图像中精细细节和多尺度上下文信息的捕捉能力,从而获得更精确的语义分割效果。
在这里插入图片描述
和v3的区别是多了一个解码器模块,backbone用了Aligned Xception(其中有深度可分解卷积)

PASCAL VOC 2012达到了87.8%的mIOU,在JFT预训练的DeepLab v3+在PASCAL VOC 2012上至今领先,达到了80%,但是JFT-300M是谷歌的内部数据集,不开源。

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入人工智能知识点
    专栏、Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/561272.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何打开局域网共享?

局域网共享是一种方便实现文件共享、打印共享和资源访问的技术。通过局域网共享,不同设备之间可以方便地共享文件和资源,提高工作效率和便利性。在网络环境中,使用天联组网工具可以更加快速地实现局域网共享,解决不同地区间的远程…

lesson03:类和对象(中)

1.类的6个默认的成员函数 2.构造函数 3.析构函数 4.拷贝构造函数 1.类的6个默认的成员函数 空类(类中一个成员都没没有)会有成员函数吗? 其实是有的!如果我们在类中什么都不写,编译器会自动生成6个默认成员函数&a…

33. BI - Graph Embedding 回顾以及 GCN 算法介绍

本文为 「茶桁的 AI 秘籍 - BI 篇 第 33 篇」 文章目录 回顾 Graph Embedding什么是 GCNGCN 算法 Hi,你好。我是茶桁。 咱们终于进入核心 BI 课程的最后一部分内容了,之前咱们的重心一直都是在特征选取上,如何获得更好的特征是重中之重&…

踏上R语言之旅:解锁数据世界的神秘密码(二)

R语言学习 文章目录 R语言学习1.数据的R语言表示2.多元数据的R语言调用3.多元数据的简单R语言分析 总结 1.数据的R语言表示 数据框(data frame) R语言中用函数data.frame()生成数据框,其句法是: data.frame(data1,data2,…),例如…

FPGA - ZYNQ 基于EMIO的PS和PL交互

前言: Xilinx ZYNQ系列的芯片,GPIO分为 MIO 、EMIO、AXI_GPIO三种方式。 MIO :固定管脚,属于PS端,也就是ARM端。 EMIO :通过PL扩展,使用时需要分配PL(FPGA)管脚,消耗PL端资源。…

C语言读取数据检索存档《C语言程序设计》·第6章·用数组处理批量数据

C数组使用 添加链接描述 C语言读取数据检索存档 1 添加链接描述 2 添加链接描述 3 添加链接描述 4 添加链接描述 5 添加链接描述 6 添加链接描述 7 matlab转C 添加链接描述

Qt 拖放功能详解:理论与实践并举的深度指南

拖放(Drag and Drop)作为一种直观且高效的用户交互方式,在现代图形用户界面中扮演着重要角色。Qt 框架提供了完善的拖放支持,允许开发者在应用程序中轻松实现这一功能。本篇博文将详细阐述Qt拖放机制的工作原理,结合详…

Spark-机器学习(3)回归学习之线性回归

在之前的文章中,我们了解我们的机器学习,了解我们spark机器学习中的特征提取和我们的tf-idf,word2vec算法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你…

OpenCV从入门到精通实战(八)——基于dlib的人脸关键点定位

本文使用Python库dlib和OpenCV来实现面部特征点的检测和标注。 下面是代码的主要步骤和相关的代码片段: 步骤一:导入必要的库和设置参数 首先,代码导入了必要的Python库,并通过argparse设置了输入图像和面部标记预测器的参数。…

全球首份网络空间测绘报告发布(2022年)

美国、俄罗斯网络韧性位居前 2 位,香港、洛杉矶、新德里位列全球安全城市前三甲 日前,第 55 届亚太先进网络学会(APAN)学术会议在尼泊尔首都加德满都举行,来自中国的网络空间测绘联合研究中心 ( 以下简称联合研究中心 …

SpringCloud系列(8)--将服务提供者Provider注册进Eureka Server

前言:上一章节我们介绍了Eureka服务端的安装与配置,本章节则介绍关于微服务如何入职Eureka Server Eureka架构原理图 1、修改provider-payment8001子模块的pom.xml文件,引入Eureka Clinet的依赖,然后reolad一下,下载依…

第十五届蓝桥杯题解-数字接龙

题意:经过所有格子,并且不能进行交叉,走的下一个格子必须是当前格子值1%k,输出路径最小的那一条(有8个方向,一会粘图) 思路:按照8个方向设置偏移量进行dfs,第一个到达终…

【Django】调用django的pbkdf2_sha256加密算法测试

基于django搭建的系统中,用到pbkdf2_sha256((Password-Based Key Derivation Function 2))加密算法,这里做些代码测试、总结。 PBKDF2简介 PBKDF2是一种基于密码的密钥派生函数,用于从用户提供的…

强固型国产化工业电脑,在电子看板行业应用,机器视觉在汽车产线行业应用

电子看板行业应用 智能电子看板的核心是通过实现工厂的全面可视化、自动化管理,最终达到提高效率、降低成本及提高产品质量的目标。电子看板硬件主要有两部分组成:微型工业计算机,显示终端(平板电视、LCD) 方案需求 …

免费使用ChatGPT 4.0 和 文心一言 4.0

前言 今天给大家分享如何免费使用ChatGPT4.0 和 文心一言 4.0,废话就不多说了,我们直接入正题。 ChatGPT 4.0 先来看看如何免费使用ChatGPT 4.0 进入Coze登录 https://www.coze.com 选择大圣-GPT-4 文心一言 4.0 通过文心智能体平台,就…

ADSP-21479的开发详解五(AD1939 C Block-Based Talkthru 48 or 96 kHz)音频直通

硬件准备 ADSP-21479EVB开发板: 产品链接:https://item.taobao.com/item.htm?id555500952801&spma1z10.5-c.w4002-5192690539.11.151441a3Z16RLU AD-HP530ICE仿真器: 产品链接:https://item.taobao.com/item.htm?id38007…

【leetcode面试经典150题】64. 删除排序链表中的重复元素 II(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

4.6 CORS 支持跨域

CORS (Cross-Origin Resource Sharing )是由 W3C 制定的一种跨域资源共享技术标准,其目的就是为了解决前端的跨域请求。在 Java EE 开发中,最常见的前端跨域请求解决方案是 JSONP ,但JSONP 只支持 GET 请求,这是 个很大…

毅速:一文说清金属3D打印与传统制造的优劣势

在制造业的演进历程中,传统制造与金属3D打印技术分别代表着不同生产方式。二者各具特色,各有优势,但也存在着明显的差异。毅速为您深入剖析这两种制造方式的核心特点,揭示它们在不同应用场景中的优劣,以期为制造业的未…

二维码门楼牌管理应用平台建设:核实与审核的关键作用

文章目录 前言一、二维码门楼牌管理应用平台的建设背景二、核实与审核在二维码门楼牌管理中的应用三、核实与审核的重要性四、优化建议 前言 随着信息技术的快速发展,二维码门楼牌管理应用平台在社区管理中发挥着越来越重要的作用。本文将深入探讨该平台建设过程中…