语义分割总结

news2024/12/30 15:19:59

文章目录

  • 0. 前言
  • 1. 数据集
  • 2. 经典网络
    • 2.1 FCN
    • 2.2 U-Net
    • 2.3 DeepLab
    • 2.4 PSPNet
    • 2.5 SegNet
    • 2.6 CCNet
    • 2.7 SegFormer
  • 3. 损失函数
  • 4. 评价指标
  • 5. 最新进展
    • (2023.4) Segment Anything

0. 前言

语义分割是一种计算机视觉领域的图像分割技术,旨在将图像中的每个像素分配到其对应的语义类别中。与传统的图像分割技术不同,语义分割旨在对图像进行更精细的划分,以识别出图像中每个像素的语义含义。在语义分割中,每个像素被标记为属于一个预定义的语义类别,例如人、车、路、树等等。与此相比,传统的图像分割方法通常仅仅将图像分成前景和背景两个部分。

语义分割可以应用于各种计算机视觉任务,如自动驾驶、目标检测、图像分析和医学图像分析等,常用的网络架构包括全卷积网络(FCN)、U-Net和SegNet等。

1. 数据集

用于语义分割神经网络训练的数据集有很多,这些数据集通常都是由人工标注的图像和相应的标签组成。以下是一些常用的语义分割数据集:

  • Pascal VOC:一个用于视觉对象识别和检测的基准数据集。它是由英国牛津大学计算机视觉小组于2005年至2012年期间创建的。该数据集包含20个不同的对象类别,如人、车、飞机、狗等,并且在每个图像中都有一组手动标记的对象边界框,用于指示每个对象在图像中的位置和大小。Pascal VOC数据集包含多个版本,每个版本都有其自己的训练和测试集。其中,2007年版本包含2501个训练图像和2510个测试图像,而2012年版本包含17125个训练图像和11540个测试图像。
  • COCO:一个大规模的图像识别、对象检测、分割和场景理解的基准数据集。该数据集由微软公司于2014年发布,旨在提供更具挑战性和现实性的场景。COCO数据集包含超过33万张图像,其中包括超过80个不同的对象类别,如人、动物、交通工具、食品、电子产品等。每个图像都有多个对象实例,而且对象可能会重叠或遮挡。除了对象边界框外,COCO数据集还提供了每个对象的精确分割掩码。这使得COCO数据集成为了一个重要的分割任务的基准数据集。
  • Cityscapes:面向自动驾驶和场景理解的基准数据集,由德国德累斯顿工业大学和美国卡内基梅隆大学联合发布。该数据集包含来自德国和其他欧洲城市的街道场景图像和相应的注释信息。Cityscapes数据集包含5000张高分辨率的图像,其中包括50个不同的城市街道场景。每个图像都提供了不同季节、不同天气和不同时间的视角,以便更好地反映真实世界的场景变化。Cityscapes数据集还提供了精确的像素级别标注,包括道路、建筑物、行人、车辆等对象的分割掩码和实例级别的注释信息。
  • ADE20K:该数据集由美国麻省理工学院计算机科学和人工智能实验室发布,包含了超过2万张图像和400个对象类别。ADE20K数据集中的图像来自不同的场景,如室内、室外、城市、自然景观等,并且覆盖了不同的语境和场景复杂度。每张图像都被手动注释,包括像素级别的标注和场景标签。标注信息包括物体边界框、物体实例分割、场景区域分割等,能够有效地反映真实场景的多样性和复杂性。
  • CamVid:CamVid数据集是一个语义分割的基准数据集,包含了由剑桥大学计算机实验室收集的视频序列和对应的像素级别标注信息。该数据集主要用于道路场景分割的研究和评估。CamVid数据集包含了701个视频图像序列,每个序列都包含了数百张分辨率为480×360的图像。这些图像涵盖了道路、人行道、建筑物、交通标志、汽车、行人等常见的道路场景。每个图像都被标注了32个不同的对象类别,包括路面、车辆、建筑物、人、树木等。

这些数据集覆盖了许多不同的场景和对象类别,并且包含了大量的图像和标注数据,可以用于训练和评估各种不同的语义分割神经网络模型。

2. 经典网络

经典的语义分割神经网络模型包括FCN,SegNet,U-Net,DeepLab和PSPNet,这些神经网络模型在语义分割任务中都具有一定的优势,并且在不同的场景和数据集上表现出了良好的性能。同时,还有许多基于这些模型的改进和扩展,可以进一步提高语义分割的精度和效率。

