Python 全栈体系【四阶】(四十一)

news2024/11/27 6:20:03

第五章 深度学习

九、图像分割

1. 基本介绍

1.1 什么是图像分割

图像分割(Segmentation)是图像处理和机器视觉一个重要分支,其目标是精确理解图像场景与内容。图像分割是在像素级别上的分类,属于同一类的像素都要被归为一类,因此图像分割是从像素级别来理解图像的。如下图所示的照片,属于人的像素部分划分成一类,属于摩托车的像素划分成一类,背景像素划分为一类。

在这里插入图片描述

图像分割

图像分割级别可以分为语义级分割、实例级分割和全景分割。

  • 语义分割(Semantic Segmentation):对图像中的每个像素划分到不同的类别;
  • 实例分割(Instance Segmentation):对图像中每个像素划分到不同的个体(可以理解为目标检测和语义分割的结合);
  • 全景分割(Panoptic Segmentation):语义分割和实例分割的结合,即要对所有目标都检测出来,又要区分出同个类别中的不同实例。

在这里插入图片描述

左上:原图;右上:语义级分割;左下:实例级分割;右下:全景分割
1.2 应用

1)无人驾驶

在这里插入图片描述

2)医学、生物图像分割(如病灶识别)

在这里插入图片描述

3)无人机着陆点判断

4)自动抠图

在这里插入图片描述

5)遥感图像分割

在这里插入图片描述

6)工业质检

在这里插入图片描述

1.3 图像分割的难点

1)数据问题:分割不像检测等任务,只需要标注边框就可以使用,分割需要精确到像素级标注,包括每一个目标的轮廓等信息;

2)计算资源问题:要想得到较高的精度就需要使用更深的网络、进行更精确的计算,对计算资源要求较高。目前业界有一些轻量级网络,但总体精度较低;

3)精细分割:目前很多算法对于道路、建筑物等类别分割精度很高,能达到98%,而对于细小的类别,由于其轮廓太小,而无法精确的定位轮廓;

4)上下文信息:分割中上下文信息很重要,否则会造成一个目标被分成多个部分,或者不同类别目标分类成相同类别;

2. 图像分割基本原理

2.1 整体实现思路

图像分割一般思路如下:

1)输入图像,利用深度卷积神经网络提取特征

2)对特征图进行上采样,输出每个像素的类别

3)利用损失函数,对模型进行优化,将每个像素的分类结果优化到最接近真实值

在这里插入图片描述

2.2 评价指标

1)像素精度(pixel accuracy ):每一类像素正确分类的个数/ 每一类像素的实际个数;

2)平均像素精度(mean pixel accuracy ):每一类像素的精度的平均值;

3)平均交并比(Mean Intersection over Union):求出每一类的IOU取平均值。

3. 常用模型

3.1 FCN(2014)

FCN(全称Fully Convolutional Networks)是图像分割的开山之作,2014年由加州大学伯克利分校Jonathan Long等人提出(论文名称《Fully Convolutional Networks for Semantic Segmentation》,该论文存在多个版本)。在该网络模型中,使用卷积层代替普通CNN中的全连接层,使用不同尺度信息融合,可以生成任意大小的图像分割图,从而实现对图像进行像素级的分类。

3.1.1 什么是FCN

一个典型的卷积神经网络在处理图像分类问题时,通常会使用若干个卷积层,之后接若干个全连接层, 将卷积层产生的特征图(feature map)映射成一个固定长度的特征向量,由输出层在softmax激活函数的作用下,产生N个分类概率,取其中概率最大的类别作为分类结果。如下图所示:
在这里插入图片描述

图像分割需要对图像进行像素级分类,所以在输出层使用全连接模型并不合适。FCN与CNN的区别在把于CNN最后的全连接层换成卷积层(所以称为“全卷积网络”)。该网络可以分为两部分,第一部分,通过卷积运算提取图像中的特征,形成特征图;第二部分,对特征图进行上采样,将特征图数据恢复为原来的大小,并对每个像素产生一个分类标签,完成像素级分类。结构如下图所示:

在这里插入图片描述

上采样示意图:

在这里插入图片描述

3.1.2 网络结构

下图是一个FCN的结构。

在这里插入图片描述

  • 输入:H*W的图像。由于没有全连接层,网络可以接收任意维度的输入(而不是固定大小图像);

  • 第1~5卷积层:执行卷积、池化操作。第一层pooling后变为原图大小的1/4,第二层变为原图大小的1/8,第五层变为原图大小的1/16,第八层变为原图大小的1/32(勘误:其实真正代码当中第一层是1/2,以此类推)。经过多次卷积和pooling以后,得到的图像越来越小,分辨率越来越低。其中图像到 H 32 ∗ W 32 \frac{H}{32} * \frac{W}{32} 32H32W 的时候图片是最小的一层时,所产生图叫做heatmap热图,热图就是我们最重要的高维特征图,得到高维特征的heatmap之后就是最重要的一步也是最后的一步对原图像进行upsampling,把图像进行放大、放大、放大,到原图像的大小;

  • 输出:由于将全连接模型换成了卷积层,原本CNN中输出的1000*1*1维的特征变成了1000*W*H维,1000张热点图(heatmap)。在上述结构的基础上,将1000维变成21维(20种PASCAL类别+背景),再接一个反卷积层,以双线性上采样粗输出到像素密集输出,得到21张大小和原图一致的Mask,然后和真实标签逐像素比较分类结果,进行梯度下降优化。如下图右侧有狗狗和猫猫的图:

