【OpenMMLab AI实战营第二期】语义分割与MMSegmentation

news2025/2/9 10:26:17

MMSegmentation

开源代码仓:https://github.com/open-mmlab/mmsegmentation

算法丰富:600+预训练模型、40+篇算法复现

模块化设计:配置简便、容易拓展

统一超参:大量消融实验、支持公平对比

使用方便:训练工具、调试工具、推理API

在这里插入图片描述

语义分割

基本思路

按颜色分割

物体内部颜色相近,物体交接颜色变化

基于图像处理方法,按照颜色分割

逐像素分割

优势:可以充分利用已有的图像分类模型

问题:效率低下,重叠区域重复计算卷积

预测图的升采样

问题:

图像分类模型使用降采样层(步长卷积或池化)获得高层次特征,导致全卷及网络输出尺寸小于原图,而分割要求同尺寸输出

解决方法:

对预测的分割图升采样,恢复原图分辨率,升采样方案:

  1. 双线性插值

  2. 转置卷积:可学习的升采样层

基于多层特征的上采样

问题:基于顶层特征预测,再升采样32倍得到的预测图较为粗糙

分析:高层特征经过多次降采样,细节丢失严重

解决思路:结合低层次和高层次特征图

解决方案FCN:

基于低层次和高层次特征图分别产生类别预测,升采样到原图大小,再平均得到最终结果

上下文信息

原图-主干网络-特征图-预测图

PSPNET

原图-特征图-多尺度池化-特征拼接-类别预测

对特征图进行不同尺度的赤化,得到不同尺度的上下文特征

上下文特征经过通道压缩和空间上采样之后拼接回原特征图->同时包含局部和上下文特征

基于融合的特征产生预测图

DeepLab系列

DeepLab是语义分割的又一系列工作

主要贡献:

  • 使用空洞卷积解决网络中的下采样问题

  • 使用条件随机场CRF作为后处理手段,精细化分割图

  • 使用多尺度的空洞卷积(ASPP模块)捕捉上下文信息

DeepLab V1 发表于2014年,2016、2017、2018提出了V2、V3、V3+版本

空洞卷积解决下采样问题

图像分类模型的下采样层使输出尺寸变小

如果将池化层和卷积层中的步上去掉:

  • 可以减少下采样的次数

  • 特征图就会变大,需要对应增大卷积核,以维持相同的感受野,但会增加大量的参数

  • 使用空洞卷积(Dilated Convolution/Atrous Convolution),在不增加参数的情况下增大感受野

标准卷积:

特征图-下采样-卷积运算-卷积核-结果

空洞卷积:

特征图不变膨胀卷积核再进行卷积运算-膨胀卷积核不产生额外参数-相同计算结果下采样加标准卷积等价于空洞卷积

空洞卷积和下采样

使用升采样方案得到的特征图只有原图的1/4位置的响应,需要配合插值

使用空洞卷积可以得到相同分辨率的特征图且无需额外插值操作

DeepLab模型

DeepLab在图像分类网络基础上做了修改:

  • 去除分类模型中的后半部分的下采样层

  • 后续的卷积层改为膨胀卷积,并且逐步增加rate来维持源网络的感受野

条件随机场 CRF

模型直接输出的分割图较为粗糙,尤其在物体边界处不能产生很好的分割结果

DeepLab V1&V2使用条件随机场(CRF)作为后处理手段,结合原图颜色和神经网络的预测的类别得到精细化分割结果

CRF是一种概率模型,DeepLab使用CRF对分割结果进行建模,用能量函数用来表示分割结果优劣,通过最小化能量函数获得更好的分割结果

空间金字塔池化

PSPNet使用不同尺度的池化来获取不同尺度的上下文信息

DeepLab V2&V3使用不同尺度的空间卷积达到类似效果

更大膨胀率的空洞卷积-更大感受野-更多的上下文特征

DeepLab V3+

  • DeepLab V2/V3 模型使用ASPP捕捉上下文特征

  • Encoder/Decoder结果(如UNet)在上采样过程中融入低层次特征图,以获得更精细的分割图

  • DeepLab V3+将两种思路融合,在原有模型结构上增加了一个简单的decoder结构

Encoder通过ASPP产生多尺度的高层语义信息

Decoder主要融合低层特征产生惊喜的分割结果

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

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

相关文章

Python处理办公自动化的10大场景

在编程世界里,Python已经是名副其实的网红了。Python最大优势在于容易学,门槛比Java、C低非常多,给非程序员群体提供了用代码干活的可能性。当然Python能成为大众编程工具,不紧是因为易学,还因为Python有成千上万的工具…

2. CompletableFuture

2.1 Future接口理论知识复习 Future接口(FutureTask实现类)定义了操作异步任务执行一些方法,如获取异步任务的执行结果、取消异步任务的执行、判断任务是否被取消、判断任务执行是否完毕等。 举例:比如主线程让一个子线程去执行任…

python中的map函数

1. map()函数的简介以及语法: 1.1 map是python内置函数,会根据提供的函数对指定的序列做映射。 1.2 map()函数的格式是: map(function,iterable,...) 第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列 1.3 map的返…

linux基本功之高效学习Linux命令行工具的技巧:Pandoc实战

前言 大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第65篇文章。 专栏地址:[linux基本功-基础命令专栏] , 此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象&am…

F407之位带操作

位带操作的应用场景,通常在于对IO口进行输入输出读取和控制。 这就和51单片机中直接的端口赋值是一样的。 比如 P0.0 0; P0.0 1; 直接就是对端口P0.0输出0和1。 如何实现呢? 什么是位带操作 位带操作简单的说,就是把每个比特膨胀为一个32位…

