网站建设个人博客,长沙招聘网站哪个最好,wordpress赞赏码,点开文字进入网站是怎么做的安装和测试#xff1a;
GET STARTED — MMDetection 3.3.0 documentation
mmdetection从配置到训练_openmim-CSDN博客 训练voc数据集#xff1a;
mmdetection训练自己的VOC数据集及常见问题_mmdetection训练voc数据集-CSDN博客 训练自己的COCO数据集及常见问题见下文…安装和测试
GET STARTED — MMDetection 3.3.0 documentation
mmdetection从配置到训练_openmim-CSDN博客 训练voc数据集
mmdetection训练自己的VOC数据集及常见问题_mmdetection训练voc数据集-CSDN博客 训练自己的COCO数据集及常见问题见下文
mmdetection训练自己的COCO数据集及常见问题_不瘦8斤的妥球球饼的博客-CSDN博客
目录
一、环境安装
二、训练测试步骤
三、常见问题
batch size设置
学习率和epoch的修改
训练过程loss为nan的问题
GPU out of memory
如果自己的voc数据集图片是 png/tif 文件
训练生成的.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
二、训练测试步骤 步骤一准备数据。首先根据规范的VOC数据集导入到项目目录下如下所示 VOC数据集格式介绍_不瘦8斤的妥球球饼的博客-CSDN博客_voc格式
mmdetection ├── mmdet ├── tools ├── configs ├── data │ ├── VOCdevkit │ │ ├── VOC2007 │ │ │ ├── Annotations │ │ │ ├── JPEGImages │ │ │ ├── ImageSets │ │ │ │ ├── Main │ │ │ │ │ ├── test.txt │ │ │ │ │ ├── trainval.txt 推荐以软连接的方式创建
cd mmdetection mkdir data ln -s $VOC2007_ROOT data/VOCdevkit 其中$VOC2007_ROOT需改为你的VOC2007数据集根目录。
步骤二修改config.py
在configs文件夹中选择自己要训练的config文件例如faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py
选好后打开可以看到faster_rcnn_r50_fpn_1x_coco.py的基础配置如下
下需要修改前两个文件如红框所示
1. 退到上级目录找到_base_,找到faster_rcnn_r50_fpn.py修改原VOC类的数目
2. 1把‘../_base_/datasets/coco_detection.py’修改为‘../_base_/datasets/voc0712.py’
2datesets中VOC0712.py修改成你的数据源 步骤三修改mmdetection/mmdet/datasets目录下voc.py
修改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
步骤五运行python setup.py install重新编译
步骤六运行训练代码
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(interval1, metricmAP)
--work-dir ${WORK_DIR} 覆盖配置文件中指定的工作目录
--resume-from ${CHECKPOINT_FILE} 程序中断后继续训练从先前的检查点文件恢复
--options Keyvalue : 在使用的配置中覆盖一些设置。
步骤七测试
# single-gpu testing python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}] [--eval ${EVAL_METRICS}] [--show] 三、常见问题 batch size设置 学习率和epoch的修改 重要配置文件中的默认学习率lr0.02是8个GPU和samples_per_gpu2批大小 8 * 2 16。根据线性缩放规则如果您使用不同的GPU或每个GPU的有多少张图像则需要按批大小设置学习率例如对于4GPU* 2 img / gpu8lr 8/16 * 0.02 0.01 对于16GPU* 4 img / gpu64lr 64/16 *0.02 0.08 。
计算公式lr (gpu_num * samples_per_gpu) / 16 * 0.02
训练过程loss为nan的问题 常见问题解答 — MMDetection 2.23.0 文档
1.检查数据的标注是否正常
长或宽为 0 的框可能会导致回归 loss 变为 nan一些小尺寸宽度或高度小于 1的框在数据增强例如instaboost后也会导致此问题。 因此可以检查标注并过滤掉那些特别小甚至面积为 0 的框并关闭一些可能会导致 0 面积框出现数据增强。
2.降低学习率
一般出现loss nan无非是网络传输的梯度过大导致的所以首先考虑在模型配置schedule_1x.py里减小模型的学习率。可是学习率调小100倍甚至10000倍还出现nan的情况所以考虑其他原因导致。先排除学习率的影响将学习率设为0loss依旧nan然后就可以尝试下一个了。
3.延长 warm up 的时间
一些模型在训练初始时对学习率很敏感可以在模型配置schedule_1x.py里把 warmup_iters 从 500 更改为 1000 或 2000。
4.梯度裁剪
一些模型需要梯度裁剪来稳定训练过程。 默认的 grad_clip 是 None, 你可以在模型配置schedule_1x.py里设置 optimizer_configdict(_delete_True, grad_clipdict(max_norm35, norm_type2)) 如果你的 config 没有继承任何包含 optimizer_configdict(grad_clipNone), 你可以直接设置optimizer_configdict(grad_clipdict(max_norm35, norm_type2))。
5.不使用fp16训练
如果用了fp16训练可尝试将其注释掉。
# fp16 dict(loss_scale512.) GPU out of memory 常见问题解答 — MMDetection 2.23.0 文档
存在大量 ground truth boxes 或者大量 anchor 的场景可能在 assigner 会 OOM。 您可以在 assigner 的配置中设置 gpu_assign_thrN这样当超过 N 个 GT boxes 时assigner 会通过 CPU 计算 IOU。
在 backbone 中设置 with_cpTrue。 这使用 PyTorch 中的 sublinear strategy 来降低 backbone 占用的 GPU 显存。
使用 config/fp16 中的示例尝试混合精度训练。loss_scale 可能需要针对不同模型进行调整。
如果自己的voc数据集图片是 png/tif 文件 在/mmdet/datasets/xml_style.py 51行.jpg 可以改为.png/.tif。
训练生成的.pth文件占用较大内存 #保存模型可修改configs/base/default_runtime.py文件中
checkpoint_config dict(interval10) # interval10 表示10个epoch保存一次 # 保存最优模型 checkpointdict(typeCheckpointHook,interval50,save_bestcoco/bbox_mAP,rulegreater
),