1. 建立voc数据集
Annotations 放置图像标注 .xml
JPEGImages 放置图像 .jpg
使用脚本,脚本链接:注意修改
划分数据集,ImageSets/Main/train.txt,trainval.txt,test.txt,val.txt 放置文件名,不带后缀
脚本上传到GitHub ,注意修改:https://github.com/ghostype98/tools/blob/main/make_txt.py
参考链接:https://blog.youkuaiyun.com/weixin_42447868/article/details/105675158
2. 下载预训练权重
建立mmdetection/checkpoints目录,下载对应的预训练权重,
权重文件链接
(1)configs对应网络里的README.md 进入后可以通过cfg文件验证对应的weight
例如 configs/fcos/README.md 根据config 对应 model 避免下错
(2)https://mmdetection.readthedocs.io/zh_CN/v2.19./model_zoo.html#id2
3. 修改配置文件
3.1mmdet/core/evalution/class_names.py #voc_classes 修改类别
3.2mmdet/datasets/voc.py #一个类要加 逗号,修改类别,
3.3config/ _base_/models/faster_rcnn.py #根据自己需要的网络更换
1.num_classes #类别数
2.checkpoint=checkpoints/...pth
#使用预训练模型,或者3.5.5load_from 中修改
3.4config/ _base_/datasets/voc0712.py
1.注释掉line41中,voc2012
2.修改训练、验证、测试 txt路径:根据自己路径修改
3.samples_per_gpu #每个gpu检测几张图片,显卡内存不足可以调小
workers_per_gpu #使用几个线程
4.修改图像尺寸 img_scale , 显卡内存不足可以调小
5.pipeline 图像在线增强策略
3.5configs/_base_/default_runtime.py
1.checkpoint_config #多少epoch 保存一次模型
2.log_config #多少次迭代 输出一次日志
3.hooks=[dict(type='TextLoggerHool'), dict(type='TensorboardLoggerHook')] #使用tensorboard
4.log_level #输出日志等级
5.load_from # 加载lastest.pth 继续训练
6.resume_from #断点继续训练
tips:checkpoints、load_from、resume_from优先级:mmdet默认加载权重优先级别是resume_from(断点加 载),load_from,pretrained的顺序,所以需要从load_from加载预训练权重
3.6configs/schedule/schedule_1x.py #修改超参数
step=[8, 11] #在第8、11epoch 学习率乘0.1
max_epochs #训练epoch
3.7configs/faster_rcnn/fasterrcnn_r50_fpn_1x_coco.py
#根据自己模型修改路径, 除了base外的注释掉,前面VOC0712.py 已经修改过
4.需要重新编译 python setup.py install
5.训练 :参数文件,gpu,输出路径
python tools/train.py configs/faster_rcnn/....py --gpus 1 --work-dir WORK_DIR checkpoints/...pth
6.测试:参数文件,最近的权重文件,输出路径
python tools/test.py configs/faster_rcnn/...py work_dir/lastest.pth --show-dir output --out output/result.pkl
7.工具
7.1绘制结果曲线
python tools/analysis_tools/analyze_logs.py plot_curve workdir/~/888.log.json --keys loss lr --out loss.pdf
7.2过程可视化 前提: 3.5.3
tensorboard --logdir work_dirs/88/88/ #events的上一层目录
7.3测试结果评价 前提:测试命令加–out work_dirs/result.pkl
python tools/analysis_tools/eval_metric.py work_dirs/faster_rcnn_r50_fpn_1x_voc0712.py output/result30.pkl --eval mAP
#测试时保存的pkl,测试时使用的配置文件,需要分析什么数据
tips:1.学习率策略
lr_config = dict(
policy='step', # 优化策略
warmup='linear', # 初始的学习率增加的策略,linear为线性增加
warmup_iters=500, # 在初始的500次迭代中学习率逐渐增加
warmup_ratio=1.0 / 3, # 起始的学习率
step=[8, 11]) # 在第8和11个epoch时降低学习率
————————————————
版权声明:本文为优快云博主「藏云阁主」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/hajlyx/article/details/85991400
tips:2.注意看configs/{自己模型.py}中路径,
网络模型路径
数据集路径
超参数路径
运行记录设置路径 ,有些网络不一样
tips3. 自定义网络模型
稍后更新
tips4.修改损失函数
https://mmdetection.readthedocs.io/zh_CN/latest/tutorials/customize_losses.html
问题
- FileNotFoundError: [Errno 2] No such file or directory ‘/tmp/tmpj7h17tbn/tmp8e5kuzoc.py‘
https://blog.youkuaiyun.com/chrisitian666/article/details/113145902
-
YOLO使用VOC出错。
将VOC转换成 COCO,
2.1将xml转换成json
2.2通过json读取图片放在文件中,
注意修改路径
参考:https://blog.youkuaiyun.com/qq_45584615/article/details/115802378 -
使用coco训练测试的指标
参考https://zhuanlan.zhihu.com/p/399837729
coco得到每一类缺陷AP并且 为AP50 即IoU=0.5
https://zhuanlan.zhihu.com/p/264202374
修改后,需要重新编译
4.VOC2COCO
file:/tools/dataset_converters/pascal_voc.py
modify label_ids = {‘class’:0, ‘class1’:1}
cmd: python tools/dataset_converters/pascal_voc.py data/VOCdevkit/ -o data/coco/
–out-format cocofile2:readjson2splitimg.py
cmd:修改文件路径,直接运行
参考链接
https://bbs.huaweicloud.com/blogs/detail/198417
https://blog.youkuaiyun.com/H_Ben_Ben/article/details/120336630
https://blog.youkuaiyun.com/hajlyx/article/details/85991400
https://blog.youkuaiyun.com/weixin_36642958/article/details/96905866
https://blog.youkuaiyun.com/syysyf99/article/details/96574325
官网介绍https://mmdetection.readthedocs.io/zh_CN/v2.19.0/model_zoo.html