OpenMMlab AI实战营第五、六期培训

news2024/11/24 22:44:05

OpenMMlab AI实战营第五、六期培训

  • OpenMMlab实战营
    • 第五、六次课2023.2.7-9
    • 学习参考
    • 第五次课笔记
    • 第六次课笔记
    • 一、什么是语义分割
    • 二、语义分割 v.s. 实例分割 v.s. 全景分割
    • 三、语义分割经典模型
      • 1.语义分割的基本思路
      • 2.**复用卷积计算**
      • 3.全连接层的卷积化
      • 4.预测图的升采样
      • 5.双线性插值
      • 6.转置卷积
    • 四、完成精细的分割任务
      • 1.基于多层特征的上采样
      • 2.上下文信息
      • **4.PSPNet 2016(提出多尺度池化)**
      • 5.空洞卷积与 DeepLab 系列算法
        • (1)空洞卷积
        • (2)DeepLab 模型
      • 6.条件随机场 Conditional Random Field, CRF
        • (1)条件随机场
      • 7.空间金字塔池化 Atrous Spatial Pyramid Pooling ASPP
      • 8.DeepLab v3+
    • 五、语义分割模型的评估
    • 总结

OpenMMlab实战营

第五、六次课2023.2.7-9

此次实战营的积分规则介绍:

学习参考

笔记建议结合ppt来学习使用,ppt中对应知识可以参照笔记的标题进行查看。

ppt(ppt_03的后半部分):lesson5_ppt
ppt:lesson6_ppt

b站回放:OpenMMLab AI 实战营

往期笔记:笔记回顾

相关学习推荐:

  • 同济子豪兄(大佬):子豪兄b站主页

  • OpenMMlab主页:OpenMMla主页

  • OpenMMlab Github仓库链接:Github OpenMMlab

  • MMSegmentation Github仓库链接:Github MMSegmentation

  • OpenMMlab 此次AI实战营的仓库:AI实战营github

第五次课笔记

本次课程主要讲解了OpenMMlab开源体系中的MMDetection目标检测相关的知识,以及如何完整的进行一次自己的目标检测任务,主要是对第四节课的理论进行代码实践,笔记较为粗糙。

主要分为一下几个方面的内容:

  • MMDetection的环境搭建
    • 下载mim工具包
    • 通过mim下载mmdet
    • 在configs目录下下载实验所需模型
  • 通过api函数测试一张图片的目标检测效果
    • init_model:加载预训练模型
    • inference_model:执行推理
  • 通过修改.py配置文件进行对特定数据集进行迁移学习
    • 修改data部分
      • 数据集的路径(json文件)
    • 修改model部分
      • 分类头数量
      • 添加预训练参数
    • 修改优化器部分
      • 学习率根据实际使用的gpu数量进行合理调整
      • epoch大小(通常由于预训练epoch都比较大,所以我们迁移学习epoch通常小一点就可以达到比较好的训练结果)
      • 打印日志的频次
  • COCO数据集的json文件格式讲解
    • images:图像的信息
    • annotations:所有标注信息存储在一个列表中,每个标注对应图像上一个物体标注
    • categories:所有类别信息
  • 最后还介绍了一些MMDetection中的常用训练策略
    • 随机裁剪的使用
    • 学习率升温、退火策略

第六次课笔记

一、什么是语义分割

表面上看语义分割的效果就是抠图,但是实际上图像分割就是在像素级别的细粒度图像分类,把每一个像素的分类结果连在一起就是最终的语义分割结果

应用:

  • 医学分割
    • 通过图像分割技术,辅助进行医疗诊断。如右图,识别脑部肿瘤异物的位置。
  • 无人驾驶
    • 自动驾驶车辆,会将行人,其他车辆,行车道,人行道、交通标志、房屋、草地与树木等等按照类别在图像中分割出来,从而辅助车辆对道路的情况进行识别与认知。
  • 智能遥感
    • 分辨地表物体的类别,通过右侧分割之后的图像可以看到,红色的部分属于湖泊水流。通过智能遥感。能够监测不同季节地表水域的变化,从而辅助农业生产,以及旱灾洪灾的预测等等。
  • 腾讯会议人像模式等等
    • 把人可以抠出来

二、语义分割 v.s. 实例分割 v.s. 全景分割

在这里插入图片描述

  • 语义分割

    • 仅考虑像素的类别
    • 不分割同一类的不同实体
  • 实例分割

    • 分割不同的实体
    • 仅考虑前景物体
    • 前一节任务中学的MMDetection就是实例分割
  • 全景分割

    • 背景仅考虑类别
    • 前景需要区分实体

