OpenMMLab-AI实战营第二期——5-1.语义分割与MMSegmentation

news2025/2/8 15:12:45

文章目录

  • 1. 基本概念
    • 1.1 案例演示
    • 1.2 应用
    • 1.3 语义分割概念
  • 2. 语义分割算法
    • 2.1 语义分割基本思路
      • 2.1.1 按颜色
      • 2.1.2 逐像素分类
    • 2.2 深度学习下的语义分割模型
      • 2.2.1 全卷积网络
      • 2.2.2 Unet
      • 2.2.3 上下文信息与PSPNet模型
      • 2.2.4 空洞卷积与DeepLab算法
      • 2.2.5 总结
      • 2.2.6 前言语义分割算法
    • 2.3分割模型的评估方法
  • 3. MMSegmentation
    • 2.1 支持的数据集

  • 视频链接:语义分割与MMSegmentation
  • 好的教程:超详细!手把手带你轻松用 MMSegmentation 跑语义分割数据集
  • 以及:超详细!带你轻松掌握 MMSegmentation 整体构建流程
  • 案例代码:https://github.com/TommyZihao/MMSegmentation_Tutorials

1. 基本概念

1.1 案例演示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.2 应用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3 语义分割概念

在这里插入图片描述
在这里插入图片描述

2. 语义分割算法

2.1 语义分割基本思路

2.1.1 按颜色

在这里插入图片描述

最简单的思路:按照颜色聚类,基于同一物体颜色具有连续性这个先验知识

  • 大部分情况下,都可以分割(实现抠图)
  • 但是没有语义,就无法对同类物体做合并或者归为一类
    • 比如上图有个电线杆,马路就被分成了两部分。
    • 同时需要额外手段确定物体类别
  • 另外所基于的先验知识不完全准确,不同物体颜色可能接近,物体内也会包含多种颜色

2.1.2 逐像素分类

在这里插入图片描述
最早的CNN是用于分类问题的,分割任务可以作为逐像素分类的任务对待,基于滑窗逐点分类。

  • 优势:充分利用现有的图像分类模型
  • 问题:效率低下,重叠区域重复计算卷积。。。
    • 这个问题不是密集检测解决了吗。。。😂

在这里插入图片描述
复用卷积计算:对于同样的卷积核,在滑窗上计算卷积,和直接在原图上计算卷积,计算结果是相同的。

这部分就是目标检测里rcnn→fast rcnn→faster rcnn的思路

在这里插入图片描述
虽然复用卷积解决重复卷积计算的问题,但是还有个输入尺寸固定的问题

  • 传统的卷积神经网络里有全连接层,这就需要输入的特征图尺寸是固定的,进一步需要让输入的尺寸是固定的(输入网络的尺寸是固定的,原图如果size不合适需要进行resize等操作使之符合输入网络的尺寸)
  • 但是我们希望分割的图像是任意大小的尺寸,这就导致特征图大小也不固定,就无法使用全连接层进行分类

在这里插入图片描述

可以使用全连接层的卷积化来解决输入尺寸不固定的问题

2.2 深度学习下的语义分割模型

2.2.1 全卷积网络

在这里插入图片描述
这里的问题在于:卷积神经网络逐层降采样,导致特征图的空间分辨率比原图要小很多,无法和原图对齐。

所以需要有一些上采样的办法
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
可以用一个卷积核模拟双线性插值的效果,此时就是一个固定的卷积核,实现了上采样的效果。

在这里插入图片描述
如果不模拟双线性插值,而是直接给出一个需要去学习的卷积核,让它完成上采样的任务,这就是转置卷积

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
结合高层和低层特征图,mmdetection里FPN特征金字塔(2016年),以及mmpose里HRNet(2019年)。套路一直是一样的。。。

在这里插入图片描述

2.2.2 Unet

在这里插入图片描述

2.2.3 上下文信息与PSPNet模型

上面Unet和FCN都是用了上下层的信息(高层语义和低层细节互补,高层+低层特征)。
另外还有使用上下文信息的

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

利用上下文信息来改善分割效果,也是分割网络进化的一个思路。

  • 可能扩大感受野,使得在局部预测中包含上下文信息

在这里插入图片描述

多尺度池化,就对应不同尺度的感受野

2.2.4 空洞卷积与DeepLab算法

在这里插入图片描述
多尺度的空洞卷积ASPP模块就是多尺度池化+空洞卷积

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2.5 总结

在这里插入图片描述

2.2.6 前言语义分割算法

在这里插入图片描述
Transformer系列

在这里插入图片描述
统一语义分割、实例分割和全景分割任务,大一统模型
在这里插入图片描述

在这里插入图片描述

以上几种比较前沿的新算法,MMSegmentation里都有实现
在这里插入图片描述
LabelStudio和LabelMe都集成了SAM,可以试试标注效果