2.1 FCN

论文:Fully Convolutional Networks for Semantic Segmentation

FCN是第一个专门用于语义分割的神经网络模型,通过将全连接层替换为卷积层,实现了端到端的像素级别的预测。FCN网络框架如下图所示,输入一张图像,经过全卷积网络得到S×S×(类别数+1)的特征图,然后通过上采样得到与输入图像分辨率一致的热力图,热力图包含了每个像素的类别信息。
在这里插入图片描述
如果仅对最后一层卷积输出进行上采样,得到的分割结果并不理想,因为随着分辨率的减小,丢失了过多的细节信息。因此,FCN中提出了跳级结构,将不同阶段的特征进行结合,融合了局部信息和全局信息,能够获取更加精细和准确的分割结果。跳级结构示意图如下,论文中将最后一层卷积(conv7)输出直接上采样32倍的网络称为FCN-32s;将pool4输出与上采样两倍的conv7输出逐元素相加,然后经过16倍上采样得到最终预测结果,将该网络称为FCN-16s;同理,结合pool3、pool4和conv7的网络称为FCN-8s。直觉上来看,FCN-8s利用了更多的特征预测热力图,应该具有最高的分割精度,论文中的实验证明也确实如此。
在这里插入图片描述

2.2 U-Net

U-Net: Convolutional Networks for Biomedical Image Segmentation
U-net 的设计初衷是为了解决医学图像分割问题,由于效果确实很好,后来也被广泛的应用于image-to-image领域。U-Net网络可以分为encoder、decoder和特征融合3个部分,其中encoder负责特征提取,decoder负责信息恢复,特征融合使用跨层跳跃连接,不同于FCN采用add的方式进行融合,U-Net采用的是concat。
在这里插入图片描述

2.3 DeepLab

DeepLab v1:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
DeepLab v1使用VGG-16作为基础模型,并对其进行了以下修改以适应语义分割任务:
① 将最后三个全连接层(fc6, fc7, fc8)改成卷积层
② 将最后两个池化层(pool4, pool5)步长由2改成1,并将最后三个卷积层(conv5_1, conv5_2, conv5_3)的dilate rate 设置为2
③ 输出层通道数改为21(20个类别,1个背景)

两个创新点:
① 减少下采样次数避免过多的信息丢失,同时通过使用空洞卷积保证感受野
② 全连接条件随机场后处理改善分割结果
在这里插入图片描述


DeepLab v2:Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs
在DeepLab v1的基础上做了两点改进:
① 引入了ASPP(Atrous Spatial Pyramid Pooling,膨胀空间金字塔池化)策略,在给定的输入特征图上以不同采样率的空洞卷积并行采样,以多个尺度捕获目标和图像的上下文内容,从而获得更好的分割性能。
② 将VGG-16替换为ResNet-101
在这里插入图片描述


DeepLab v3:Rethinking Atrous Convolution for Semantic Image Segmentation
① 通过级联空洞卷积block,在控制特征图分辨率的同时保证较大感受野
在这里插入图片描述
② 改进ASPP模块
在这里插入图片描述


DeepLab v3+:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
改进点:
① 添加解码模块,融合低级特征和高级特征
② 使用改进的Xception网络作为backbone
③ 在ASPP中使用深度可分离卷积,在基本不影响模型效果的前提下减少计算量
在这里插入图片描述

2.4 PSPNet

论文:Pyramid Scene Parsing Network
亮点:使用金字塔池化模块融合多尺度特征
在这里插入图片描述
金字塔池化模块:POOL表示采用1x1、2x2、3x3和6x6四种不同尺寸的pooling操作得到多个尺寸的特征图,并通过1x1卷积来减少通道数。然后通过双线性插值(UPSAMPLE)将分辨率恢复到Feature Map大小,然后在通道上将原始feature和多尺度feature进行拼接。

2.5 SegNet

论文:SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
SegNet由一个编码器网络和一个对应的解码器网络以及一个像素级分类层组成
在这里插入图片描述
亮点:解码器使用在对应编码器的最大池化步骤中计算的池化索引来执行非线性上采样,这与反卷积相比,减少了参数量和运算量,而且消除了学习上采样的需要。
在这里插入图片描述

