mmdetection训练自己的COCO数据集及常见问题

这篇具有很好参考价值的文章主要介绍了mmdetection训练自己的COCO数据集及常见问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

训练自己的VOC数据集及常见问题见下文:

mmdetection训练自己的VOC数据集及常见问题_不瘦8斤的妥球球饼的博客-CSDN博客_mmdetection训练voc


目录

一、环境安装

二、训练测试步骤

三、常见问题

batch size设置

学习率和epoch的修改

训练过程loss为nan的问题

GPU out of memory

保存最佳权重文件

训练生成的.pth文件占用较大内存


一、环境安装

代码:GitHub - open-mmlab/mmdetection: OpenMMLab Detection Toolbox and Benchmark

官方安装教程:Prerequisites — MMDetection 2.23.0 documentation

或者mmdetection/get_started.md at master · open-mmlab/mmdetection · GitHub

二、训练测试步骤

步骤一:准备数据。首先根据规范的COCO数据集导入到项目目录下,如下所示:

mmdetection
├── mmdet
├── tools
├── configs
├── data
│ ├── coco
│ │ ├── annotations(放json文件train,val,test)
│ │ ├── train2017(放图片)
│ │ ├── val2017(放图片)
│ │ ├── test2017(放图片)

推荐以软连接的方式创建:

cd mmdetection
mkdir data
ln -s $COCO2017_ROOT data/coco

其中,$COCO2017_ROOT需改为你的coco数据集根目录。

自定义的数据集可借鉴一个大佬的.xml转为coco格式的.json文件代码:把voc格式的标注文件.xml转为coco格式的.json文件_ming.zhang的博客-CSDN博客_pascal voc标注格式

#注意:

  1. 将图片和.xml文件放在同一文件夹下
  2. 其中xml_list = glob.glob(xml_dir +"/*.xml")中glob.glob要使用绝对路径。

运行该代码可将数据集按照9:1分成训练集和测试集。

步骤二:修改config.py

在configs文件夹中选择自己要训练的config文件,例如:faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py

选好后,打开可以看到faster_rcnn_r50_fpn_1x_coco.py的基础配置如下:

mmdetection训练自己的COCO数据集及常见问题

需要修改前两个文件(如红框所示):

1. 退到上级目录找到_base_,找到faster_rcnn_r50_fpn.py,修改原COCO类的数目:

mmdetection训练自己的COCO数据集及常见问题

2. 在../_base_/datasets/coco_detection.py修改成你的数据源:

mmdetection训练自己的COCO数据集及常见问题

步骤三:修改mmdetection/mmdet/datasets目录下coco.py

mmdetection训练自己的COCO数据集及常见问题

修改CLASSES成自己的类别数,如果是一个类别,需要写成CLASSES = ('person',)【需要加一个逗号】,否则会出现 “AssertionError: CLASSES in RepeatDatasetshould be a tuple of str.Add comma if number of classes is 1 as CLASSES = (person,)” 的错误。

步骤四:修改mmdetection/mmdet/core/evaluation目录下class_names.py

mmdetection训练自己的COCO数据集及常见问题

步骤五:运行python setup.py install,重新编译

mmdetection训练自己的COCO数据集及常见问题

步骤六:运行训练代码

1. 使用单个GPU进行训练

python ./tools/train.py ${CONFIG_FILE} [optional arguments]
python ./tools/train.py configs/faster_rcnn/faster_rcnn_r50_fpn.py  --work_dir models

2.使用多个GPU进行训练

./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [optional arguments]
./tools/dist_train.sh  configs/faster_rcnn/faster_rcnn_r50_fpn.py

[optional arguments]  可选参数

--no-validate  : 不建议使用,代码中每隔K(默认为1)执行评估,可以在configs/_base_/datasets/voc0712.py 修改evaluation = dict(interval=1, metric='mAP')

--work-dir ${WORK_DIR}   覆盖配置文件中指定的工作目录

--resume-from ${CHECKPOINT_FILE}   程序中断后继续训练,从先前的检查点文件恢复

--options 'Key=value'   :  在使用的配置中覆盖一些设置。

步骤七:测试:

# single-gpu testing
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}] [--eval ${EVAL_METRICS}] [--show]

