深度学习语义分割算法之基础知识

文章目录

  • 前言
  • 一、图像分割介绍
    • 1.语义分割
    • 2.实例分割
    • 3.全景分割
  • 二、常见数据集格式
    • 1.PASCAL VOC
    • 2.MS COCO
  • 三、语义分割结果
  • 四、语义分割常见评价指标
    • 1.Pixel Accuracy
    • 2.mean Accuracy
    • 3.mean IoU
  • 五、语义分割标注工具
  • 结束语


  • 💂 个人主页:风间琉璃
  • 🤟 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主
  • 💬 如果文章对你有帮助欢迎关注点赞收藏(一键三连)订阅专栏

前言

提示:这里可以添加本文要记录的大概内容:

一般在计算机视觉领域分割任务主要分为语义分割(Semantic Segmentation)实例分割(Instance Segmentation)全景分割(Panoramic Segmentation)这三大类。这里主要介绍语义分割相关的内容,主要介绍语义分割的定义、常见数据集格式、语义分割评价指标和语义分割标注工具。

  • 数据集(分类、目标检测、语义分割、实例分割)参考:
    PASCAL VOC数据集
    MS COCO数据集

  • 分割标注工具参考:
    Labelme(手工)
    EISeg(半自动)


一、图像分割介绍

在深度学习方面图像分割可分为语义分割(Semantic Segmentation)实例分割(Instance Segmentation)全景分割(Panoramic Segmentation)这三大类。
在这里插入图片描述

1.语义分割

语义分割(semantic segmentation)对图像中每一个像素进行分类,其目的是将图像分割成多个不同类别信息的区域,每个区域表示一个特定的物体类别或者场景元素。

如图(b),语义分割将图像中的每一个像素分配到一个预定义的语义类别,如车,人,信号灯等。不同的类别在图像中使用不同的颜色或者标签表示。

2.实例分割

实例分割(instance segmentation)在像素级别上识别和分割图像中的每个独立的实例或个体,是在语义分割的基础上将同类物体中的不同个体的像素区分开。它不仅区分不同的语义类别,而且对于同一类别的不同个体也进行了区分,即对图像中的每个物体实例进行单独的分割。因此,实例分割不仅在像素级别上标记不同类别,还为每个对象的每个像素分配独特的标签,使得每个对象都有自己唯一的标识。如图(c),实例分割将图中的每一辆汽车和行人进行分割,每一个对象都有自己的标签。

3.全景分割

全景分割(panoptic segmentation)语义分割和实例分割的结合,在提供更全面的图像分割信息,不同于实例分割只对图像中的物体进行检测和分割,全景分割是对图中的所有物体包括背景都进行检测和分割。全景分割同时考虑图像中的每个像素,并将其分为两种类型:语义类别实例对象,能够同时分类出不同类别的语义区域,并对每个对象进行个体级别的分割。如图(d),在全景分割中,图像中的每个像素不仅被标记为语义类别(汽车类和人),还会对每个实例(每辆汽车和每个人)进行独立的分割,并分配独特的标签。

通过上述对语义分割、实例分割和全景分割的描述,我们可以看出三者之间的联系与区别。它们之间的主要区别在于关注的对象和目标有所不同语义分割主要关注图像中的大类别物体,是图像级别的分割结果,不考虑实例级别的区分;实例分割更进一步关注同一类物体中的不同个体,每个像素都属于特定的实例,即对象级别的分割;而全景分割则更进一步,将背景也纳入到关注的范围内。

二、常见数据集格式

这是主要参考如下资料:
PASCAL VOC数据集
MS COCO数据集

1.PASCAL VOC

在这里插入图片描述
PASCAL VOC中提供了分割数据集,数据集中的图片对应标签存储格式为PNG (如右图所示),标签图片中记录了每一个像素所属的类别信息。需要注意的是,右图所展示的图片是使用调色板实现的彩色,不同值的像素就对应不同的颜色,它本质上是一个单通道的黑白图片

在语义分割中对应的标注图像(.png)用PIL的Image.open()函数读取时,默认是P模式,即一个单通道的图像。在背景处的像素值为0,目标边缘处用的像素值为255(训练时一般会忽略像素值为255的区域)目标区域内根据目标的类别索引信息进行填充,比如人对应的目标索引是15,所以目标区域的像素值用15填充。如下图所示
在这里插入图片描述
类别索引与名称对应关系