参考:

  • cvat VS label-studio
  • Data Labeling Software: Best Tools for Data Labeling

2.3分割模型的评估方法

在这里插入图片描述

在这里插入图片描述

3. MMSegmentation

  • Github链接:https://github.com/open-mmlab/mmsegmentation/blob/main/README_zh-CN.md
  • 文档:https://mmsegmentation.readthedocs.io/zh_CN/latest/index.html

2.1 支持的数据集

参考:超详细!手把手带你轻松用 MMSegmentation 跑语义分割数据集
在这里插入图片描述
下载和将它重新组织成 MMSegmentaion 可以运行的格式的脚本,可以看看

  • mmsegmentation/docs/en/user_guides/2_dataset_prepare.md,
  • 或者中文文档:mmsegmentation/docs/zh_cn/dataset_prepare.md

已支持的数据集

  • Cityscapes:自动驾驶数据集,详见:图像分割cityscape数据集使用介绍,值得一读!
  • PASCAL VOC:常规自然场景的语义分割
  • ADE20K:有2万张图片150种目标的场景数据集,详见:ADE20K数据集
  • Pascal Context: 是PASCAL VOC 2010 检测挑战的扩展,详见:语义分割的数据集
  • COCO-Stuff 10k、COCO-Stuff 164k
  • CHASE_DB1:视网膜血管分割数据集,详见:Chasedb1–视网膜血管分割数据集
  • DRIVE:用于视网膜病变研究的数据集,详见:视网膜血管图像数据集DRIVE简介
  • HRF:视网膜血管分割数据集,详见:HRF 视网膜血管分割数据集
  • STARE:视网膜数据集
  • Dark Zurich:自动驾驶数据集(有GPS数据),详见:Dark Zurich 语义分割数据集
    在这里插入图片描述
  • Nighttime Driving:道路场景数据集,由 35,000 张图像组成。详见:Nighttime Driving
  • LoveDA:遥感语义分割(农村和城市的土地覆盖),详见:Junjue-Wang/LoveDA

快搜完了发现已经有文章整理过了。。。🥲🥲🥲

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

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

相关文章

我们该如何应对工作失误(How to Handle Failure at Work)

花时间反思 组织架构心理学家、Audrey Page & Associates执行服务总监,Penelope Faure博士表示:“人们在犯错后情绪往往会十分激动。”不论是因为老板在电子邮件中流露出对你的指责,还是因为你明显的疏忽导致客户利益受损,又…

Android 13(T) Media框架 - 智能指针

Android有一套自己的智能指针管理办法,并且将其运用在源码的各个角落,所以学习Media框架之前,我们有必要先了解下Android智能指针。 本节代码源自于Android 13(T),参考 (aospxref.com) 1 概述 与智能指针相关的总共有5个类&#…

前端加载超大图片(100M以上)实现秒开解决方案

前端加载超大图片(100M以上)实现秒开解决方案 前言 前端加载超大图片时,一般可以采取以下措施实现加速: 图片压缩:将图片进行压缩可以大幅减小图片的大小,从而缩短加载时间。压缩图片时需要注意保持图片质量,以免影响…

CSS基础学习--9 边框(Border)

一、CSS 边框属性 CSS边框属性允许你指定一个元素边框的样式和颜色。 二、边框的样式 边框样式属性指定要显示什么样的边界。 border-style属性用来定义边框的样式 border-style 值: <!DOCTYPE html> <html> <head> <meta charset"utf-8">…

【爬虫】4.5 实践项目——爬取当当网站图书数据

目录 1. 网站图书数据分析 2. 网站图书数据提取 3. 网站图书数据爬取 &#xff08;1&#xff09;创建 MySQL 数据库 &#xff08;2&#xff09;创建 scrapy 项目 &#xff08;3&#xff09;编写 items.py 中的数据项目类 &#xff08;4&#xff09;编写 pipelines_1.py …

一文走进 SQL 编译-语义解析

一、概述 SQL 引擎主要由三大部分构成&#xff1a;解析器、优化器和执行器。解析器的主要作用是将客户端传来的命令解析编译成数据库能识别运行的命令&#xff0c;其主要由词法解析、语法解析和语义解析三部分构成&#xff0c;如下图所示。 本文将重点介绍 KaiwuDB 语义解析部…

机器学习-11 BP神经网络

BP神经网络 神经网络介绍前馈神经网络BP神经网络BP神经网络的核心思想误差反向传播算法BP网络结构 反馈神经网络自组织神经网络 神经网络相关概念激活函数Sigmoid函数tanh双曲正切函数ReLU函数Leaky RuLU函数Maxout函数激活函数的选择 损失函数Softmax交叉熵均方差损失函数自定…

chatgpt赋能python:Python文件处理入门指南-如何将Python程序转化为文件

