当前位置: 首页 > 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我,赠送定制版的开题报告和任务书,先到先得!过期不候!

http://www.lryc.cn/news/458479.html

相关文章:

  • Chromium HTML Tags与c++接口对应关系分析
  • React Fiber 解析:前端性能提升密码
  • 【吊打面试官系列-微服务面试题】微服务架构如何运作?
  • Windows系统编程 - 目录操作、磁盘、卷信息
  • 搭建SaaS知识库:优化教育机构的在线教学效能
  • CSS中backdrop-filter详解
  • AI测试入门:理解 LLM 的基准测试(Benchmark)
  • InternVid:用于多模态视频理解与生成的大规模视频-文本数据集 | ICLR Spotlight
  • Hive数仓操作(十)
  • Android 扩大View的点击区域
  • [Qt学习笔记] 解决QTextEdit数据过多UI卡死问题
  • OgreNext高级材质中增加线宽,点大小,虚线模式绘制支持
  • STM32中的DMA数据转运——下篇
  • 51单片机的智能小区安防系统【proteus仿真+程序+报告+原理图+演示视频】
  • 数仓建模流程
  • Neo4j CQL语句 使用教程
  • STM32-HAL库 驱动DS18B20温度传感器 -- 2024.10.8
  • HTML 符号
  • 编译后的MySQL安装
  • Ubuntu安装Apache教程
  • Nginx跳转模块之location与rewrite
  • oracle col命令
  • ESP32接入扣子(Coze) API使用自定义智能体
  • 【JVM】如何判断对象是否可以被回收
  • CloseableHttpResponse 类(代表一个可关闭的 HTTP 响应)
  • C语言编程规范及命名规则
  • Pika 1.5 - Pika Labs最新推出的AI视频生成工具
  • Elon Musk 正式揭晓了特斯拉的Robotaxi和Robovan,这两款自动驾驶新车型成为发布会上的焦点
  • 博客摘录「 springboot+netty+mqtt服务端实现」2024年10月11日
  • Docker小白入门笔记