{"background": 0,"aeroplane": 1,"bicycle": 2,"bird": 3,"boat": 4,"bottle": 5,"bus": 6,"car": 7,"cat": 8,"chair": 9,"cow": 10,"diningtable": 11,"dog": 12,"horse": 13,"motorbike": 14,"person": 15,"pottedplant": 16,"sheep": 17,"sofa": 18,"train": 19,"tvmonitor": 20
}

2.MS COCO

MS COCO数据集针对图像中的每一个目标都记录了多边形坐标 (polygons)。在左边部分每两个数据组成一个坐标点,依次连接就得到目标,将一幅图像中的所有目标绘制出来就得到了右下角这幅图像。
在这里插入图片描述

三、语义分割结果

语义分割的结果是一张单通道的图片(彩色的原因是因为加上了调色板之后的效果)
在这里插入图片描述

四、语义分割常见评价指标

1.Pixel Accuracy

Pixel Accuracy(像素准确率),也称为Global Accuracy(全局准确率),是指通过预测正确的像素数量总的像素数量之间的比例来计算的,用于衡量像素级别的分类准确率,其表达式如下:
P i x e l A c c u r a c y ( G l o b a l A c c ) = ∑ i n i i ∑ i t i Pixel Accuracy(Global Acc)=\frac{\sum_{i}^{} n_{ii}}{\sum_{i}^{} t_{i}} PixelAccuracy(GlobalAcc)=itiinii

n i j n_{ij} nij:类别i被预测成类别j的像素个数
t i = ∑ j n i j t_{i}=\sum_{j}^{} n_{ij} ti=jnij:目标类别i的总像素个数(真实标签),即标注数据中类别i的像素总数量

2.mean Accuracy

mean Accuracy是指类别准确率的平均值,用于消除类别不平衡的影响。其公式如下所示:
m e a n A c c u r a c y = 1 n c l s ⋅ ∑ i n i i t i mean Accuracy = \frac{1}{n_{cls}}\cdot \sum_{i}^{}\frac{n_{ii}}{t_i} meanAccuracy=ncls1itinii

n i j n_{ij} nij:类别i被预测成类别j的像素个数
t i = ∑ j n i j t_{i}=\sum_{j}^{} n_{ij} ti=jnij:目标类别i的总像素个数(真实标签),即标注数据中类别i的像素总数量
n c l s :目标类别个数 ( 包含背景 ) n_{cls}:目标类别个数(包含背景) ncls:目标类别个数(包含背景)

3.mean IoU

mean IoU是指每个类别交并比的平均值,其公式为
M e a n I o U = 1 n c l s ⋅ ∑ i n i i t i + ∑ j n j i − n i i Mean IoU = \frac{1}{n_{cls}}\cdot \sum_{i}^{}\frac{n_{ii}}{t_i +\sum_{j}^{}n_{ji} -n_{ii}} MeanIoU=ncls1iti+jnjiniinii

n i j n_{ij} nij:类别i被预测成类别j的像素个数
t i = ∑ j n i j t_{i}=\sum_{j}^{} n_{ij} ti=jnij:目标类别i的总像素个数(真实标签),即标注数据中类别i的像素总数量
n c l s :目标类别个数 ( 包含背景 ) n_{cls}:目标类别个数(包含背景) ncls:目标类别个数(包含背景)
j:其他类别的索引

语义分割中的mean IoU和目标检测中的IoU原理是一样,先计算每个类别的IoU再求平均,如下图
在这里插入图片描述
绿色表示为真实标签的分割图,蓝色表示为预测得到的分割图。

n i i n_{ii} nii:预测正确的部分,即相交部分
KaTeX parse error: Expected 'EOF', got '}' at position 6: t_{i}}̲:目标类别i的总像素个数(真实标签),即绿色圆的面积
∑ j n j i \sum_{j}^{}n_{ji} jnji:预测的总像素,即蓝色原的面积

分母为并集部分,因为中间重复的部分计算两次,所以需要减掉中间预测正确的部分 n i i n_{ii} nii,以上就可以求出类别i的 IoU,之后计算所有的类别后除以总的类别数,就可以知道平均的IoU。

