MMDetection

news2025/1/19 3:41:40

什么是MMDetection

MMDetection实际上是一个用于目标检测的工具包,面向深度学习时代的。

任务支持

目标检测

实例分割

覆盖广泛

440+个预训练模型

60+篇论文复现

常用学术数据集

算法丰富

两阶段检测器

一阶段检测器

级联检测器

无锚框检测器

Transformer

使用方便

训练工具

测试工具

推理API

MMDetection环境搭建

 MMCV是所有这个OpenMMLab系列包括MMDetection,MMClassification等的各种东西的一个基础的组件,就是你用什么你都得装这个。

安装流程

参考:

开始你的第一步 — MMDetection 3.3.0 文档

步骤 0. 使用 MIM 安装 MMEngine 和 MMCV。

pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"

 步骤 1. 安装 MMDetection。

方案 b:如果你将 mmdet 作为依赖或第三方 Python 包,使用 MIM 安装:

!mim install mmdet

验证

import mmdet

mmdet.__version__

MMDetection 可以做什么

MMDetection提供400余个性优良的预训练模型,开箱即用,几行Python API即可调用强大的检测能力,几行Python API即可调用强大的检测能力。

MMDetection涵盖 60余个目标检测算法,并提供方便易用的工具,经过简单的配置文件改写和调参就可以训练自己的目标检测工具。

我们想用这些模型就可以从这个地方去点击它的链接就可以直接下载。

https://github.com/open-mmlab/mmdetection/tree/main/configs/mask_rcnn

 

AP:检测里面用来衡量指标的东西,满分是100分,最差是0分,越大越好 

 也可以通过这行代码区搜索一下mmdetection里的模型

!mim search mmdet --model maskrcnn
!mim search mmdet --model 'mask r-cnn'

 搜索出来了

!mim download mmdet --config mask-rcnn_r50_fpn_2x_coco --dest .

 运行命令后,当前目录下多了两个文件,一个叫配置文件.py,一个叫参数文件。

怎么用它呢?

from mmdet.apis import init_detector,inference_detector,show_result_pyplot
config_file = ''

 不知道init_detector需要传递哪些参数

设置参数信息

config_file = 'mask-rcnn_r50_fpn_2x_coco.py'
checkpoint_file = 'mask_rcnn_r50_fpn_2x_coco_bbox_mAP-0.392__segm_mAP-0.354_20200505_003907-3e542a40.pth'

了解一下返回的是什么模型

model = init_detector(config_file,checkpoint_file)

result = inference_detector(model,'demo.jpg')
import mmcv
from mmdet.registry import VISUALIZERS
image = mmcv.imread('demo.jpg')
# init the visualizer(execute this block only once)
visualizer = VISUALIZERS.build(model.cfg.visualizer)
# the dataset_meta is loaded from the checkpoint and
# then pass to the model in init_detector
visualizer.dataset_meta = model.dataset_meta

# show the results
visualizer.add_datasample(
    'demo.jpg',
    image,
    data_sample=result,
    draw_gt=False,
    wait_time=0,
    out_file='outputs/result.png' # optionally, write to output file
)
visualizer.show()

参考链接

https://github.com/open-mmlab/mmdetection/issues/10380

https://github.com/open-mmlab/mmdetection/issues/10829

# Note : Show_result_pyplot was removed after mmdet version 2.0. OpenCV imshow is used instead.
# import mmdet.apis module
from mmdet.apis import init_detector, inference_detector
from mmdet.registry import VISUALIZERS
import cv2
import mmcv

# path to model file
config_file = 'rtmdet_tiny_8xb32-300e_coco.py'

# path to weight file
checkpoint_file = 'rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'

# create model and load weights
model = init_detector(config_file, checkpoint_file, device='cpu')

# init visualizer
visualizer = VISUALIZERS.build(model.cfg.visualizer)

# the dataset_meta is loaded from the checkpoint and
# then pass to the model in init_detector
visualizer.dataset_meta = model.dataset_meta

# path to the image you want to test
img = 'demo/demo.jpg'
img = cv2.imread(img)

# apply the model to the image and get the output
result = inference_detector(model, img)

img = mmcv.imconvert(img, 'bgr', 'rgb')
visualizer.add_datasample(
name='result',
image=img,
data_sample=result,
draw_gt=False,
pred_score_thr=0.3,
show=False)

img = visualizer.get_image()
img = mmcv.imconvert(img, 'bgr', 'rgb')
cv2.imshow('result', img)

cv2.waitKey(0)

配置文件:

深度学习模型的训练涉及几个方面:

  • 模型结构:模型有几层、每层多少通道数等等
  • 数据集:用什么数据训练模型:数据集划分、数据文件路径、数据增强策略等等
  • 训练策略:梯度下降算法、学习率参数、batch_size、训练总轮次、学习率变化策略等等
  • 运行时:GPU、分布式环境配置等等
  • 一些辅助功能:如打印日志、定时保存checkpoint等等

在MMDetection (及其他 OpenMMLab 项目中),所有这些项目都涵盖在一个配置文件中,一个配
置文件定义了一个完整的训练过程

  • model字段定义模型
  • data字段定义数据
  • optimizer、Ir config 等字段定义训练策略
  • load from字段定义与训练模型的参数文件

训练好的模型是什么:

这个pth文件实际上就是一个Pytorch的一个参数文件,它就储存了我们训练好的所有模型的参数。

MMDetection配置文件的运作方式

训练自己的检测模型

通常基于微调训练

使用基于COCO预训练的检测模型作为梯度下降的“起点

使用自己的数据进行“微调训练”通常需要降低学习率 

实际上训练的过程就是相当于基于损失函数去做梯度下降,寻找最小梯度,使得损失函数最小的这样一种参数的过程

具体到MMDetection

新建一个继承文件

base

把原来的配置文件的名字贴过来,意思是基于这个配置文件作为配置文件,然后把它的已有的配置全部给导出来。MMDetection在读取配置文件的时候就会找到这里面的每个项目,然后去读入进来。

 版本不匹配

pip uninstall mmcv

pip install mmcv==1.4.0

from mmcv import Config

config = Config.fromfile('main.py') #从我们刚才定义好的只有一行的配置文件去把配置给它读进来
print(config.pretty_text) # 查看配置文件信息

运行

mim train mmdet main.py

main.py文件时我们继承了官方配置文件后的配置文件

COCO数据集格式

 "images":数据集里全部的图像的信息

"annotations":全部标注的信息

“categories”:全部物体类别的信息

通常使用SGD算法配合不同的学习策略:

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

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

相关文章

【HTML 基础】介绍

文章目录 定义作用基本概念1. 标签(Tags)2. 元素(Elements)3. 属性(Attributes)4. 文档结构 总结 HTML(HyperText Markup Language)是构建世界各地互联网页面的基本构建块之一。作为…

BIOS与CMOS的区别

在日常操作和维护计算机的过程中,常常可以听到有关BIOS设置和CMOS设置的一些说法,许多人对BIOS和CMOS经常混为一谈。下面介绍一些BIOS设置和CMOS设置在基本概念上的区分与联系。 BIOS是什么? 所谓BIOS,实际上就是微机的基本输入输出系统&…

实现上下文初始化参数

实现上下文初始化参数 问题方案 要解决上述问题,需要执行以下任务: 创建Web应用程序。创建检索初始化参数的servlet。指定初始化参数。构建Web应用程序。访问servlet。1. 创建Web应用程序 要使用NetBeans IDE创建Web应用程序,需要执行以下步骤: 选择“开始”→“所有程序”…

MySQL-进阶-SQL优化

一、insert优化 插入大量数据 二、主键优化 1、数据组织方式 2、页分裂 3、页合并 4、逐渐设计原则 三、order by优化 四、group by优化 五、limit优化 六、count优化 七、update优化

如何通过 Nginx 反向代理提高网站安全性和性能?

如何通过 Nginx 反向代理提高网站安全性和性能? 引言Nginx 反向代理的基本原理什么是反向代理?反向代理的工作方式反向代理的好处 配置 Nginx 反向代理的基本步骤1. 安装 Nginx2. 编辑 Nginx 配置文件3. 设置反向代理配置4. 测试并重启 Nginx 提高安全性…

函数式接口当参数使用

如果函数式接口作为一个方法的参数,就以为着要方法调用方自己实现业务逻辑,常见的使用场景是一个业务整体逻辑是不相上下的,但是在某一个步骤有不同的逻辑,例如数据处理有不同的策略。上代码 package com.dj.lambda;import java.…

Docker Image(镜像)

Docker镜像是什么 Docker image 本质上是一个 read-only 只读文件,这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application 所必须的文件。我们可以把 Docker image 理解成一个模板, 可以通过这个模板实例化出来很多容器。image 里面…

Nestjs 全局拦截器