在这里插入图片描述

3.1.3 特征融合

FCN采用了特征融合,将粗的、高层信息与精细的、低层信息融合用来提高预测精度。融合实现方式是,对特征图进行上采样,然后将特征图对应元素相加。经过多次卷积、池化后,特征图越来越小,分辨率越来越低,为了得到和原图大小的特征图,所以需要进行上采样。作者不仅对pool5之后的特征图进行了上采样还原,也对pool4和pool3之后的特征图进行了还原,结果表明,从这些特征图能很好的获得关于图片的语义信息,而且随着特征图越来越大,效果越来越好。

在这里插入图片描述

以下是不同大小特征图进行上采样,预测结果对比:

在这里插入图片描述

3.1.4 评价指标

作者在论文中提出了4种评价指标,即像素准确度、平均准确率、平均交并比、频率加权交并比。设 n i j n_{ij} nij为类别i预测为类别j的像素数量,有 n c l n_{cl} ncl个不同的类别,类别i总共有 t i = Σ j n i j t_i = \Sigma_j n_{ij} ti=Σjnij个像素,各指标具体表述如下:

  • 像素准确率(Pixel Accuracy)

P A = Σ i n i i Σ i t i PA = \frac{\Sigma_i n_{ii}}{\Sigma_i t_i} PA=ΣitiΣinii

  • 平均准确率(Mean Pixel Accuracy)

M P A = 1 n c l Σ i n i i t i MPA = \frac{1}{n_{cl}} \Sigma_i \frac{ n_{ii}}{t_i} MPA=ncl1Σitinii

  • 平均交并比(Mean Intersection over Union)

M I U = 1 n c l Σ i n i i t i + Σ j n j i − n i i MIU = \frac{1}{n_{cl}} \Sigma_i \frac{n_{ii}}{t_i + \Sigma_j n_{ji} - n_{ii}} MIU=ncl1Σiti+Σjnjiniinii

  • 频率加权交并比(Frequency Weighted IU )

F W I U = 1 Σ k t k Σ i t i n i i t i + Σ j n j i − n i i FWIU = \frac{1}{\Sigma_k t_k} \Sigma_i \frac{t_i n_{ii}}{t_i + \Sigma_j n_{ji} - n_{ii}} FWIU=Σktk1Σiti+Σjnjiniitinii

3.1.5 结论
  • NYUDv2数据集。该数据集包含1449个RGB-D图像。论文给出的实验结果如下(其中,FCN-32s表示未修改的粗糙模型,FCN-16s为16 stride的模型,RGB-HHA是采用了RGB和HHA融合的模型):

在这里插入图片描述

  • SIFT Flow。该数据集包含2688幅图像,包含“桥”、“山”、“太阳”等33个语义类别以及“水平”、“垂直”和“天空”三个几何类别。论文给出的实验结果如下:

在这里插入图片描述

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

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

相关文章

微软“叛变”了!本月或将推出5000亿新AI模型MAI-1,对抗谷歌和OpenAI | 最新快讯

(图片来源:钛媒体 App 编辑拍摄) 钛媒体 App 5 月 6 日消息,据 The information 报道,美国科技巨头微软公司(Microsoft)将推出一款参数达 5000 亿的全新 AI 模型产品,内部称为 MAI-1…

【LAMMPS学习】八、基础知识(5.9)LAMMPS 近场动力学

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。 …

『 Linux 』基础IO/文件IO (万字)

文章目录 🦄 什么是IO🦄 文件IO(库级别)👾 文件的打开与关闭👾 当前路径👾 文件的读写 🦄 标准输入输出流🦄 文件IO(系统级别)👾 文件的打开👾 文件的关闭👾 …

加州大学欧文分校英语中级语法专项课程03:Tricky English Grammar 学习笔记

Tricky English Grammar Course Certificate Course Intro 本文是学习 https://www.coursera.org/learn/tricky-english-grammar?specializationintermediate-grammar 这门课的学习笔记 文章目录 Tricky English GrammarWeek 01: Nouns, Articles, and QuantifiersLearning …

latex参考文献引用网址,不显示网址问题