举例:通过构建混淆矩阵计算(Pytorch官方),以下图预测标签为例
在这里插入图片描述
针对类别 0 :将所有真实标签中为 0 的位置都画成白色,非零的位置都设置为了灰色。同时将预测结果中所有预测为类别0(预测正确)的都画成绿色;预测错的位置用红色表示,如下图所示。
在这里插入图片描述
预测正确的像素值的数量即为图中绿色部分16,预测错误的数量为红色部分,其真实标签是3,所以在应该在混淆矩阵对应的位置填入16和3,如上图右边所示。依次类推,得到最终的混淆矩阵,如下图所示。
在这里插入图片描述
1.根据混淆矩阵得到像素准确度
G l o b a l A c c u r a c y = 16 + 3 + 16 + 12 + 8 64 ≈ 0.859 Global Accuracy = \frac{16+3+16+12+8}{64}\approx 0.859 GlobalAccuracy=6416+3+16+12+80.859

2.根据每一个类别算出不同类别的Accuracy
在这里插入图片描述
3.根据每一个类别算出不同类别的IoU
在这里插入图片描述

五、语义分割标注工具

分割标注工具下载:
Labelme(手工)
EISeg(半自动)

使用参考:
Labelme
EISeg

结束语

感谢阅读吾之文章,今已至此次旅程之终站 🛬。

吾望斯文献能供尔以宝贵之信息与知识也 🎉。

学习者之途,若藏于天际之星辰🍥,吾等皆当努力熠熠生辉,持续前行。

然而,如若斯文献有益于尔,何不以三连为礼?点赞、留言、收藏 - 此等皆以证尔对作者之支持与鼓励也 💞。

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

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

相关文章

更适合敏感口腔的护理牙刷

最近在用一款清九野小红盾舒敏牙刷,感觉它很适合牙龈敏感的人,让刷牙体验有了显著的提升。这款牙刷的柔软刷毛和精细设计让我的刷牙过程变得轻松愉快。它的内外圈双重植毛技术,在清洁牙齿的同时,还能深入牙缝,温和地去…

设计模式原则——单一职责原则(SPS)

设计模式原则 设计模式示例代码库地址: https://gitee.com/Jasonpupil/designPatterns 单一职责原则(SPS): 又称单一功能原则,面向对象五个基本原则(SOLID)之一原则定义:一个类应…

还能这样执行命令?命令执行绕过及防护规则研究

一、引言 我是渗透工程师->很多小伙伴在做攻防实战时发现有时在命令执行的payload中穿插单双引号命令也能执行成功,有时却又不行。那么到底在什么条件下用什么样的方式能实现对命令的切分呢?其中的原理又是如何?有没有其他绕过方式&#…

openlayers 轨迹回放(历史轨迹),实时轨迹

本篇介绍一下使用openlayers轨迹回放(历史轨迹),实时轨迹 1 需求 轨迹回放(历史轨迹)实时轨迹 2 分析 主要是利用定时器,不断添加feature 轨迹回放(历史轨迹),一般是…

rga_mm: RGA_MMU unsupported Memory larger than 4G!解决

目录 报错完整log如下:解决方案:报错完整log如下: [ 3668.824164] rga_mm: RGA_MMU unsupported Memory larger than 4G! [ 3668.824305] rga_mm: scheduler core[4] unsupported mm_flag[0x0]! [ 3668.824320] rga_mm: rga_mm_map_buffer map dma_buf err

Linux环境下安装MySQL5.7.20(源码安装)

📣📣📣 哈喽!大家好,本专栏主要发表mysql实战的文章,文章主要包括: 各版本数据库的安装、备份和恢复,性能优化等内容的学习。。 📣 ***如果需要观看配套视频的小伙伴们,请…

【Apache Doris】周FAQ集锦:第 8 期

【Apache Doris】周FAQ集锦:第 8 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和…

Fluent udf编译的一些注意事项

Fluent udf编译的一些注意事项 参考链接:1.fluent UDF编译环境处理_哔哩哔哩_bilibili 2.【觉兽课堂】ANSYS FLUENT UDF教学02:UDF语法及编写 小白入门必备_哔哩哔哩_bilibili #1 需要注意的内容 ##1.1 修改vs的路径 在fluent路径中,打开ud…

Golang笔记:使用serial包进行串口通讯