三、常见问题

batch size设置

mmdetection训练自己的COCO数据集及常见问题

学习率和epoch的修改

mmdetection训练自己的COCO数据集及常见问题

重要:配置文件中的默认学习率(lr=0.02)是8个GPU和samples_per_gpu=2(批大小= 8 * 2 = 16)。根据线性缩放规则,如果您使用不同的GPU或每个GPU的有多少张图像,则需要按批大小设置学习率,例如,对于4GPU* 2 img / gpu=8,lr =8/16 * 0.02 = 0.01 ;对于16GPU* 4 img / gpu=64,lr =64/16 *0.02 = 0.08 。

计算公式:lr = (gpu_num * samples_per_gpu) / 16 * 0.02

mmdetection训练自己的COCO数据集及常见问题

训练过程loss为nan的问题

常见问题解答 — MMDetection 2.23.0 文档

1.检查数据的标注是否正常

长或宽为 0 的框可能会导致回归 loss 变为 nan,一些小尺寸(宽度或高度小于 1)的框在数据增强(例如,instaboost)后也会导致此问题。 因此,可以检查标注并过滤掉那些特别小甚至面积为 0 的框,并关闭一些可能会导致 0 面积框出现数据增强。

2.降低学习率

一般出现loss nan,无非是网络传输的梯度过大导致的,所以首先考虑在模型配置schedule_1x.py里减小模型的学习率。可是学习率调小100倍甚至10000倍,还出现nan的情况,所以考虑其他原因导致。先排除学习率的影响,将学习率设为0,loss依旧nan,然后就可以尝试下一个了。

3.延长 warm up 的时间

一些模型在训练初始时对学习率很敏感,可以在模型配置schedule_1x.py里把 warmup_iters 从 500 更改为 1000 或 2000。

4.梯度裁剪

一些模型需要梯度裁剪来稳定训练过程。 默认的 grad_clip 是 None, 你可以在模型配置schedule_1x.py里设置 optimizer_config=dict(_delete_=True, grad_clip=dict(max_norm=35, norm_type=2)) 如果你的 config 没有继承任何包含 optimizer_config=dict(grad_clip=None), 你可以直接设置optimizer_config=dict(grad_clip=dict(max_norm=35, norm_type=2))

5.不使用fp16训练

如果用了fp16训练,可尝试将其注释掉。

# fp16 = dict(loss_scale=512.)

GPU out of memory

常见问题解答 — MMDetection 2.23.0 文档

  1. 存在大量 ground truth boxes 或者大量 anchor 的场景,可能在 assigner 会 OOM。 您可以在 assigner 的配置中设置 gpu_assign_thr=N,这样当超过 N 个 GT boxes 时,assigner 会通过 CPU 计算 IOU。

  2. 在 backbone 中设置 with_cp=True。 这使用 PyTorch 中的 sublinear strategy 来降低 backbone 占用的 GPU 显存。

  3. 使用 config/fp16 中的示例尝试混合精度训练。loss_scale 可能需要针对不同模型进行调整。

保存最佳权重文件

evaluation = dict(interval=1, metric='bbox')改为

evaluation = dict(interval=1, metric='bbox', save_best='auto')

训练生成的.pth文件占用较大内存

可修改configs/base/default_runtime.py文件中:

checkpoint_config = dict(interval=10) # interval=10 表示10个epoch保存一次

参考链接:

使用mmdetection中的YOLOv3训练自己的数据集_菜菜2020的博客-CSDN博客_mmdetection yolov3文章来源地址https://www.toymoban.com/news/detail-463521.html

