当前位置: 首页 > news >正文

Python知识点:基于Python技术,如何使用MMDetection进行目标检测

开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候!


使用MMDetection进行目标检测的Python技术详解

MMDetection是一个开源的目标检测工具箱,由OpenMMLab提供,它基于PyTorch实现,支持多种目标检测、实例分割和全景分割算法。在本文中,我们将详细介绍如何使用Python和MMDetection进行目标检测。

环境配置

首先,需要安装Python和PyTorch环境。MMDetection支持Python 3.7以上版本,以及CUDA 9.2以上和PyTorch 1.8以上版本。可以通过以下命令创建一个名为mmdetection的虚拟环境,并安装GPU版本的PyTorch:

conda create -n mmdetection python=3.9 -y
conda activate mmdetection
conda install pytorch torchvision -c pytorch

接下来,使用OpenMMLab推出的MIM工具安装MMEngine和MMCV两个必要的库:

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

下载源码并安装配置文件

下载MMDetection的源码到本地,并安装源码中的配置文件:

cd /path #(进入到你自己下载mmdetection代码的位置)
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .

如果由于网络问题无法成功下载,可以访问MMDetection的GitHub页面,下载ZIP文件进行安装。

测试是否成功安装

为了验证MMDetection是否安装正确,可以下载配置文件和模型权重文件,然后进行推理验证:

mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .
python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cuda

如果安装成功,你将在当前文件夹中的outputs/vis文件夹中看到一个新的图像demo.jpg,图像中包含有网络预测的检测框。

数据集准备

MMDetection支持多种数据集格式,包括COCO、Pascal VOC等。你需要将数据集转换为MMDetection支持的格式。例如,对于COCO格式的数据集,需要准备以下文件:

  • annotations/instances_train2017.json
  • annotations/instances_val2017.json
  • annotations/captions_train2017.json
  • annotations/captions_val2017.json

模型准备

configs目录下,MMDetection提供了多种预设的模型配置文件。你可以选择一个适合你数据集的模型配置文件,或者创建一个新的配置文件。例如,使用Faster R-CNN模型进行训练:

