一 资料链接:
1---mmdetection官方地址:
https://github.com/open-mmlab/mmdetection
2---mmdetection安装与入门教程:
https://blog.csdn.net/hajlyx/article/details/83542167
https://blog.csdn.net/long_xuan123/article/details/101266643
3---voc2007数据集格式介绍:
https://blog.csdn.net/qq_38273984/article/details/90749314
4---数据集格式的转换(voc转coco):格式转换箱
https://github.com/spytensor/prepare_detection_dataset
5---mmdetection的configs中的各项参数具体解释:
https://blog.csdn.net/weicao1990/article/details/91879513
https://blog.csdn.net/syysyf99/article/details/96574325
二 mmdetection使用记录
在linux系统安装完mmdetection后,记录一下初次学习使用mmdetection的过程:
1) 数据生成与处理;
2)调节mmdetection输入参数;
3)训练;
4)转换权值文件和预测。
1) 数据生成与处理
检测:
1-1)数据的重命名; 最好按照xxx_000001.jpg,有顺序的重命名;需用到zfill函数。
1-2)数据的标注; labelImg标注(PascalVOC mode下,生成的是XML文件)。
1-3)数据的扩增,利用img_aug(github)可以同时扩增数据和XML。
1-4)装成coco格式的数据。 每张图片有对应的XML文件,在写程序生成CSV文件;
格式转换箱(csv2coco.py)由CSV文件生成coco文件;
1-5)将数据集的文件夹通过【ln -s 数据集文件夹地址 目的地文件夹地址】命令进行软链接。
分割:
1-1)数据的重命名; 最好按照xxx_000001.jpg,有顺序的重命名;需用到zfill函数。
1-2)数据的标注; labelme标注(生成的是json文件,jpg文件和json文件放在同一个文件夹中便于后续读取)。
1-3)数据的扩增,利用img_aug(github,里面有点扩增)可以同时扩增数据和json。 将json文件里的mask对应的边缘坐标读取出来,经img_aug扩增后,再写入新生成的json.
1-4)装成coco格式的数据。 每张图片有对应的json文件,格式转换箱(labelme2coco.py);
2)调节mmdetection输入参数;
在configs/目录下的各个py文件调节参数: configs/faster_rcnn_r50_fpn_1x.py
若用FP16,configs/fp16/faster_rcnn_r50_fpn_fp16_1x.py
其中,变成FP16精度的语句主要为在开头的两句:
# fp16 settings
fp16 = dict(loss_scale=512.)
3)训练; $ python tools/train.py configs/faster_rcnn_r50_fpn_1x.py
其中,若出现:某某py文件中含有不可识别的参数,在第几几行,例如,第111行,含有不可识别的参数meta,=meta。解决办法:删掉该变量。
4)转换权值变量和预测;
4-1)转换权值变量; python tools/publish_model.py ${INPUT_FILENAME} ${OUTPUT_FILENAME} 去除掉一些保存的训练的状态。
4-2)预测; demo.py
其中,
-1) demo.py文件中,目前没有发现可批量预测的值,需要循环输入,单张预测。 模型输出result变量为一个list[numpyarray[50,5],numpyarray[50,5],...],list的长度为目标类别的数量,其中【50,5】,为50个长度为5的矩阵,【xmin,ymin,xmax,ymax,score】.
-2) 若用FP16的预测,需加入: from mmdet.core import wrap_fp16_model wrap_fp16_model(model) 其中,可以从tools/test.py 中 找到。