2.6 CCNet

CCNet: Criss-Cross Attention for Semantic Segmentation
创新点:提出了十字交叉注意力模块,能够获得密集的上下文信息,保持长距离的空间依赖性,并且相比non-local模块计算量较小。
在这里插入图片描述
下图为十字交叉注意力模块的结构,可以看到,其实就是non-local模块的一种改进,都是通过key和query生成attention map,然后作用到value上。
在这里插入图片描述

通过循环两次十字交叉注意力模块,建立特征图中任意两个位置之间的依赖关系。为什么要循环两次呢?论文中也做了解释,loop1中,左下角和右上角没有建立依赖关系,第二次通过左上角和右下角的传递,实现了左下和右上依赖关系的建立。
在这里插入图片描述

2.7 SegFormer

SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers
在这里插入图片描述

3. 损失函数

  • Cross-Entropy Loss
    在这里插入图片描述

  • Weighted Cross Entropy Loss
    在这里插入图片描述

  • Dice Loss
    在这里插入图片描述

  • Focal Loss
    Focal Loss for Dense Object Detection
    在这里插入图片描述

  • Lovasz-Softmax Loss
    The Lovasz-Softmax loss: A tractable surrogate for the optimization of the intersection-over-union measure in neural networks

  • OHEM(Online Hard Example Mining)

4. 评价指标

  • PA
  • CPA
  • MPA
  • IOU
  • mIOU

5. 最新进展

(2023.4) Segment Anything

项目地址:https://github.com/facebookresearch/segment-anything
项目主页:https://segment-anything.com/
分割一切,号称CV领域的ChatGPT,无需额外训练,分割效果极佳!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

校内赛WP

Web题目镜像如下: docker pull lauaiwin/hzuctf-flaskrce:latest docker pull lauaiwin/hzuctf-ezphp:latest docker pull lauaiwin/hzuctf-babysql:latest docker pull lauaiwin/hzuctf-sign:latest docker pull lauaiwin/hzuctf-ezupload:latestWeb-签到 通过loc…

sentinel 随笔 2-降级处理

