OpenMMLab-AI实战营第二期——4-2.MMDetection代码课

news2024/10/7 19:25:41

文章目录

  • 1. MMDetection介绍(vs MMSegmentation,mmdetection3d)
  • 2. 代码
    • 2.1 使用pycocotools配合exif可视化图像
    • 2.2 mmdetection中config的继承
    • 2.3 mmdet的数据集可视化问题(VISUALIZERS)
    • 2.4 pin_memory参数设置
    • 2.5 max_split_size_mb设置
    • 2.6 MMYOLO特征图可视化
    • 2.7 数据集转为COCO格式

  • 视频教程链接:MMDetection代码课
  • 如果想为OpenMMLab项目做贡献,可以看看这个:https://openmmlab.com/activity/codecamp

1. MMDetection介绍(vs MMSegmentation,mmdetection3d)

三个项目的Github Readme:

  • mmdetection/README_zh-CN.md
  • mmsegmentation/README_zh-CN.md
  • mmdetection3d/README_zh-CN.md

MMDetection 支持了各种不同的检测任务,包括目标检测,实例分割,全景分割,以及半监督目标检测

  • Github说明:mmdetection/README_zh-CN.md
  • 检测是分割的基础,所以它也包含了很多分割任务,和MMSegmentation的区别是:
    • 目前,MMSegmentation 支持的分割任务为语义分割MMDetection 中支持了实例分割和全景分割
    • 详见:超详细!带你轻松掌握 MMSegmentation 整体构建流程
    • 语义分割的应用:①自动驾驶;②遥感图像分析;③医学图像分析。
    • 所以可以理解为专门为了这三个垂直方向把语义分割方向的模型单独列出来了
  • MMdetection3d这个库主要是面向3D的,感觉重点在点云数据上,支持与 2D 检测器(MMDetection)的自然整合
    • 详见:全面支持激光雷达语义分割!MMDetection3D 新特性抢先看
  • 另外,之前一直很奇怪MMpretrain是干嘛的,其实MMpretrain里主要放的模型大部分都是作为主干网络的模型,目前主要包括图像分类图像多标签分类图像检索,里面并不包含mmdetection的检测的预训练模型,详见:模型库统计。
  • 所以mmopenlab下面这个repo,其实还算比较独立,没有重复什么。

注意,

  • 语义分割是分类+分割(一类物体一个颜色,自动驾驶其实用语义分割就够了),
  • 实例分割(语义分割基础上+同类不同个体区分),
  • 全景分割(全图的每个像素都要分)
    在这里插入图片描述
    图自这里

2. 代码

视频中的链接并没有找到,但是有个差不多的:mmdetection/demo/MMDet_Tutorial.ipynb

2.1 使用pycocotools配合exif可视化图像

关于pycocotools

2.2 mmdetection中config的继承

_base_ = [
    '../_base_/default_runtime.py', '../_base_/schedules/schedule_1x.py',
    '../_base_/datasets/coco_detection.py', './rtmdet_tta.py'
]

参考:

  • mmdetection.readthedocs.io- 在标准数据集上训练预定义的模型(待更新)
  • mmdetection.readthedocs.io-自定义数据集
  • https://github.com/open-mmlab/mmdetection/blob/main/configs/rtmdet/rtmdet-ins_tiny_8xb32-300e_coco.py

2.3 mmdet的数据集可视化问题(VISUALIZERS)

from mmdet.registry import DATASETS,VISUALIZERS

我的结果是Filling的,教程的结果是没有Filling的

参考:

  • 使用MMDetection3.x 在Balloon气球数据集上训练并对视频进行实例分割和制作成Color Splash效果

2.4 pin_memory参数设置

参考:

  • 相关-37. 释放GPU显存
  • 详解Pytorch里的pin_memory 和 non_blocking

2.5 max_split_size_mb设置

If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation

参考:

  • mmdetection-CUDA out of memory when testing
    在这里插入图片描述
    所以这个问题是已知的,训练结束后的validation阶段就会发生内存泄漏,要么就跳过val阶段。。。

  • RuntimeError: CUDA out of memory. How setting max_split_size_mb?