如上图所示从左往右依次是”语义分割“、”实例分割“、”全景分割“

三、语义分割经典模型

1.语义分割的基本思路

  • 按颜色分割
    • 先验知识:物体内部颜色相近,物体交界颜色变化
    • 存在的问题–可解释性差
      • 先验知识不完全准确
      • 不同物体颜色可能相近,物体内也会包含多种颜色,如下图所示一个人同时红衣服黑裤子就无法清晰的分割
    • 改进
      • 添加一些额外的手段确定物体类别

在这里插入图片描述

  • 逐像素分割(滑动窗口)
    • 滑动窗口
      • 对一个窗口做分类,其类别代表了窗口中心元素的类别
      • 滑窗每次滑动就输入到CNN中进行一次预测
    • 优势
      • 可以充分利用已有的图像分类模型
    • 问题
      • 效率低,重叠区域重复计算卷积

在这里插入图片描述


2.复用卷积计算

  • 基本思路
    • 先在全图得到一个feature map
    • 滑窗的时候去feature map中去扣出自己需要的部分
    • 优势
      • 原来每次都需要输入一个固定大小的区块给CNN
      • 现在可以输入任意大小的原图
    • 问题
      • 全连接层要求固定输入大小

在这里插入图片描述

3.全连接层的卷积化

  • 基本思路
    • 参考全连接层的操作
      • 将最后一层的特征图拉直
      • 拉直之后的向量和全连接层神经元分别相乘再相加得到下一层的输入
      • 相乘再相加这个过程其实就是一个卷积操作
    • 全连接层卷积化
      • 全连接层用原来神经元数量个和最后一层特征图一样分辨率大小的卷积核
      • 与最后一层特征图进行卷积操作
      • 由于卷积核和特征图大小一致所以会变成1x1x卷积核数量的输出
    • 优势
      • 由于没有使用全连接层,所以可以兼容任意尺寸的输入,输入的尺寸大,最后的feature map大。输入的尺寸小,最后的feature map小。

在这里插入图片描述

全卷积网络(Fully Convolutional Network 2015)

在这里插入图片描述

4.预测图的升采样

  • 原始思路
    • 使用步长>1的卷积核进行降采样
    • 使得大的特征图逐渐变小
  • 升采样基本思路
    • 最终要求结果是一个大图
    • 解决方案:
      • 双线性插值
        • 类似word、ppt中放大缩小的思想,不需要可学习的参数
      • 转置卷积(可学习的升采样层)
        • 别名:升卷积/反卷积
        • 但数学上和卷积并不是逆运算

5.双线性插值

例如下图,我们已知红点的像素值想要求得绿点的像素值

  • 通过相似三角形按比例由上面两个红点求出R2的像素值
  • 通过相似三角形按比例由下面两个红点求出R1的像素值
  • 通过相似三角形按比例由R1R2求出绿点P的像素值

在这里插入图片描述

图中白色的值就是使用双线性插值法填充出来的值

双线性插值可以通过一个卷积操作实现

例如下图中使用卷积对目标5x5的矩阵进行卷积操作,就可以得到最终的矩阵

在这里插入图片描述

6.转置卷积

之前的双线性插值的卷积核是人为定义的,其中的参数不可以进行学习,而转置卷积具有可学习的参数

转置卷积:输入一个小图 ➢ 得到一个大图

注:转置卷积旨在形状上有互逆的关系,数值结果没有互逆关系

在这里插入图片描述

一个完整的全卷积网络的预测与训练如下图所示,参数逐渐迭代优化实现了一个端到端学习的语义分割神经网络:

在这里插入图片描述

四、完成精细的分割任务

  • 一般分割任务的缺陷
    • 随着下采样(卷积操作)的进行,会丢失很多的特征,使得分割效果不是很好
  • 解决思路
    • 高层次和低层次采样进行结合
      • 浅层和底层的下采样中获取更多的特征信息(空间信息、细节信息)
      • 从高层的下采样中获取更多的语义信息

1.基于多层特征的上采样

解决方案 FCN

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

在这里插入图片描述

成功的应用:U-Net

  • 左边相当于编码器encoder:逐级降采样获取语义信息
  • 右边相当于解码器decoder:逐级升采样恢复细节信息

在这里插入图片描述

2.上下文信息

上下文:

  • NLP中一个文字周围的文字
  • 图像上:一个图块周围的图块

有了上下文(图像周围的内容),可以帮助我们对图片内容做出更加精确的判断,而滑动窗口刚好就是丢失了这部分信息

在这里插入图片描述

