机器学习周记(第三十五周:语义分割)2024.4.15~2024.4.21

目录

摘要

ABSTRACT

1 语义分割基本概念

1.1 数据集格式

​编辑

1.2 语义分割评价指标

1.3 语义分割标注工具

2 转置卷积

3 FCN网络结构基本原理


摘要

  本周主要学习了语义分割的基本概念及其在计算机视觉领域中的应用。了解了语义分割的几种经典网络,如全卷积网络(FCN)、DeepLabV3和LR-ASPP等。深入理解了这些网络的结构和工作原理,特别是FCN网络,它通过替换传统CNN的全连接层为卷积层,实现对图像的像素级分类。此外,还知道了语义分割的常用数据集格式、评价指标以及标注工具,如Labelme和EISeg,并详细讨论了转置卷积的机制和其在神经网络中上采样的应用。最后,学习了FCN网络的结构和原理,理解了其在处理任意尺寸输入图像和保留空间信息方面的优势。

ABSTRACT

  This week, we primarily studied the basic concepts of semantic segmentation and its applications in the field of computer vision. We explored several classical networks used in semantic segmentation, such as the Fully Convolutional Network (FCN), DeepLabV3, and LR-ASPP. We gained a deep understanding of the structure and working principles of these networks, particularly the FCN, which accomplishes pixel-level classification of images by replacing the fully connected layers of traditional CNNs with convolutional layers. Additionally, we learned about common data set formats, evaluation metrics, and annotation tools used in semantic segmentation, such as Labelme and EISeg. We also discussed in detail the mechanism of transposed convolution and its application in upsampling within neural networks. Lastly, we studied the structure and principles of the FCN network, understanding its advantages in handling input images of arbitrary size and preserving spatial information.

1 语义分割基本概念

  语义分割计算机视觉领域中的一种重要技术,它的目标是将图像分割成多个区域,每个区域表示特定的语义类别。这些类别可以是人、车辆、建筑物等,也可以是更具体的对象,如道路、天空、植被等。语义分割任务是将属于同一类别的像素组合在一起,并为每个像素指定一个类别标签。

  语义分割经典网络有全卷积网络(FCN)DeepLabV3以及LR-ASPP等。全卷积网络(FCN)是语义分割中的一种流行架构,它通过替换CNN中的全连接层为卷积层,使得网络能够输出与输入图像同样大小的特征图,实现像素到像素的分类。DeepLabV3是一个先进的深度学习架构,专门用于图像语义分割任务,由谷歌的研究团队开发。这个模型是DeepLab系列的第三个版本,继承并改进了之前版本的一些核心概念,特别是在处理图像中的多尺度信息边界细节上具有显著的优势。LR-ASPP通常用在轻量级的卷积神经网络中,如MobileNetEfficientNet,这些网络本身就是为了减少计算资源的消耗而设计的。在语义分割任务中,输入图像首先通过这种轻量级的基础网络进行特征提取。之后,特征图经过LR-ASPP模块进行进一步处理,模块中包括不同空洞率的空洞卷积和全局平均池化层,以捕获多尺度和全局信息。

1.1 数据集格式

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

  单通道的图像数据加上调色板之后的结果就可以表示出不同颜色的像素所代表的类别。

1.2 语义分割评价指标

  语义分割常用的评价指标有 Pixel Accuracy(Global Acc)mean Accuracymean IoU。

  假设已知真实标签和预测标签(忽略边缘):

  首先对于真实标签中类别0的部分,将其设置为白色,其余类别设置为灰色。对于预测标签中类别为0的部分,预测正确的设置为绿色,预测错误的设置为红色。最终计算得,当预测标签为0的像素中,真实标签也为0的像素个数为16,真实标签为3的像素个数为2,然后将结果填入表中:

  同理,对预测标签中类别1的像素计算可以得到:

  最终得到的表如下:

  最终得到的各项评价指标如下:

 

1.3 语义分割标注工具

1.Labelme:

下载地址:labelmeai/labelme: Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation). (github.com)

使用参考:

Labelme分割标注软件使用_labelme2voc.py-CSDN博客

2.EISeg:

下载地址:

GitHub - PaddlePaddle/PaddleSeg: Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.

使用参考:

EISeg分割标注软件使用_eiseg使用-CSDN博客