ValueError: val_dataloader, val_cfg, and val_evaluator should be either all None or not None, but got val_dataloader={'batch_size': 1, 'num_workers': 1, 'persistent_workers': True, 'drop_last': False, 'sampler': {'type': 'DefaultSampler', 'shuffle': False}, 'dataset': {'type': 'CocoDataset', 'data_root': '/content/cat_dataset', 'ann_file': 'annotations/test.json', 'data_prefix': {'img': 'images/'}, 'test_mode': True, 'pipeline': [{'type': 'LoadImageFromFile', 'backend_args': None}, {'type': 'Resize', 'scale': (640, 640), 'keep_ratio': True}, {'type': 'Pad', 'size': (640, 640), 'pad_val': {'img': (114, 114, 114)}}, {'type': 'PackDetInputs', 'meta_keys': ('img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor')}], 'backend_args': None, 'metainfo': {'classes': ('cat',), 'palette': [(220, 20, 60)]}}}, val_cfg={'type': None}, val_evaluator=None

2.6 MMYOLO特征图可视化

AM(特征图可视化,激活值可视化),CAM(带有类的特征图可视化)

参考:

  • https://mmyolo.readthedocs.io/zh_CN/latest/recommended_topics/visualization.html
  • 玩转 MMYOLO 工具类第一期: 特征图可视化

2.7 数据集转为COCO格式

参考:

  • 使用MMDetection3.x 在Balloon气球数据集上训练并对视频进行实例分割和制作成Color Splash效果

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

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

相关文章

康佳液晶电视(非智能)Mstar V56 芯片

    2023/6/11 下午8:10:01 康佳用的地面波数字电视解码芯片是?  2023/6/11 下午8:10:08 康佳电视使用的地面波数字电视解码芯片可能因不同的产品型号而有所不同。然而,根据…

【AI作画】使用DiffusionBee with stable-diffusion在mac M1平台玩AI作画

DiffusionBee是一个完全免费、离线的工具。它简洁易用,你只需输入一些标签或文本描述,它就能生成艺术图像。 DiffusionBee下载地址 运行DiffusionBee的硬性要求:MacOS系统版本必须在12.3及以上 DBe安装完成后,去C站挑选自己喜欢…

ur机器人在moveit中运行环境搭建(保姆级)

ur机器人在moveit中运行环境搭建 我的系统是ubuntu20.04 rosb版本: noetic 1.安装运动学插件 sudo apt-get install ros-noetic-trac-ik-kinematics-plugin 2.安装 eigenpy 需要单独编译,EigenPy是一个用于在Python中使用Eigen库的绑定库 git clone https://github.com/…

[MAUI]写一个跨平台富文本编辑器

文章目录 原理创建编辑器定义实现复合样式选择范围字号字体颜色与背景色字体下划线字体加粗与斜体 序列化和反序列化跨平台实现集成至编辑器 创建控件使用控件最终效果已知问题项目地址 富文本编辑器是一种所见即所得(what you see is what you get 简称 WYSIWYG)文本编辑器&am…

visual studio 2022,ADO.NET 实体数据模型添加 sqlite数据库对象

文章目录 前言前期环境博客github 文档解析文件安装说明文件下载省流版nuget环境配置成功标志sqlite连接测试 前言 我们知道ADO.NET 实体数据模型特别适合动态开发数据库。因为ADO.NET可以使用DB First 开发 我们在开发一个程序的时候,经常会动态更新数据库字段&a…

Python的基础语法知识

1、变量 变量是一个代号,它代表的是一个数据。 在Python中,定义一个变量的操作包含两个步骤: ①为变量起一个名字 ②为变量指定其所代表的数据 这两个步骤在同一行代码中完成。 1.1 变量的命名规则 变量名可以由任意数量的字母、数字、下划…

Unity 简易UI管理器

首先我们需要先定义这么一个UIManager类。 public class UIManager { } UI管理器嘛,顾名思义肯定是用来管理我们游戏中的UI的,而我们游戏当中的UI呢一般是以面板为单位来进行划分的。所以我们还需要一个UI面板类。然后通过我们的UI管理器来管理我们的U…

Linux——创建容器并将本地调试完全的前后端分离项目打包上传docker运行

前言 在上传之前需要有一个已经搭建好的前后端分离的项目,下面是后端的项目结构图和前端页面图 在服务器上利用准备好的docker镜像配置一个新的容器 创建容器 这里使用的docker镜像的OS是ubuntu20.04.需要自备。 注意好端口映射: 通常前端项目使用的端口号一般都…