一、拦截器 拦截器作用: 在函数执行之前、之后绑定额外的逻辑转换函数的返回结果转换从函数抛出的异常扩展基本函数的行为根据所选条件重写函数 期望接口返回一个标准的json格式,利用拦截器对数据做全局的格式化 {code: "200",data: [],mess…

Nginx解析漏洞(nginx_parsing_vulnerability)

目录 Nginx解析漏洞 环境搭建 复现 漏洞利用 Nginx解析漏洞 NGINX解析漏洞主要是由于NGINX配置文件以及PHP配置文件的错误配置导致的。这个漏洞与NGINX、PHP版本无关,属于用户配置不当造成的解析漏洞。具体来说,由于nginx.conf的配置导致nginx把…

在JavaScript中创建自定义错误

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ 目录 ✨ 前言 ✨ 正文 简介 创建自定义错误 自定义错误属性 instanceof 检…

C#实现对任意区域任意大小的截图

1,目的: 实现类似系统截图工具那样对屏幕任何区域自定义大小的截图。 2,效果展示: 点击截图 选择需要截图的区域: 区域选择完成后,单击右键完成截图: 在合适的载体上粘贴截图: 3,…

【笔记】顺利通过EMC试验(1-15)-视频笔记

目录 视频链接 P2:电子设备的电磁兼容性要求 P3:怎样分析一个电磁兼容的问题 P4:EMC试验注意事项 P5:骚扰源有什么特征 P6:什么是传导骚扰发射 P7:什么是辐射骚扰发射 P8:环路天线的辐射特性 P9:偶极天线的辐…

QT之 QDebug 调试(一)

在QT中&#xff0c;进行调试&#xff0c;则需要在头文件地方加上 #include <QDebug> 加上之后&#xff0c;在编译之后则其输出的信息则在应用程序输出那里显示信息。 其QDebug 信息调试则如&#xff1a; qDebug() << " 需要插入的信息 "…

【Linux】从C语言文件操作 到Linux文件IO | 文件系统调用

文章目录 前言一、C语言文件I/O复习文件操作&#xff1a;打开和关闭文件操作&#xff1a;顺序读写文件操作&#xff1a;随机读写stdin、stdout、stderr 二、承上启下三、Linux系统的文件I/O系统调用接口介绍open()close()read()write()lseek() Linux文件相关重点 复习C文件IO相…

南京观海微电子---如何减少时序报告中的逻辑延迟

1. 引言 在FPGA逻辑电路设计中&#xff0c;FPGA设计能达到的最高性能往往由以下因素决定&#xff1a; ▪ 工作时钟偏移和时钟不确定性&#xff1b; ▪ 逻辑延迟&#xff1a;在一个时钟周期内信号经过的逻辑量&#xff1b; ▪ 网络或路径延迟&#xff1a;Vivado布局布线后引…

网络服务综合练习

综合练习&#xff1a;请给openlab搭建web网站 网站需求&#xff1a; 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料 和缴费网站&#xff0c;基于&#xff0c;www.openlab.com/data网…

什么是跳表,Java如何实现跳表?

1. 问题引入&#xff0c;相较于有序链表我们为什么需要跳表&#xff1f; 1.1 首先我们需要了解什么是有序链表 如图&#xff1a; 每个链表存在一个指向下一节点的指针&#xff0c;如果我们要对其任一节点进行增删改&#xff0c;都需要先使用迭代器进行查询&#xff0c;找到指…

【数字量采集1.28】数字信号采集

数字量采集-2024年01月27日-二刷 文章目录 分析考虑一个波形的六要素&#xff1a;项目需求分析&#xff1a;高低电平数字量采集电路设计RS485差分信号传输SP3485 芯片引脚RS485 转 TTL 电路 分析考虑一个波形的六要素&#xff1a; 高电平 低电平 上升时间 下降时间 频率/周期 …

Vue2 VS Vue3 生命周期

一、生命周期的概念 Vue组件实例在创建时要经历一系列的初始化步骤&#xff0c;在此过程中Vue会在合适的时机&#xff0c;调用特定的函数&#xff0c;从而让开发者有机会在特定阶段运行自己的代码&#xff0c;这些特定的函数统称为&#xff1a;生命周期钩子&#xff08;也会叫…

【C++中的STL】常用算法3——常用拷贝和替换算法

常用算法3 copyreplacereplace_ifswap 1、 copy容器内指定范围的元素拷贝到另一个容器中 2、 replace将容器内指定的旧元素修改为新元素 3、 replace_if容器内指定范围满足条件的元素替换为新元素 4、 swap互换两个容器的元素 copy 容器内指定范围的元素拷贝到另一个容器中…