MMYOLO 目标检测快速入门指南:15分钟完成猫类检测

MMYOLO 目标检测快速入门指南:15分钟完成猫类检测

mmyolo OpenMMLab YOLO series toolbox and benchmark. Implemented RTMDet, RTMDet-Rotated,YOLOv5, YOLOv6, YOLOv7, YOLOv8,YOLOX, PPYOLOE, etc. mmyolo 项目地址: https://gitcode.com/gh_mirrors/mm/mmyolo

目标检测简介

目标检测是计算机视觉中的基础任务之一,它不仅能识别图像中的物体类别,还能精确标定物体的位置(通过边界框表示)。MMYOLO 是一个基于 PyTorch 的 YOLO 系列目标检测开源工具箱,支持多种 YOLO 变体算法。

环境配置

基础环境安装

首先需要准备 Python 和 PyTorch 环境:

conda create -n mmyolo python=3.8 -y
conda activate mmyolo
conda install pytorch torchvision -c pytorch

对于 CPU 用户,可以使用 cpuonly 版本的 PyTorch。

MMYOLO 安装

安装 MMYOLO 及其依赖:

pip install -U openmim
mim install -r requirements/mminstall.txt
mim install -r requirements/albu.txt
mim install -v -e .

注意:建议使用全新虚拟环境以避免与旧版本冲突。

数据集准备

本教程使用一个包含 144 张猫图片的小型数据集,数据已整理为 COCO 格式:

data/cat/
├── annotations/  # 标注文件
│   ├── trainval.json
│   └── test.json
└── images/       # 所有图片

可通过以下命令快速获取数据集:

python tools/misc/download_dataset.py --dataset-name cat --save-dir ./data/cat --unzip --delete

模型配置

我们以 YOLOv5-s 为例,针对小数据集调整了默认配置:

  1. Anchor 调整:根据数据集特点重新计算合适的 anchor
  2. 训练参数:从 8 卡×16 batch size 调整为单卡×12 batch size
  3. 训练周期:从 300 epoch 减少到 40 epoch
  4. Backbone 冻结:固定 backbone 权重防止小数据过拟合

配置文件主要修改项:

_base_ = 'yolov5_s-v61_syncbn_fast_8xb16-300e_coco.py'
data_root = './data/cat/'
class_name = ('cat',)
num_classes = 1
max_epochs = 40
train_batch_size_per_gpu = 12

模型训练

启动训练命令:

python tools/train.py configs/yolov5/yolov5_s-v61_fast_1xb12-40e_cat.py

在 GTX 1660 显卡上,完整训练约需 8 分钟。训练过程中会输出损失值和评估指标。

训练技巧

  1. 恢复训练:添加 --resume 参数可从断点继续训练
  2. 节省显存:使用 --amp 开启混合精度训练
  3. 可视化:支持 WandB 和 TensorBoard 等多种后端

模型测试

评估训练好的模型:

python tools/test.py configs/yolov5/yolov5_s-v61_fast_1xb12-40e_cat.py \
                   work_dirs/yolov5_s-v61_fast_1xb12-40e_cat/epoch_40.pth \
                   --show-dir show_results

测试结果会保存在 show_results 目录,包含预测框与真实框的对比可视化。

特征可视化

MMYOLO 提供了特征图可视化工具,可用于分析模型表现:

# 可视化 backbone 特征
python demo/featmap_vis_demo.py data/cat/images/IMG_20221020_112705.jpg \
                               configs/yolov5/yolov5_s-v61_fast_1xb12-40e_cat.py \
                               work_dirs/yolov5_s-v61_fast_1xb12-40e_cat/epoch_40.pth \
                               --target-layers backbone

# Grad-CAM 可视化
python demo/boxam_vis_demo.py data/cat/images/IMG_20221020_112705.jpg \
                             configs/yolov5/yolov5_s-v61_fast_1xb12-40e_cat.py \
                             work_dirs/yolov5_s-v61_fast_1xb12-40e_cat/epoch_40.pth \
                             --target-layer neck.out_layers[2]

模型部署

MMYOLO 提供 EasyDeploy 工具简化模型部署流程:

  1. 导出 ONNX 模型
python projects/easydeploy/tools/export_onnx.py \
    configs/yolov5/yolov5_s-v61_fast_1xb12-40e_cat.py \
    work_dirs/yolov5_s-v61_fast_1xb12-40e_cat/epoch_40.pth \
    --work-dir work_dirs/yolov5_s-v61_fast_1xb12-40e_cat \
    --img-size 640 640 --batch 1 --device cpu --simplify --opset 11
  1. TensorRT 转换
python projects/easydeploy/tools/build_engine.py \
    work_dirs/yolov5_s-v61_fast_1xb12-40e_cat/end2end.onnx \
    --img-size 640 640 --device cuda:0
  1. 推理演示
python projects/easydeploy/tools/image-demo.py \
    data/cat/images/IMG_20210728_205312.jpg \
    configs/yolov5/yolov5_s-v61_fast_1xb12-40e_cat.py \
    work_dirs/yolov5_s-v61_fast_1xb12-40e_cat/end2end.engine \
    --device cuda:0

总结

通过本教程,我们完成了从环境配置、数据准备、模型训练到部署的全流程。MMYOLO 提供了一套完整的工具链,即使是小数据集也能快速实现目标检测任务。对于实际应用场景,可以根据需求调整模型结构和训练参数以获得更好的性能。

mmyolo OpenMMLab YOLO series toolbox and benchmark. Implemented RTMDet, RTMDet-Rotated,YOLOv5, YOLOv6, YOLOv7, YOLOv8,YOLOX, PPYOLOE, etc. mmyolo 项目地址: https://gitcode.com/gh_mirrors/mm/mmyolo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍虎州Spirited

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值