以引用UCI数据集为例 1、加入宏包 \usepackage{url} 2、在参考文献bib文件中加入网址文献 misc{UCI, author {{D. Dua, E. Karra Taniskidou}}, year {2024}, title {UCI Machine Learning Repository}, howpublished {\url{http://archive.ics.uci.edu/ml}} } 完成&#x…

C++细节,可能存在的隐患,面试题03

文章目录 11. C编译过程12. const vs #define12.1. 全局const vs 局部const 13. C内存分区14. C变量作用域14.1. 常量 vs 全局变量 vs 静态变量 15. C类型转换16. 函数指针17. 悬空指针 vs 野指针18. 为什么使用空指针,建议使用nullptr而不是NULL? 11. C…

CLion 写 Rust 报Project directory `/Users/.../rsheets` does not exist.

每次打开CLion都会看到像下面这样的报错,Project directory /Users/.../rsheets does not exist.,虽然不会影响你写代码,但每次看到还是不舒服,所以研究一下怎么解决。 原因是这样的,每当我们创建一个 Cargo 项目&…

CRC校验原理及步骤

文章目录 CRC定义:CRC校验原理:CRC校验步骤: CRC定义: CRC即循环冗余校验码,是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC&#…

VMware与CentOS的安装

VMware与CentOS的安装 第一章 VMware安装第二章 CentOS上网虚拟机网络IP修改地址配置修改主机名和hosts文件修改主机名称配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts 安装Xshell7和Xftp7 第一章 VMware安装 VMware Workstation Pro 安装包 …

Go语言fmt包深度探索:格式化输入输出的利器

🔥 个人主页:空白诗 文章目录 🎭 引言一、基础输出函数fmt.Print与fmt.Println📌 fmt.Print:纯粹输出,不带换行📌 fmt.Println:输出后自动添加换行符 二、格式化输出fmt.Printf&…

Python实验代码定时调起

Python代码实验调参需要等待1小时运行完成,自动将提前设置的5组参数(每组参数有8个)间隔1小时之后让Python代码再次自动依次调起运行其中的一组参数,每次跑完将实验结果写一个文件在本地存储通过邮件发送运行结果到指定QQ邮箱 im…

《QT实用小工具·五十三》会跑走的按钮

1、概述 源码放在文章末尾 该项目实现了会逃跑的按钮: 两个按钮,一个为普通按钮,另一个为会跑走的按钮 鼠标移到上面时,立刻跑掉 针对鼠标、键盘、触屏进行优化 随机交换两个按钮的文字、偶尔钻到另一个按钮下面、鼠标移开自…

cmake进阶:目录属性说明一

一. 简介 接下来简单学习一下 cmake 中的属性相关的概念。 属性大概可以分为多种:全局属性、目录属性(源码属性)、目标属性以及其它一些分类。 二. cmake进阶:目录属性 cmake中的属性可以 在如下网址查询到: http…

Jsoncpp介绍

1.简介 Jsoncpp 是一个 C 库,用于解析和生成 JSON 数据。它提供了一个易于使用的 DOM(Document Object Model)风格的 API,允许开发者以树形结构的方式操作 JSON 数据。 Jsoncpp 是一个C库,允许操作JSON值,…

PG WAL日志理解

类似于oracle的redo log,用于数据库恢复,当一条SQL语句执行,PG会把对应的块放到缓冲区执行,,会写进WAL缓冲区会进行写操作,commit后,WAL writer进程进行写操作,把日志缓冲区WAL buff…

【linux】初步认识文件系统

初步认识文件系统 前置知识的简单了解简单回顾C语言的文件操作stdin&stdout&stderr 系统文件IOopen函数的返回值文件描述符fd打开文件背后的操作文件描述符的分配规则 前置知识的简单了解 文件包括了文件内容和文件属性两个部分(文件内容顾名思义就是文件里面的数据等…

【Hugging Face】编写 shell 脚本在 huggingface 镜像站快速下载模型文件

前言 我们使用 Git LFS 和 wget 结合的方法,小文件使用 Git 下载,大文件使用 wget 下载 Git 下载的优缺点: 优点:相当简单 缺点:不支持断点续传 直接 wegt 下载比较稳定,但是欠缺优雅 我们可以将这两…

城市二手房数据分析与房价预测

实现功能 数据分析 二手房价格-时间分析 二手房数量-时间分析 二手房分布-区域分析 二手房户型分析 二手房朝向分析 二手房价格-区域分析 二手房热词词云 房价预测 采用合适的算法模型,对模型进行评估。通过输入影响因素输出预测价格。 采用技术与框架 M…

暗区突围服务器连接失败/网络异常/无法连接下载解决方法

暗区突围是一款仿真战场的模拟,首要介绍的自然是游戏中基本都会参与的模式,叫做战术行动,大家参与其中是会作为特遣队员的身份来做任务,面临的是一个全面自给自足的战场环境,这种模式要求玩家在进入暗区之前自行筹备所…

Springboot+Vue项目-基于Java+MySQL的影院订票系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…