使用mmdetection(backbone为HRNet、VOC数据集格式)

这篇博客详细介绍了如何在Windows环境下利用MMDetection框架训练自定义的VOC数据集。首先,介绍了安装mmdetection的步骤,接着讲解了VOC数据集的目录结构和内容准备。然后,对mmdetection的相关文件进行修改,包括class_names.py、voc.py和配置文件,以适应新的类别和数据集。在训练前,由于遇到CUDA内存不足的问题,博主尝试调整了内存分配但未成功。最后,提供了训练命令。尽管遇到内存问题,该文仍为使用MMDetection训练目标检测模型提供了一步步的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


参考链接


安装mmdetection

查看另一篇博客:安装mmdetection(Windows环境下)


VOC数据集准备

mmdetection
├── mmdet
├── tools
├── configs
├── data     #手动创建data、VOCdevkit、VOC2007、Annotations、JPEGImages、ImageSets、Main这些文件夹
│   ├── VOCdevkit(数据集名称)
│   │   ├── VOC2007
│   │   │   ├── Annotations         #把valid.txt、train.txt对应的xml文件放在这
│   │   │   ├── JPEGImages          #把valid.txt、train.txt对应的图片放在这
│   │   │   ├── ImageSets
│   │   │   │   ├── Main
│   │   │   │   │   ├── valid.txt 
│   │   │   │   │   ├── train.txt

可查看我的另一篇博客:划分数据集为VOC数据格式


修改相关文件

(1) 修改class_names.py文件

修改路径:mmdetection/mmdet/core/evaluation/class_names.py

修改内容:将voc_classes的返回值改为要训练数据集的类别名称。

在这里插入图片描述


(2) 修改voc.py文件

修改路径:mmdetection/mmdet/datasets/voc.py

修改内容:将VOCDataset中的CLASSES改为对应训练数据集的类别集合。

在这里插入图片描述


(3) 修改配置文件

配置文件路径:mmdetection/configs

我要使用的是faster_rcnn_hrnetv2p_w40_2x_coco.py,经过层层找上去,最终确定了更改faster_rcnn_r50_fpn_1x_coco.py中对应的model等文件的配置。

在这里插入图片描述


(3.1) 更改 models/faster_rcnn_r50_fpn.py 中的 num_classes

在这里插入图片描述


(3.2) 更改 datasets/coco_detection.py 中dataset_type、data_root、img_scale、ann_file、img_prefix变量。(我还改了:workers_per_gpu=0)


❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀

接下来的两步我就没跟着改了,只是粘图在这里

(3.3) schedules中新建schedule_xxx_voc.py设置对应优化器


(3.4) 新建xxx_voc_runtime.py文件设置整体超参


重新编译

修改完后,训练之前需要重新编译,不然会出现“AssertionError: The num_classes (20) in Shared2FCBBoxHead of MMDataParallel does not matches the length of CLASSES 80) in RepeatDataset"的报错。

编译命令如下:

python setup.py install

开始训练

python tools/train.py configs/hrnet/faster_rcnn_hrnetv2p_w40_2x_coco.py


还没有成功,呜呜呜,报显存错误了,尝试过改以下两个位置的大小,可惜失败了。

错误:RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 4.00 GiB total capacity; 2.45 GiB already allocated; 0 bytes free; 2.49 GiB reserved in total by PyTorch)

可能有用的链接:

在这里插入图片描述
在这里插入图片描述

### 使用mmdetection框架训练VOC数据集的方法 为了使用 mmdetection 框架训练 Pascal VOC 数据集,需遵循一系列配置和操作流程。首先,准备阶段涉及将个人的数据集转换为符合 mmdetection 需求的标准格式。 #### 准备工作 确保数据集按照 Pascal VOC 的标准结构组织[^1]。这通常意味着创建特定目录用于存储图片文件、标注文件等,并且每个图像对应一个 XML 文件描述其中的对象位置及其类别信息。通过这种方式可以利用 mmdetection 已经编写好的 DataLoader 来加载数据而无需额外编码实现。 #### 安装依赖库与设置环境 安装最新的 mmdetection 版本以及必要的依赖项是必不可少的操作之一。官方文档提供了详细的指导说明,包括 Python 环境配置、CUDA 和 PyTorch 的兼容性确认等内容[^3]。 #### 修改配置文件 针对具体的任务需求调整预设模型参数至关重要。一般情况下,默认配置已经能够满足大部分场景下的应用;但对于特殊用途,则可能需要修改 backbone 结构、优化器选项或是学习率调度策略等方面的内容。此外,在 `data` 字段下指定路径指向本地的 VOC 数据集也很重要[^4]。 ```yaml # config.py 示例片段 model = dict( type='FasterRCNN', pretrained='torchvision://resnet50', ... ) data = dict( samples_per_gpu=2, workers_per_gpu=2, train=dict( type='VOCDataset', ann_file=[ 'data/VOCdevkit/VOC2007/ImageSets/Main/trainval.txt', 'data/VOCdevkit/VOC2012/ImageSets/Main/trainval.txt' ], img_prefix='data/VOCdevkit/', pipeline=train_pipeline), val=dict(...), test=dict(...) ) ``` #### 开始训练过程 一切就绪后就可以启动训练脚本了。命令行工具使得这一环节变得简单明了: ```bash python tools/train.py configs/faster_rcnn_r50_fpn_1x_voc0712.py --work-dir work_dirs/voc_train/ ``` 此命令会读取给定的配置文件并执行相应的训练逻辑,同时保存日志记录以便后续查看进度或调试问题所在。 --- ### 评估指标介绍 当完成了模型训练之后,对其进行性能评测同样不可或缺。常用的评价方法主要包括以下几个方面: - **平均精度均值 (mAP)**:这是衡量目标检测算法效果最常用也是最重要的度量方式。它综合考虑了不同类别的预测准确性,反映了整体识别能力的好坏程度。 - **精确率(Precision) & 召回率(Recall)**:这两个概念分别表示正确分类的比例以及实际正样本被召回的数量占比情况。二者之间往往存在权衡关系——提高一方可能会降低另一方的表现水平。 - **交并比(IoU)**:用来计算两个边界框之间的重叠部分面积占总面积比例大小的一种几何距离测度法。IoU 值越高表明匹配越紧密,反之则较差。 以上提到的各项统计数值都可以借助内置函数轻松获取到,具体可参阅官方 API 文档获得更详尽的帮助材料。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

孟孟单单

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

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

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

打赏作者

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

抵扣说明:

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

余额充值