文章目录 目的使用入门总结 目的 串口是非常常用的一种电脑与设备交互的接口。这篇文章将介绍golang中相关功能的使用。 本文使用的包为 :go.bug.st/serial https://pkg.go.dev/go.bug.st/serial https://github.com/bugst/go-serial 另外还有一些常见的包如&…

cpp入门(命名空间,输入输出与缺省参数)

目录 cpp关键字 命名空间 命名空间的使用 1.加名称及作用域限定符 2.使用using将命名空间中某个成员引入 3.展开命名空间 注意 输入输出 缺省参数 cpp关键字 命名空间 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字&#xff0c…

素数普遍公式与哥德巴赫猜想

详见百度百科【素数普遍公式】 公元前250年同样是古希腊的数学家埃拉托塞尼提出一种筛法: (一)“要得到不大于某个自然数N的所有素数,只要在2---N中将不大于 的素数的倍数全部划去即可”。 (二)将上面的…

NodeJs实现对本地 mysql 数据库的增删改查

写在前面 今天我们接着写nodejs对数据库的操作,今天实现简单的增删改查,读之前请先移步到这里NodeJs 连接本地 mySql 数据库获取数据,避免后续一些代码出险阅读断层。 安装 nodemon npm install nodemon因为 nodejs 的服务是本地启动,避免后…

FPGA开发Vivado安装教程

前言 非常遗憾的一件事情是,在选修课程时我避开了FPGA,选择了其他方向的课程。然而,令我没有想到的是,通信项目设计的题目竟然使用FPGA,这简直是背刺。在仅有的半个月时间里,准备这个项目确实是非常紧张的…

高考英语3500词

DAY1 DAY2 DAY3 DAY4 DAY5 DAY6 DAY7 DAY8 DAY9 DAY10 DAY11 DAY12 DAY13 DAY14 DAY15 DAY16 DAY17 DAY18 DAY19 DAY20 DAY21 DAY22 DAY23 DAY24 DAY25 DAY26 DAY27 DAY28 DAY29 DAY30 DAY31 DAY32 DAY33 DAY34 DAY35 DAY36 DAY37 DAY38 DAY39 DAY40

网络配置(IP、NETMASK、GATEWAY、DNS、DHCP)

参考: 初学Linux之网络配置(IP、NETMASK、GATEWAY、DNS、DHCP)-CSDN博客【学习笔记】网关 & 路由_网关和路由-CSDN博客【学习笔记】计算机网络 IP地址与MAC地址_根据mac分配ip-CSDN博客【学习笔记】TCP 和 UDP 协议_tcp 发送 syn 应答没有syn ack-CSDN博客 一…

java版CRM客户关系管理系统Spring Cloud alibaba Spring Boot成长型企业必备的客户关系管理系统

鸿鹄CRM客户关系管理系统是一款基于Java语言开发的CRM系统,采用了Spring Cloud Alibaba、Spring Boot、MybatisPlus、Redis和VUE3 ElementUI等技术,构建了一个微服务架构。该系统具有以下功能模块: 一、待办事项 1、今日需联系客户&#xf…

实在RPA的硬件交互功能:U盾机械臂组件

一、为什么需要U盾机械臂? 在使用银行U盾(USB Key)进行操作时,涉及到许多手动确认步骤,特别是按下U盾上的确认按键。这种手动操作是自动化过程中的一个瓶颈。为了实现完全自动化,需要一种方法来自动按下U…

接口测试中遇到的sessionID验证问题

在接口测试中,经常会存在联调的接口,比如登录完去调用其他的接口,这时就会存在一个问题,那就是登录成功了,但是其他接口失败了,这个时候就需要用到一个sessionID去传入其他接口验证合法性请求,这…

Matlab进阶绘图第61期—滑珠散点图

滑珠散点图也是一种在《Nature》中常见的数据图。 其功能类似于柱状图,但更加简洁易读。 由于Matlab中没有现成的函数绘制滑珠散点图,因此需要大家自行解决。 本文利用自己制作的BubbleScatter工具,进行滑珠散点图的绘制,先来看…

ServBay[中文] 下一代Web开发环境

ServBay是一个集成式、图形化的本地化Web开发环境。开发者通过ServBay几分钟就能部署一个本地化的开发环境。解决了Web开发者(比如PHP、Nodejs)、测试工程师、小型团队安装和维护开发测试环境的问题,同时可以快速的进行环境的升级以及维护。S…