2 转置卷积

  转置卷积(Transposed Convolution),是一种常用于神经网络中的操作,通常用于上采样过程,即从较小的特征图恢复到较大的特征图尺寸。虽然称为“转置卷积”,但实际上它并不是卷积的真正逆操作,而是一种通过卷积核进行上采样的方法。

  转置卷积的运算步骤如下(注意:填充运算的 s 和 p,与卷积运算的 s 和 p 不是一样的):

  卷积核上下左右翻转过程与卷积运算过程如下(注意:卷积运算不需要再次填充,故一般 p 设为0,s 设为1):

  普通卷积过程中,滑动卷积核操作使用 kernel 等效矩阵替代。

  将上图输入 feature map 按行展开,可以得到一个 1 x 16 的矩阵。

  将 kernel 等效矩阵也按行展开,可以得到一个 16 x 4 的矩阵。

  最终普通卷积计算过程可以用如下矩阵乘法表示:

  而转置卷积则是乘上 c 的转置矩阵(注意:此处不是逆运算,不是乘上 c 的逆矩阵):

  将矩阵反推,就能得到对应的 feature map 和 kernel。

  转置卷积反推得到的 feature map 按 s=2,p=0,k=3 进行填充,然后再用之前一个 3 x 3 的 kernel 对其按照 s=1,p=0,k=3 进行卷积,得到的结果和转置卷积的结果一致。

  观察可以发现,上图中绿色的这个 kernel 其实就是之前普通卷积中的 kernel 进行上下左右翻转之后的结果。

3 FCN网络结构基本原理

  在传统的CNN网络中,在最后的卷积层之后会连接上若干个全连接层,将卷积层产生的特征图(feature map)映射成为一个固定长度的特征向量。一般的CNN结构适用于图像级别的分类和回归任务,因为它们最后都期望得到输入图像的分类的概率,如ALexNet网络最后输出一个1000维的向量表示输入图像属于每一类的概率。如下图所示:

  FCN是对图像进行像素级的分类(也就是每个像素点都进行分类),从而解决了语义级别的图像分割问题。与上面介绍的经典CNN在卷积层使用全连接层得到固定长度的特征向量进行分类不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的特征图(feature map)进行上采样,使它恢复到输入图像相同的尺寸,从而可以对每一个像素都产生一个预测,同时保留了原始输入图像中的空间信息,最后在上采样的特征图进行像素的分类。简单的说,FCNCNN的区别在于FCNCNN最后的全连接层换成卷积层,其输出的是一张已经标记好的图(heat map,不同的颜色代表不同的分类),而不是一个概率值。如下图所示:

  对于任一个卷积层,都存在一个能实现和它一样的前向传播函数的全连接层,任何全连接层都可以被转化为卷积层。例如VGG16中,经过一次卷积、四次池化操作后,特征图的尺寸转换为了 7x7x512,然后通过4096个节点和1000个节点的全连接层将特征转化为输出。

  输入FC1的特征是将7x7x512的特征展平为长度为25088的向量,FC1中的每一个节点包含25088个权重参数,通过将权重参数和向量进行加权求和,得到每一个节点的特征。因此FC1的参数个数就是25088x4096=102760448个。

  将FC1转化成卷积层的方法如下。通过一个大小与特征大小相同的卷积核(shape:7x7x512),卷积核的个数与全连接层的节点个数一致,同时 P=0,S=1。由此得到的结果也是可以看作长度为25088的向量,而一个卷积核的参数和一个节点的参数是一样的,因此卷积层的参数与全连接层的参数个数也是一致的。

  同理,FC2也可以转化为一个卷积层,这样VGG16的所有全连接层就都转化为了卷积层。以上就是FCN网络的基本原理。

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

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

相关文章

linux系统密码重置的方法

在linux系统中忘记密码,重置(重启:shutdown -r now) 1、在启动 Linux 时,按键盘上的上下左右键来止 Linux 的正常启动。 2、按下e鍵进入安全模式 3、找到首行是linux16,末尾是UTF-8的段落,在后门…

Python中的设计模式与最佳实践

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python中的设计模式与最佳实践 在软件开发中,设计模式是一种解决常见问题的经过…

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

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

2024-4-狼道

2024-4-狼道 2024-4-9 宋犀堃(堃通坤,多用于人名) fatux: 做人当如狗,和蔼可亲;做事当如狼,专注果决。 狼道 智慧生存的强者法则 走向卓越的成功之道 狼道,是追求卓越的野心&am…

C++_特殊类的设计和单例模式

文章目录 学习目标:1.请设计一个类,不能被拷贝2. 请设计一个类,只能在堆上创建对象3. 请设计一个类,只能在栈上创建对象4. 请设计一个类,不能被继承5. 请设计一个类,只能创建一个对象(单例模式) 特殊类的设…

如何在原生项目中集成flutter

两个前提条件: 从flutter v1.17版本开始,flutter module仅支持AndroidX的应用在release模式下flutter仅支持一下架构:x84_64、armeabi-v7a、arm6f4-v8a,不支持mips和x86;所以引入flutter前需要在app/build.gradle下配置flutter支持的架构 a…

《设计模式之美》- 总结

《设计模式之美》- 总结 第一章 概述 1.1 为什么学习代码设计 编写高质量的代码应对复杂代码的开发程序员的基本功职业发展的必备技能 1.2 如何评价代码的质量 1.2.1 可维护性 可维护性代码的特性:代码简洁、可读性好、可扩展性好代码分层结构清晰、模块化程度…