4.PSPNet 2016(提出多尺度池化)

  • 对特征图进行不同尺度的池化,得到不同尺度的上下文特征
  • 上下文特征经过通道压缩和空间上采样之后拼接回原特征图 → 同时包含局部和上下文特征
  • 基于融合的特征产生预测图

在这里插入图片描述

即,通过不同大小的特征图进行卷积操作得到不同的feature map再把他们通过concat摞在一起,就相当于考虑了上下文的信息

5.空洞卷积与 DeepLab 系列算法

DeepLab 是语义分割的又一系列工作,其主要贡献为:

  • 使用空洞卷积解决网络中的下采样问题
  • 使用条件随机场 CRF 作为后处理手段,精细化分割图
  • 使用多尺度的空洞卷积(ASPP 模块)捕捉上下文信息

DeepLab v1 发表于 2014 年,后于 2016、2017、2018 年提出 v2、v3、v3+ 版本。

(1)空洞卷积

空洞卷积解决下采样问题

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

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

    • 可以减少下采样的次数

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

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

具体过程如下图所示:

特征图不变,膨胀卷积核(不会产生额外的参数)

在这里插入图片描述

实际场景的效果对比

在这里插入图片描述

(2)DeepLab 模型

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

  • 去除分类模型中的后半部分的下采样层
  • 后续的卷积层改为膨胀卷积,并且逐步增加rate来维持原网络的感受野

在这里插入图片描述

6.条件随机场 Conditional Random Field, CRF

条件随机场是一种对原始语义分割结果进行后处理的方法

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

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

在这里插入图片描述

(1)条件随机场

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

在这里插入图片描述

其中能量函数中的参数,一部分是自己像素的贡献,另一部分是两两像素之间的贡献

在这里插入图片描述

如上图所示,能量函数鼓励在边缘产生变化,从而使得边缘更加清晰

7.空间金字塔池化 Atrous Spatial Pyramid Pooling ASPP

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

  • DeepLab v2 & v3 使用不同尺度的空洞卷积达到类似的效果

在这里插入图片描述

8.DeepLab v3+

  • DeepLab v2 / v3 模型使用 ASPP 捕捉上下文特征
  • Encoder / Decoder 结构(如 UNet) 在上采样过程中融入低层次的特征图,以获得更精细的分割图
  • DeepLab v3+ 将两种思路融合,在原有模型结构上增加了一个简单的 decoder 结构

融入了encoder和decoder的**DeepLab v3+**的想法直接上图:

在这里插入图片描述

五、语义分割模型的评估

  • 分割任务和分类任务非常相似,也可以绘制出混淆矩阵,一些常见的评价指标如下所示
    • 比较预测与真值
    • 基于交并集的评估指标
      • Accuracy(类似分类任务中的召回率Recall)
      • IoU
      • Dice(类似分类任务中的F1-score)

总结

在这里插入图片描述

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

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

相关文章

Stable Diffusion 3 Medium 正式开源,用户对此产品评价如何?

前两天 Stability.AI 终于开源了 Stable Diffusion 3,虽然只是中杯的 Medium 版本,没有放出当初宣布的 8B 版本[1],但也在很多方面取得了进步。本想第一时间尝鲜测试,但这几天出差在外,使用颇不方便。 正好老朋友揽睿…

HTTP/3 协议学习

前一篇: HTTP/2 协议学习-CSDN博客 HTTP/3 协议介绍 HTTP/3 是互联网上用于传输超文本的协议 HTTP 的第三个主要版本。它是 HTTP/2 的后继者,旨在进一步提高网络性能和安全性。HTTP/3 与前两个版本的主要区别在于它使用了一个完全不同的底层传输协议—…

安泰电压放大器的选型原则是什么

电压放大器是电子电路中常用的一种器件,主要用于放大输入电压信号。在选型电压放大器时,需要考虑以下几个原则。 根据应用需求确定放大倍数。放大倍数是指输出电压与输入电压之间的倍数关系,也称为增益。不同的应用场景对放大倍数的要求不同&…

3个火火火的AI项目,开源了!

友友们,今天我要给你们安利三个超酷的开源项目,它们都和AI有关,而且每一个都能让你的日常生活变得更加有趣和便捷!(最近AI绘图又又超神了,分享以下美图养眼) 01 字节出品,文字转语音Seed-TTS 字节推出了一…

Ubuntu,Centos,Linux服务器安装Mellanox MCX653105A IB网卡HCA卡驱动

Mellanox 官方驱动下载地址 https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/ 选择对应操作系统 官方链接速度比较慢,推荐个友商的下载地址 https://support.xfusion.com/support/#/zh/rack-servers/2288h-v5-pid-21872244/software …