【DeepSpeed 教程翻译】二,Megatron-LM GPT2,Zero Redundancy Optimizer 和 ZeRO-Offload

文章目录 0x0. 前言0x1. Megatron-LM GPT2使用原始的 Megatron-LM 训练 GPT2设置训练数据运行未修改的Megatron-LM GPT2模型开启DeepSpeed参数解析初始化和训练初始化使用训练API前向传播 反向传播更新模型参数损失缩放检查点保存和加载 DeepSpeed Activation Checkpoints&…

异常检测学习笔记 三、线性回归方法、主成分分析、支持向量机

一、线性回归方法 类似这样的函数是线性回归模型和支持向量机的基础,线性函数很简单,如果原始问题是非线性的,那么将其转化为线性问题更容易处理,比如下面的方程。 线性映射是主成分分析的重要组成部分。 寻找响应(因变量)和解释变量(自变量)之间的线性关系,…

python实现图片、gif转为字符样式图与gif,pyqt5、opencv、PIL

使用pyqt5将图片转换为字符样式的图片步骤如下: 设计pyqt5界面,使用Qt Designer 设计界面样式 将ui文件转换为py代码 书写相关按钮信号槽代码打开图片按钮需要一下逻辑步骤弹出选择路径的界面来选择文件保存 图片的路径,能在转换保存的按钮…

数字IC前端学习笔记:FIFO的Verilog实现(二)

相关文章 数字IC前端学习笔记:LSFR(线性反馈移位寄存器) 数字IC前端学习笔记:跨时钟域信号同步 数字IC前端学习笔记:信号同步和边沿检测 数字IC前端学习笔记:锁存器Latch的综合 数字IC前端学习笔记&am…

最新站长必备在线工具箱系统源码 含上百款工具 带后台版本

🎈 限时活动领体验会员:可下载程序网创项目短视频素材 🎈 最新站长必备在线工具箱系统源码 含上百款工具 带后台版本 自适应模板 优化修复版 系统一切正常可用,后台登录方式是QQ扫码登录的,建议有能力的可以改一改 此工具箱系统…

【LVS + Keepalived 群集】

目录 一、Keepalived 案列分析二、Keeoalived 工具介绍1、keepalived 实现原理剖析2、VRRP (虚拟路由冗余协议)是指对路由器的一种备份解决方案3、keepalived 案例讲解4、keepalived 的安装与启动5、Keepalived及其工作原理Keepalived体系主要模块及其作…

SQL锁总结

一、概述 介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁…

springboot3嵌入式容器源码解析

问题分析 不同于使用springmvc,在我们使用springboot时无需配置tomcat就可以直接使用,这就说明springboot已经在我们启动项目时将tomcat配置好了,接下来我们就来看看springboot底层是怎么实现的。 源码解析 ServletWebServerFactoryAutoConfiguratio…

【Python爬虫】整站40万条房价数据并行抓取,可更换抓取城市

目录 前言一、获取索引一级位置:区域信息二级位置:板块信息三级位置:地铁信息(搜索地铁周边房源信息) 二、获取索引页最大页数三、抓取房源信息Tag四、分配任务,并行抓取五、将抓取结果存储到excel中&#…

go map源码探索(查找、插入、删除、扩容、遍历)

文章目录 概要一、Go map结构二、Go map初始化2.1、不带容量初始化2.2、带容量初始化 三、Go map查找四、Go map插入4.1、插入源码分析4.2、溢出桶申请策略 五、删除源码分析六、扩容与迁移源码分析6.1、扩容条件6.1.1、当前负载因子大于6.56.1.2、有过多的溢出桶 6.2、扩容6.3…

LVS+Keepalivedd

Keepalived 一、Keepalived及其工作原理二、实验非抢占模式的设置 三、脑裂现象四、Nginx高可用模式 一、Keepalived及其工作原理 keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可用解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器…

11.枚举和注解|Java学习笔记

文章目录 枚举 enumeration enum自定义实现枚举自定义类实现枚举总结 使用enum关键字实现枚举实现方法Enum类方法enum实现接口 注解注解的理解JDK的元Annotation(元注解) 枚举 enumeration enum 从一个需求引入: 要求创建季节(Season) 对象&…