Python文件处理入门指南 - 如何将Python程序转化为文件 Python是一门广泛应用于机器学习、数据分析、网络编程等领域的高级编程语言。Python代码简洁易懂&#xff0c;具有良好的可移植性和跨平台性&#xff0c;因此备受程序员们的喜欢。然而&#xff0c;要想让代码得到更广泛的…

kotlin协程flow retry功能函数返回失败后重试(4)

kotlin协程flow retry功能函数返回失败后重试&#xff08;4&#xff09; import kotlinx.coroutines.delay import kotlinx.coroutines.flow.* import kotlinx.coroutines.runBlockingfun main(args: Array<String>) {var count 0 //重试计数runBlocking {load().onEach…

chatgpt赋能python:Python怎么往表格里写数据

Python怎么往表格里写数据 在Python中&#xff0c;我们经常需要往表格里写入数据。表格是一种最基本的数据储存结构&#xff0c;而Python在处理表格数据方面非常出色。在这篇文章中&#xff0c;我们将介绍Python中常用的几种写入表格的方法。 方法一&#xff1a;使用CSV模块 …

MySQL-索引详解(二)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️树高千尺&#xff0c;落叶归根人生不易&…

哨兵架构redisCluster-Redis(五)

上篇文章介绍了主从架构以及lua脚本。 主从架构&lua脚本-Redis&#xff08;四&#xff09;https://blog.csdn.net/ke1ying/article/details/131159229 Sentinel集群 主从的搭建我们已经完成&#xff0c;但如果主节点宕机&#xff0c;这时候导致整个redis服务不可用怎么办…

Cesium入门之十:Cesium加载3DTiles数据

目录 3DTiles介绍3DTiles数据结构Cesium中与3DTiles相关的类1.Cesium3DTileset类常用属性&#xff1a;常用方法&#xff1a; 2.Cesium3DTileStyle类常用属性&#xff1a; 3.Cesium3DTileContent类常用属性常用方法 4. Cesium3DTileFeature类常用属性常用方法 5.Cesium3DTile类常…

chatgpt赋能python:Python怎么循环

Python怎么循环 循环是编程中最重要的控制结构之一&#xff0c;它允许我们重复执行一组语句&#xff0c;直到满足某个条件为止。在Python中&#xff0c;我们有多种循环结构可供使用&#xff0c;本文将介绍它们及其用法。 for循环 for循环通常用于迭代&#xff08;遍历&#…

chatgpt赋能python:在Python中用何种方式来建立SEO友好网站?

在Python中用何种方式来建立SEO友好网站&#xff1f; 在当今数字时代&#xff0c;一个强大且易于维护的网站是任何企业或组织成功的关键。但是&#xff0c;一个网站的外观和功能不代表它的成功。如果语义不清、标记不恰当或结构不正确&#xff0c;网络爬虫可能会忽略您的网站&…

51单片机“密码锁”代码详解

注&#xff1a;此代码一经过验证&#xff0c;读者不必怀疑其正确性&#xff0c;如果烧录进去没有反应&#xff0c;请自行检查引脚端口配置&#xff0c;以及仔细分析代码实现原理。倘若能静下心来分析代码&#xff0c;一定能受益匪浅。 废话不多说&#xff0c;&#xff0c;直接…

深入理解 SpringBoot 日志框架:从入门到高级应用——(一)日志框架原理

文章目录 了解日志框架常见日志框架面向 SLF4J 编程SLF4J 接口规范其他框架统一转换为 SLF4J 框架 了解日志框架 日志框架的历史可以追溯到计算机编程的早期。在早期的编程语言中&#xff0c;如 C 和 Pascal&#xff0c;程序员通常使用 printf 或 fprintf 函数将程序的状态信息…

总结898

今天在B站上看英文短视频&#xff0c;认识了一位著名的心理学家乔丹彼得森&#xff08;号称“龙虾教授”&#xff09;。他的思想对我 产生了一定的影响。 曾在《写作:自我精进的武器》中看到过写作的5大好处&#xff0c;但他没有乔丹彼得森所讲的那么令我震撼&#xff0c;他对写…

Django框架-1

框架介绍 框架是整个或部分系统的可重用设计&#xff0c;表现为一组抽象构件及构件实例间交互的方法&#xff1b; 框架是可被应用开发者定制的应用骨架&#xff0c;是某种半成品&#xff1b; 使用框架开发的好处 开发周期短维护成本低软件生产效率和质量得到提高 Django框…

面向对象、封装、就近原则及this关键字

面向:拿、找&#xff1b; 对象:能干活的东西&#xff1b; 面向对象编程:拿东西过来做对应的事&#xff1b; 即&#xff0c;分别找对应的“对象”完成对应的“事件”。因此学习内容包括&#xff1a; ①学习各种已存在的对象并使用&#xff1b; ②学习设计对象并使用。 面向对象…