【算法专题--链表】K个一组翻转链表 -- 高频面试题(图文详解,小白一看就懂!!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双指针 -- 采用哨兵位头节点 🥝 什么是哨兵位头节点? 🍍 案例图解 四、总结与提炼 五、共勉 一、前言 K个一组翻转链表 这道题,可以说是--链表专题--,最经典…

Java内存模型(JMM)详解

文章目录 1、Java内存模型2、JMM的核心概念1)主内存与工作内存2)内存可见性3)JMM的三大特性:原子性、可见性、有序性。 3、JMM中的八种操作4、Happens-before 规则5、样例: 1、Java内存模型 Java内存模型(…

电脑文件防泄密软件——天锐绿盾 - 中科数安—— 哪个好

在选择电脑文件防泄密软件时,天锐绿盾和中科数安都是值得考虑的选项。以下是对这两款软件的详细比较: www.drhchina.com PC地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 功能全面性: 天锐…

QT工作笔记

文章目录 QDialog的accept()和reject()介绍QPushButton提示属性样式表QComboBox QDialog的accept()和reject()介绍 accept() 和reject() 这两个槽函数都会和close() 一样关闭dialogaccept() 关闭后 返回了Dialog::Acceptedreject() 关闭后 返回了Dialog::Rejected这样当我们需…

SpringBoot修改banner

在resources目录下创建banner.txt文件 到该网站下选择banner https://www.bootschool.net/ascii-art 点击拷贝: 粘贴到banner.txt中,保存 重新运行项目即可:

ES升级--03-- IK分词器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 IK分词器1. IK分词器 下载https://github.com/infinilabs/analysis-ik/releases 2. 创建文件夹 analysis-ik3.把zip包放至该目录下 解压4. 删除zip包5、重启Elastic…

阿赵UE引擎C++编程学习笔记——C++自定义蓝图函数

大家好,我是阿赵。   使用UE引擎,大部分功能都可以使用蓝图的自带节点去完成。但有时候我们也需要扩展一些蓝图没有的功能。这一篇主要学习一下怎样用C给蓝图新增自定义的函数节点。 一、 新建蓝图函数库 在添加C类的时候,选择蓝图函数库&…

大数据的力量:推动战略决策和业务转型

在当前全球化的时代背景下,国际间的联系日益紧密,世界变得更加互联互通。面对各种危机,数据驱动决策和分析显得愈发重要。从医学研究到市场趋势分析,大数据技术在各个领域发挥着关键作用,推动着一场深刻的变革浪潮。 大…

初识数据库及Mysql安装管理

初识数据库及Mysql安装管理 了解数据库数据库的概念数据库的分类关系型数据库(SQL)非关系型的数据库(NoSQL) SQL语句SQL语言分类: MySQL中6种常见的约束: Mysql安装(CentOS7)源码编译…

mybatis中resultMap和resultType的区别

总结 基本映射 :(resultType)使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。(数据库,实体,查询字段,这些全部都得一一对应)…

gridview自带编辑功能如何判断用户修改的值的合法性

在使用GridView的编辑功能更新值时,确保输入的值合法性是十分重要的。为了实现这一点,你可以在GridView的RowUpdating事件中加入代码来检查用户输入的值。如果发现输入的值不合法,你可以取消更新操作并向用户显示错误消息。下面是如何实现的步…

ESP8266-01S烧录MQTT固件ERROR问题

今天在烧录ESP8266固件时遇到了这个问题,技术客服给了个有效的解决方案。 选择固件的时候可以先确认自己的模块是ESP8266或者EPS8285主控,这在选择DOWNLOADTOOL时还不一样。 然后波特率是115200,我在这个地方选错成1152000。 当然上面都不…

Proxy和definedProperty

1. Proxy 代理 定义: 用于定义基本操作的自定义行为 Proxy修改的是程序默认形为,就形同于在编程语言层面上做修改,属于元编程 元编程 是指某类计算机程序的编写,这类计算机程序编写或者操纵其它程序(或者自身)作为它…

Python 引入中文py文件

目录 背景 思路 importlib介绍 使用方法 1.导入内置库 importlib.util 2.创建模块规格对象 spec importlib.util.spec_from_file_location("example_module", "example.py") 3.创建模块对象 module importlib.util.module_from_spec(spec) …

全国产城市轨道交通运营公安AI高清视频监控系统

方案简介 城市轨道交通运营公安高清视频监控系统解决方案针对运营部门和公安部门的安保需求,选用华维视讯的各类前端和视频编解码、控制产品,通过统一平台提供视频监控服务和智能应用,满足轨道交通运营业主客运组织和抢险指挥的需求&#xff…