maven问题汇总

​ 1、报错 failed to transfer from http://0.0.0.0/ during a previous attempt. com.byd.xxx:xxx-parent:pom:1.1.0-SNAPSHOT failed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repository and resolution is no…

【Pytorch】PytorchCPU版或GPU报错异常处理(10X~4090D)

Pytorch为CPU版或GPU使用报错异常处理 文章目录 Pytorch为CPU版或GPU使用报错异常处理0.检查阶段1. 在conda虚拟环境中安装了torch2.卸载cpuonly3.从tsinghua清华源安装不完善误为cpu版本4.用tsinghua清华源安装成cpu错误版本5.conda中torch/vision/cudatoolkit版本与本机cuda版…

LeetCode - 283.移动零

题目链接&#xff1a; LeetCode - 283.移动零 题目分析&#xff1a; ​​​​​ 题解代码&#xff1a; #include<iostream> #include<vector> using namespace std;class Solution { public:void moveZeroes(vector<int>& nums) {for (int cur 0, des…

【GitBlit】Windows搭建Git服务器详细教程

前言 如果公司或个人想在 Windows 环境下搭建私有的 Git 服务器&#xff0c;那么这个开源的 GitBlit 是一个不错的选择。 Gitblit 是一个开源纯 Java 的用于管理、查看和服务 Git 存储库。它是一个小型的托管集中式存储库工具。支持 SSH、HTTP 和 GIT 协议&#xff0c;开箱即…

Java+springboot开发的医院智能导诊服务系统源码 自动兼容小程序与H5版本

智能导诊系统 一、什么是智慧导诊系统&#xff1f; 智慧导诊系统是一种医院使用的引导患者自助就诊挂号、精准推荐科室、引导患者挂号就诊的系统。该系统结合医院挂号及就诊的HIS系统&#xff0c;为患者带来全流程的信息指引提醒&#xff0c;可以在全院区构建一个精细化、移动…

IP-guard getdatarecord 存在任意文件读取

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、产品介绍 IP-guard是由溢信科技股份有限公司开发的一款终端安全管…

x-cmd ai | x openai - 用于发送 openai API 请求,以及与 ChatGPT 对话

介绍 Openai 模块是 Openai 大模型 Chatgpt 3 和 ChatGPT 4 命令行实现。x-cmd 提供了多个不同平台间多种 AI 大模型的调用能力。无论是本地模型还是 Web 服务上的模型&#xff0c;用户都可以在不同的 AI 大模型间直接无缝切换&#xff0c;并能把之前的聊天记录发送给新的大模…

CSS3 伪元素与伪类选择器区别、详解与应用实例

伪元素与伪类两者都是通过在选择器后附加一个特定的关键字来定义&#xff0c;遵循相似的语法规则&#xff0c;并在 CSS 规则块中设置相应的样式。伪元素 能够通过 content 属性添加或替换内容。例如&#xff0c;:before 和 :after 可以插入文本、图像或其他生成的内容。伪类 仅…

Tomcat核心组件深度解析

Server组件 Service组件 连接器Connector组件 容器Container组件

【研发管理】产品经理知识体系-产品创新管理

导读&#xff1a; 产品创新管理对企业的发展具有深远的影响&#xff0c;它不仅是企业保持竞争优势的关键&#xff0c;也是推动企业持续稳定发展的重要动力。因此&#xff0c;企业应高度重视产品创新管理&#xff0c;并采取有效的策略和方法来推动产品创新活动的开展。对于产品经…

第20天:信息打点-红蓝队自动化项目资产侦察企查产权武器库部署网络空间

第二十天 一、工具项目-红蓝队&自动化部署 自动化-武器库部署-F8x 项目地址&#xff1a;https://github.com/ffffffff0x/f8x 介绍&#xff1a;一款红/蓝队环境自动化部署工具,支持多种场景,渗透,开发,代理环境,服务可选项等.下载&#xff1a;wget -O f8x https://f8x.io…

MINIO安装的方法(WindowsLiunx)

2 minio安装教程 注&#xff1a;官方中文文档&#xff1a;MinIO对象存储 Windows — MinIO中文文档 | MinIO Windows中文文档 Liunx 安装方&#xff1a;MinIO对象存储 Linux — MinIO中文文档 | MinIO Linux中文文档 2.1 下载地址 https://dl.min.io/server/minio/…

论文笔记:UrbanGPT: Spatio-Temporal Large Language Models

1 intro 时空预测的目标是预测并洞察城市环境随时间和空间不断变化的动态。其目的是预见城市生活多个方面的未来模式、趋势和事件&#xff0c;包括交通、人口流动和犯罪率。虽然已有许多努力致力于开发神经网络技术&#xff0c;以准确预测时空数据&#xff0c;但重要的是要注意…