0. 像喝点东西,但不知道喝什么 先来段源码,看一下 我们在dashboard 录入的降级规则,都映射到哪些字段上 package com.alibaba.csp.sentinel.slots.block.degrade;public class DegradeRule extends AbstractRule {public DegradeRule(String…

Spring的第十二阶段(03):Spring实现AOP的简单使用

1、获取拦截方法的返回值和抛的异常信息 获取方法返回的值分为两个步骤: 1、在返回值通知的方法中,追加一个参数 Object result 2、然后在AfterReturning注解中添加参数returning“参数名” 获取方法抛出的异常分为两个步骤: 1、在异常通…

Python入门(五)列表(二)

列表(二) 1.组织列表1.1 使用方法sort()对列表永久排序1.2 使用函数sorted()对列表临时排序1.3 倒着打印列表1.4 确定列表的长度1.5 使用列表时避免索引错误 2.操作列表2.1 遍历整个列表2.1.1 for循环2.1.2 在for循环中执行更多操作2.1.3 在for循环结束后…

用C语言编写,计算并输出下列多项式值 s=1+1/(1+2)+1/(1+2+3)+ ..1/(1+2+3...+50)

C/C语言程序设计题目 用C语言编写&#xff0c;计算并输出下列多项式值 s11/(12)1/(123) …1/(123…50) C语言设计编程代码 #include <stdio.h>int main() {double s 0; // 初始化s的值为0int n 0; // 初始化n的值为0for (int i 1; i < 50; i) {n i; // 累加n的…

scatterlist

在内核驱动程序的很多代码中&#xff0c;都能够看到类似sgdma的内容&#xff0c;sgdma全称为Scatter/Gather DMA(散列/收集 DMA)&#xff0c;内核中抽象了scatterlist和sg table用来描述和管理这种需要做散列和收集的DMA缓冲区。在内核中设计scatterlist&#xff0c;主要出于两…

BDCC - Lambda VS Kappa

文章目录 概述区别Lambda架构:Kappa架构:总结 适用场景:案例:小结 概述 Lambda架构和Kappa架构都是用于处理大数据的架构模式。 Lambda架构使用了批处理和流处理两种不同的处理方式来处理数据。数据首先通过流处理层进行实时处理&#xff0c;然后再通过批处理层进行离线处理&…

开源C#代码生成器,SmartSoftHelp 开发辅助工具

开源代码生成器&#xff0c;支持自定义生成代码&#xff0c;开源生成代码&#xff0c;自己编写生成格式&#xff0c;最方便的代码生成器 下载地址&#xff1a; 百度网盘 请输入提取码

《时间从来不语,却回答了所有问题》笔记三

目录 感悟 经典摘录 假若我再上一次大学 不完满才是人生 走运与倒霉 毁誉 我的座右铭 二月兰 观天池 火车上观日出 感悟 人这个万物之灵却偏偏有了感情&#xff0c;有了感情就有了悲欢。自古及今&#xff0c;海内海外&#xff0c;一个百分之百完满的人生是没有的&…

《Java虚拟机学习》JVM虚拟机是如何执行方法

1. 重载与重写方法 重载 重载 &#xff1a;同一个类中&#xff0c;方法名相同&#xff0c;形参列表不用&#xff0c;与返回值无关 对于重载方法的执行&#xff0c;JVM遵循下面的三条规则&#xff1a; 在不考虑对基本类型自动装拆箱&#xff08;auto-boxing&#xff0c;auto-…

图嵌入表示学习—Graph Embeddings

Embedding Entire Graphs 一、图嵌入向量基本概念 与Node Embeddings不同&#xff0c;Graph Embeddings是对整个图或子图进行编码而忽略其中的节点。应用场景包括异常检测或分子有毒检测。 二、对Node Embeddings求和或求和后平均 如图&#xff0c;首先对图/子图中的节点进行…

shell与shell script 学习总结

文章目录 shell与shell script 学习总结vivim可视化区块多文件编辑多窗口功能vim环境设置与记录中文编码问题语系编码转换 Shell的变量功能变量的使用与设置echo(变量的使用)变量设置的规则 环境变量的功能env(观察环境变量)set(观察所有变量)unset(取消变量) locale(语系变量)…

【Hello Network】TCP协议相关理解

作者&#xff1a;小萌新 专栏&#xff1a;网络 作者简介&#xff1a;大二学生 希望能和大家一起进步 本篇博客简介&#xff1a;补充下对于TCP协议的各种理解 TCP协议相关实验 TCP相关试验理解CLOSE_WAIT状态理解TIME_WAIT状态解决TIME_WAIT状态引起的bind失败的方法理解listen的…

分布式 03 富文本处理插件和图片文件上传

01.使用富文本编辑器来上传图片文件。 02.最开始在html文件中去使用相关富文本的插件。 引入相关文件 <link href"/js/kindeditor-4.1.10/themes/default/default.css" type"text/css" rel"stylesheet"> <script type"text/java…

Redis面试题(上)

1.什么是 Redis&#xff1f; Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 Strin…

Python机器学习入门 -- 支持向量机学习笔记

文章目录 前言一、支持向量机简介二、支持向量机的数学原理1. 距离解算2. 目标函数3. 约束下的优化求解4. 软间隔优化5. 核函数变换 三、Python实现支持向量机1. 惩罚力度对比2. 高斯核函数3. 非线性SVM 总结 前言 大部分传统的机器学习算法都可以实现分类任务&#xff0c;但这…

干货丨你真的了解反应持续时间吗?

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 在今天的推文里&#xff0c;要给大家分享的是一种灵活、免费的心理科学工具——反应持续时间&#xff0c;快来一起看看哦~ 01 导读 简单按键的反应持续时间是一种容易获得但未被充分利用…

C++相比于C语言增加的8个小特性(详解)

C相比于C语言增加的8个小特性&#xff08;详解&#xff09; 文章目录 C相比于C语言增加的8个小特性&#xff08;详解&#xff09;一、命名空间二、C输入和输出三、缺省参数四、函数重载五、引用六、内联函数七、auto关键字八、指针空值nullptr总结 一、命名空间 c的命名空间是…

从一到无穷大 #8 Arrow,Parquet and ORC

文章目录 引言ArrowParquetNested EncodingRepetition LevelsDefinition Levels 列化压缩 ORC 引言 以我的机器为例来做一个简单的计算&#xff1a; 执行cat /proc/cpuinfo |grep MHz|uniq可以看到目前机器中CPU频率&#xff0c;得到值 2494.140MHZ&#xff5e;2494140000HZ&…