全面了解AES加密:入门指南

文章目录 I. 介绍A. 什么是加密B. 为什么要加密1. 保护数据的机密性2. 防止数据被篡改3. 防止数据被窃取4. 保护数据的可信度 C. AES加密的概述 II. 对称加密与非对称加密A. 对称加密的定义和特点1. 简单快速2. 安全性较低3. 适合大量数据加密4. 密钥管理困难5. 用途广泛 B. 非…

黑马版Redis基础篇

一、 初识redis 1.1 认识 NoSQL 关系型数据库: 1.2 认识Redis 二、Redis 常见命令 2.1 Redis 数据结构介绍 2.2 Redis 通用命令 2.3 String 类型 2.3.1 Key的层级格式 2.4 Hash 类型 2.5 List 类型 2.6 Set 类型 2.7 SortedSet 类型 三、Redis 的 Java 客户端 1.…

DelayQueue的核心属性和写入、读取流程分析

DelayQueue的核心属性 DelayQueue的写入流程分析 add方法也是包装使用offer方法。Delay是无解的,数组又可以动态扩容,不需要关注生产者的阻塞问题 offer方法分析 DelayQueue读取流程 消费者消费元素存在两种阻塞的情况: 1.消费者得到栈顶的…

华为OD机试真题 JavaScript 实现【预定酒店】【2022Q4 100分】

一、题目描述 放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的 数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店 (n>k>0) ,并由低到高打印酒店的价格。 二、输入描述 第一行: n,…

chatgpt赋能python:Python怎么开三次方?

Python怎么开三次方? Python是一门常用的高级编程语言,被广泛用于数据分析、人工智能、Web开发等领域。在Python中,我们可以使用几种方法轻松地计算三次方根,例如使用sqrt函数、cbrt函数和简单的数学表达式。本文将介绍三种方法&…

聊聊Scrum三大角色的质量意识和文化建设

这是鼎叔的第六十三篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本专栏和微信公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。 参考前文:聊聊Scrum价值观与测试启发 本篇从Scrum的主要角色视角…

开关电源精确到每个元件-分解电源电路

本次讲解电源以一个13.2W电源为例 输入:AC90~264V 输出:3.3V/4A 原理图: 变压器是整个电源供应器的重要核心,所以变压器的计算及验证是很重要的。 1.决定变压器的材质及尺寸: 依据变压器计算公式 2.决定一次侧滤波电容&#…

第五章JMM内存模型

文章目录 计算机硬件存储体系为什么要弄一个 CPU 高速缓存呢?为什么缓存能提高速度呢?缓存带来的问题 Java之JMM模型JMM 是如何抽象线程和主内存之间的关系线程之间如何通信Java 内存区域和 JMM 有何区别 JMM规范下,三大特性原子性可见性有序…

000mysql常用资源推荐

官网 MySQL :: MySQL 8.0 Reference Manualhttps://dev.mysql.com/doc/refman/8.0/en/ 博客 一树一溪 侧重原理https://mp.weixin.qq.com/mp/homepage?__bizMzg3NTc3NjM4Nw&hid2&snb5d65ce17893a722b6748b471412eab0&scene1&devicetypeandroid-33&ver…

Spring-Boot的创建与配置文件

文章目录 前言Spring与SpringBoot的区别SpringBoot的创建与使用 更改国内源配置SpringBoot目录介绍SpringBoot配置文件配置⽂件的格式properties 基本语法yml的基本语法yml的注意事项 properties VS yml 好坏 前言 前面讲述了 ,Spring的概念与使用方法 , 接下来要介绍的是 Spr…

华为OD机试真题 JavaScript 实现【服务中心选址】【2023Q1 100分 】

一、题目描述 一个快递公司希望在一条街道建立新的服务中心。公司统计了该街道中所有区域在地图上的位置,并希望能够以此为依据为新的服务中心选址,使服务中心到所有区域的距离的总和最小。 给你一个数组 positions,其中 positions[i] [le…

B+树:高效存储与索引的完美结合

目录 引言:一、定义:二、B树和B树三、特点:四、应用场景:总结: 引言: 在计算机科学领域中,数据结构的选择对于高效存储和索引数据至关重要。B树(B tree)作为一种自平衡的…

chatgpt赋能python:Python怎么并排输出

Python怎么并排输出 Python是一种高级编程语言,它受到了全球程序员的欢迎。在Python编程中,经常需要将多个变量或数据一起输出。 本文将介绍Python如何并排输出,使输出内容更加整齐美观,提高代码可读性和可维护性。 使用print(…

Chrome浏览器进程:了解多进程架构优劣的探索

文章目录 I. 介绍简述Chrome浏览器的进程模型和重要性 II. 多进程架构的优劣详述Chrome浏览器的多进程架构分析多进程架构对性能、安全性和稳定性的影响对比单进程架构的优缺点和Chrome浏览器多进程架构的差异 III. Chrome浏览器进程类型和作用解释Chrome浏览器中常见的进程类型…

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

文章目录 1. 基本概念1.1 案例演示1.2 应用1.3 语义分割概念 2. 语义分割算法2.1 语义分割基本思路2.1.1 按颜色2.1.2 逐像素分类 2.2 深度学习下的语义分割模型2.2.1 全卷积网络2.2.2 Unet2.2.3 上下文信息与PSPNet模型2.2.4 空洞卷积与DeepLab算法2.2.5 总结2.2.6 前言语义分…