到了这里,关于mmdetection训练自己的COCO数据集及常见问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习目标检测数据VisDrone2019(to yolo / voc / coco)---MMDetection数据篇

    配备摄像头的无人机(或通用无人机)已被快速部署到广泛的应用领域,包括农业、航空摄影、快速交付和监视。因此,从这些平台上收集的视觉数据的自动理解要求越来越高,这使得计算机视觉与无人机的关系越来越密切。我们很高兴为各种重要的计算机视觉任务展示一个大

    2024年02月04日
    浏览(35)
  • Yolov5+win10+pytorch+android studio实现安卓实时物体检测实战(coco128/coco/自己的训练集)

    在这里感谢各个大佬的参考文献及资料。在我学习深度学习的过程中,我参考了如下网站: Win10+PyTorch+YOLOv5 目标检测模型的训练与识别 | | 洛城风起 YOLOv5 COCO数据集 训练 | 【YOLOv5 训练】_墨理学AI的博客-CSDN博客_yolov5训练coco数据集 系统环境:win10 cuda 版本:11.3 Cuda环境配置 在

    2023年04月11日
    浏览(29)
  • TTS | 语音合成常见数据集及数据格式详情

    本文主要详细介绍了语音中最常见的数据集(包含各个语种),及其格式等~ 目录 1.外语数据集 1.1.LJSpeech 单人 1.2.JSUT 1.3.RUSLAN 1.4.RyanSpeech 1.5.VocBench 1.6.Arabic Speech Corpus 1.7.Silent Speech EMG 1.8.Hi-Fi Multi-Speaker English TTS Dataset 1.9.KSS 单人 1.10.VCTK 多人 1.11.LibriTTS 多人 2.多任务数据集 2

    2024年02月05日
    浏览(28)
  • 深度学习进阶篇[9]:对抗生成网络GANs综述、代表变体模型、训练策略、GAN在计算机视觉应用和常见数据集介绍,以及前沿问题解决

    【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、

    2024年02月08日
    浏览(80)
  • SSM框架训练 实现各个功能时遇到的常见问题

    快速复制当前代码到下一行:ctrl+D 格式化代码(快速整理代码):ctril+alt+L 一步一步来,后续会不停添加功能。 先创建项目结构:搭建框架 (36条消息) SSM框架模板(高配:一次性配完所有需要的配置文件)_one day321的博客-CSDN博客 登录与注册 功能实现 的问题: 登录很简单,

    2024年02月13日
    浏览(32)
  • 【MMDetection】——训练个人数据集

    mmdet支持COCO格式和VOC格式,能用COCO格式,还是建议COCO的。网上有YOLO转COCO,VOC转COCO,可以自己转换。 在mmdetection代码的根目录下,创建 data/coco 文件夹,按照coco的格式排放好数据集。 annotations 下面是标签文件, train2017 、 val2017 、 test2017 是图片。 第一处: mmdet/core/evalutio

    2024年02月06日
    浏览(40)
  • 【计算机视觉】YOLO 入门:训练 COCO128 数据集

    我们以最近大热的YOLOv8为例,回顾一下之前的安装过程: 这里选择训练的数据集为:COCO128 COCO128是一个小型教程数据集,由COCOtrain2017中的前128个图像组成。 在YOLO中自带的coco128.yaml文件: 1)可选的用于自动下载的下载命令/URL, 2)指向培训图像目录的路径(或指向带有培训

    2024年02月10日
    浏览(27)
  • 如何搭建自己的V Rising自建服务器,以及常见的V Rising服务器问题解决方案

    V rising官方服务器经常无法连接,无法和小伙伴玩耍;如何搭建自己的V rising服务器呢?还可以修改掉落倍率,加快游戏进度,搭建自己的私人服务器。 最近V rising这个游戏很火呀,迫不及待地和小伙伴一起玩;但是,V rising官方的服务器实在是太不稳定:延时高、丢包率高,

    2023年04月18日
    浏览(27)
  • 【v8初体验】利用yolov8训练COCO数据集或自定义数据集

    github地址:https://github.com/ultralytics/ultralytics YOLOv5目前仍然是很受到大家环境的,v8作为v5的升级之作效果的提升也非常明显,但相比YOLOv5确实没有作出较大改进,主要改进如下: Backbone : 主干部分主要是将所有C3模块更换成C2f模块,C2f借鉴了YOLOv7的思想,个人感觉应该是这种多

    2023年04月27日
    浏览(30)
  • MMdetection 环境配置、config文件解析以及训练自定义VOC数据集

    MMDetection是针对目标检测任务推出的一个开源项目,它基于Pytorch实现了大量的目标检测算法,把数据集构建、模型搭建、训练策略等过程都封装成了一个个模块,通过模块调用的方式,我们能够以很少的代码量实现一个新算法,大大提高了代码复用率。本文记录一下关于MMd

    2024年02月14日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包