# 文件名:configs/faster_rcnn_r50_fpn_1x.py
model = dict(type='FasterRCNN',backbone=dict(type='ResNet',depth=50,num_stages=4,out_indices=(0, 1, 2, 3),frozen_stages=1,norm_cfg=dict(type='BN', requires_grad=True),norm_eval=True,style='pytorch',init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')),neck=dict(type='FPN',in_channels=[256, 512, 1024, 2048],out_channels=256,num_outs=5),rpn_head=dict(type='RPNHead',in_channels=256,feat_channels=256,anchor_generator=dict(type='AnchorGenerator',scales=[8],ratios=[0.5, 1.0, 2.0],strides=[4, 8, 16, 32]),bbox_coder=dict(type='DeltaXYWHBBoxCoder',target_means=[0.0, 0.0, 0.0, 0.0],target_stds=[1.0, 1.0, 1.0, 1.0]),loss_cls=dict(type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),loss_bbox=dict(type='L1Loss', loss_weight=1.0)),roi_head=dict(type='StandardRoIHead',bbox_roi_extractor=dict(type='SingleRoIExtractor',roi_layer=dict(type='RoIAlign', output_size=7, sampling_ratio=0),out_channels=256,featmap_strides=[4, 8, 16, 32]),bbox_head=dict(type='Shared2FCBBoxHead',in_channels=256,fc_out_channels=1024,roi_feat_size=7,num_classes=80,bbox_coder=dict(type='DeltaXYWHBBoxCoder',target_means=[0.0, 0.0, 0.0, 0.0],target_stds=[0.1, 0.1, 0.2, 0.2]),reg_class_agnostic=False,loss_cls=dict(type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),loss_bbox=dict(type='L1Loss', loss_weight=1.0))),train_cfg=dict(rpn=dict(assigner=dict(type='MaxIoUAssigner',pos_iou_thr=0.7,neg_iou_thr=0.3,min_pos_iou=0.3,match_low_quality=True,ignore_iof_thr=-1),sampler=dict(type='RandomSampler',num=256,pos_fraction=0.5,neg_pos_ub=-1,add_gt_as_proposals=False),allowed_border=-1,pos_weight=-1,debug=False),rpn_proposal=dict(nms_pre=2000,max_per_img=1000,nms=dict(type='nms', iou_threshold=0.7),min_bbox_size=0),rcnn=dict(assigner=dict(type='MaxIoUAssigner',pos_iou_thr=0.5,neg_iou_thr=0.5,min_pos_iou=0.5,match_low_quality=False,ignore_iof_thr=-1),sampler=dict(type='RandomSampler',num=512,pos_fraction=0.25,neg_pos_ub=-1,add_gt_as_proposals=True),pos_weight=-1,debug=False)),test_cfg=dict(rpn=dict(nms_pre=1000,max_per_img=1000,nms=dict(type='nms', iou_threshold=0.7),min_bbox_size=0),rcnn=dict(score_threshold=0.05,nms=dict(type='nms', iou_threshold=0.5),max_per_img=100)))

模型训练

使用以下命令开始训练模型:

python tools/train.py configs/faster_rcnn_r50_fpn_1x.py

模型评估

训练完成后,可以使用以下命令评估模型的性能:

python tools/test.py configs/faster_rcnn_r50_fpn_1x.py checkpoints/epoch_12.pth --eval bbox

结论

MMDetection提供了一个模块化和可扩展的框架,使得用户可以轻松地进行个性化配置和二次开发。通过上述步骤,你可以使用MMDetection进行目标检测任务,从环境配置到数据准备,再到模型训练和评估,整个过程都有详细的指导。无论是追求速度还是效果,MMDetection都能提供相应的解决方案。


最后,说一个好消息,如果你正苦于毕业设计,点击下面的卡片call我,赠送定制版的开题报告和任务书,先到先得!过期不候!

相关文章:

Python知识点:基于Python技术,如何使用MMDetection进行目标检测

开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 使用MMDetection进行目标检测的Python技术详解 MMDetection是一个开源的目标检测…...

Chromium HTML Tags与c++接口对应关系分析

一、HTML 标签(HTML Tags) <a> <head> <img>等等这些标签在c中的接口是如何定义和查找的呢&#xff1f; 更多标签参考&#xff1a; HTML <a> target 属性 (w3school.com.cn) 二、html_tag_names.json5 (third_party\blink\renderer\core\html\htm…...

React Fiber 解析:前端性能提升密码

文章目录 背景React 采用 fiber 主要为了解决哪些问题&#xff1f;性能问题&#xff1a;用户体验问题&#xff1a; 为什么在 React 15 版本中性能会差&#xff1a;浏览器绘制原理&#xff1a;react 15 架构和问题 那么 fiber 怎么解决了这个问题&#xff1f;任务“大”的问题递…...

【吊打面试官系列-微服务面试题】微服务架构如何运作?

大家好&#xff0c;我是锋哥。今天分享关于【微服务架构如何运作&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 微服务架构如何运作&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 微服务架构是一种将单一应用程序构建为一组小型、独…...

Windows系统编程 - 目录操作、磁盘、卷信息

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天继续讲解Windows系统编程的相关知识:目录操作 目录 目录操作 创建目录 通过CreateDirectory函数创建目录 原型: BOOL CreateDirectoryA([in] LPCSTR lpPathName,//目录名称[in, opt…...

搭建SaaS知识库:优化教育机构的在线教学效能

随着信息技术的飞速发展&#xff0c;教育领域正经历着前所未有的变革。在线教学已成为教育机构提供灵活学习体验、扩大覆盖范围、提升教学效率的重要手段。然而&#xff0c;如何在海量资源与复杂教学场景中高效管理知识&#xff0c;确保教学质量&#xff0c;成为教育机构面临的…...

CSS中backdrop-filter详解

文章目录 CSS中backdrop-filter详解一、引言二、backdrop-filter基础1、基本概念1.1、基本语法 2、滤镜函数2.1、代码示例 三、实际应用1、创建模糊背景1.1、代码示例 2、结合其他CSS属性2.1、代码示例 四、总结 CSS中backdrop-filter详解 一、引言 在现代网页设计中&#xf…...

AI测试入门:理解 LLM 的基准测试(Benchmark)

AI测试入门:理解 LLM 的基准测试(Benchmark) 1. 基准测试的定义2. 基准测试的目的3. 基准测试的常用指标4. 基准测试的流程5. 常用的AI基准测试框架总结1. 基准测试的定义 LLM 的基准测试是一种评估 LLM 的标准化方法,通过使用预定义的数据集、任务和评估指标,对LLM 在特定…...

InternVid:用于多模态视频理解与生成的大规模视频-文本数据集 | ICLR Spotlight

InternVid 是一个开源的大规模视频-文本数据集&#xff0c;旨在促进视频理解和生成任务的发展&#xff0c;由上海人工智能实验室与南京大学、中国科学院等单位联合发布&#xff0c;相关的工作已经被ICLR2024接收。它包含超过 700 万个视频&#xff0c;总时长近 76 万小时&#…...

Hive数仓操作(十)

一、Hive 分页查询 在大数据处理中&#xff0c;分页查询是非常常见的需求。Hive 提供了 LIMIT 和 OFFSET 关键字来方便地进行分页操作。本文将详细介绍它们的用法。 1. 基本用法 LIMIT&#xff1a;用于限制查询结果的行数。OFFSET&#xff1a;用于指定从哪一行开始检索。 2…...

Android 扩大View的点击区域

文章目录 Android 扩大View的点击区域使用padding属性使用TouchDelegate使用getLocationOnScreen监听 Android 扩大View的点击区域 使用padding属性 通过设置 padding 属性扩大点击区域。 使用&#xff1a; <?xml version"1.0" encoding"utf-8"?&…...

[Qt学习笔记] 解决QTextEdit数据过多UI卡死问题

背景问题 在项目中使用QTextEdit显示软件的日志信息&#xff0c;由于在连续输出日志信息&#xff0c;刚开始QTextEdit显示没什么问题&#xff0c;长时间就会出现UI界面卡死&#xff0c;内存占用变高。晚上查了说QTextEdit的append函数如果不释放会累计增加内存&#xff0c;包括…...

OgreNext高级材质中增加线宽,点大小,虚线模式绘制支持

修改Ogre高级材质系统&#xff0c;增加线宽&#xff0c;点大小&#xff0c;虚线模式&#xff0c;虚线参数的支持,效果如下&#xff1a; 需要修改的代码文件如下&#xff1a; 修改如下 代码文本&#xff1a; //范围[0.2 - 51] 0.2 * [0,255];Ogre::uint8 mLineWidth;//范围[…...

STM32中的DMA数据转运——下篇

STM32中的DMA数据转运——上篇-CSDN博客 在上篇文章中&#xff0c;我们讨论了STM32中的DMA&#xff08;直接存储器访问&#xff09;及其工作原理、存储器类型和总线设计。接下来&#xff0c;我们将更深入地探讨DMA的具体配置方法、常见应用场景以及一些实际设计中的注意事项。…...

51单片机的智能小区安防系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块时钟模块温度传感器烟雾传感器CO传感器红外感应传感器IC卡蓝牙继电器按键、蜂鸣器、LED等模块构成。适用于智能小区安防、智能家居安防等相似项目。 可实现功能: 1、LCD1602实时显示北京时间、温度、烟雾浓度和CO浓…...

数仓建模流程

数仓建模简介 一句话总结 数仓建模中的“建模”是一个将数据有序组织和存储起来的过程&#xff0c;旨在提高数据的使用效率和降低使用成本。 详细描述 在数仓建模中&#xff0c;“建模”指的是构建数据模型&#xff0c;也就是数据的组织和存储方法。数据模型强调从业务、数…...

Neo4j CQL语句 使用教程

CREATE命令 : CREATE (<node-name>:<label-name>{ <Property1-name>:<Property1-Value>........<Propertyn-name>:<Propertyn-Value>} )字段说明 CREATE (dept:Dept { deptno:10,dname:“Accounting”,location:“Hyderabad” })&#…...

STM32-HAL库 驱动DS18B20温度传感器 -- 2024.10.8

目录 一、教程简介 二、驱动理论讲解 三、CubeMX生成底层代码 四、Keil5编写代码 五、实验结果 一、教程简介 本教程面向初学者&#xff0c;只介绍DS18B20的常用功能&#xff0c;但也能满足大部分的运用需求。跟着本教程操作&#xff0c;可在10分钟内解决DS18b20通信难题。…...

HTML 符号

HTML 符号 HTML(超文本标记语言)是一种用于创建网页的标准标记语言。它使用一系列的标签来描述网页的结构和内容。HTML 符号,通常指的是 HTML 标签,是构成 HTML 文档的基础。本文将详细介绍 HTML 符号的概念、种类、用途以及如何在网页设计中正确使用它们。 HTML 符号的概…...

编译后的MySQL安装

MySQL安装 1.下载网址2.下载方式3.配置配置环境变量修改配置文件初始化安装服务启动服务测试修改 Mysql 默认密码 1.下载网址 https://dev.mysql.com/downloads/mysql/2.下载方式 选择对应版本下载 mysql-xxx-winx64.zip&#xff0c;该压缩包为编译后文件&#xff0c;并非源码…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor

1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...

字符串哈希+KMP

P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...