赞
踩
COCO的 全称是Common Objects in Context,是微软团队提供的一个可以用来进行图像识别的数据集。COCO通过在Flickr上搜索80个对象类别和各种场景类型来收集图像。COCO数据集现在有3种标注类型:object instances(目标实例), object keypoints(目标上的关键点), 和image captions(看图说话),使用JSON文件存储。
我的数据集类别共有两个,官方提供的代码中都使用的是coco数据集,虽然我们自定义的数据集也已经转换成coco标准格式了,但是像class_name和class_num这些参数是需要修改的,不然跑出来的模型就不会是你想要的。
需要修改的地方在mmdetection/mmdet/datasets/coco.py。把CLASSES的那个tuple改为自己数据集对应的种类tuple即可。
注意:如果只有一个类,要加上一个逗号,否则将会报错。
在mmdetection/mmdet/core/evaluation/class_names.py修改coco_classes数据集类别,这个关系到后面test的时候结果图中显示的类别名称。例如:
修改/mmdetection/configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py中:model字典中的num_classes、data字典中的img_scale和optimizer中的lr(学习率)。 另外,workers_per_gpu=0。
num_classes=3,#类别数+1
img_scale=(640, 480),#输入图像尺寸的最大边与最小边,train val test这三处都要修改
optimizer = dict(type='SGD', lr=0.0025, momentum=0.9, weight_decay=0.0001) #当gpu数量为8时,lr=0.02;当gpu数量为4时,lr=0.01;我只要一个gpu,所以设置lr=0.0025
注意:套娃的时候修改指向的模型文件。
最后,在mmdetection的目录下新建work_dirs文件夹
(重要:若改动框架源代码后,一定要注意重新编译后再使用。类似这里修改了几个源代码文件后再使用train命令之前,先要编译
sudo python3 setup.py develop
执行上面的指令后才能使修改的mmdetection/mmdet/datasets/coco.py数据集文件生效,然后执行训练指令),实际没有重新编译,也能顺利训练。
python tools/train.py configs/faster_rcnn_r50_fpn_1x_coco.py --validate --work-dir work_dirs --resume-from epoch_1.pth
上面指令中的–validate表示是否在训练中建立checkpoint的时候对该checkpoint进行评估(evaluate)。如果使用是分布式训练,且设置了–validate,会在训练中建立checkpoint的时候对该checkpoint进行评估。(未采用分布式训练时,–validate无效,因为train_detector中调用的mmdet.apis._non_dist_train函数未对validate参数做任何处理)。
训练完之后work_dirs文件夹中会保存下训练过程中的log日志文件、每个epoch的pth文件(这个文件将会用于后面的test测试)
python tools/test.py configs/faster_rcnn_r50_fpn_1x_coco.py work_dirs/epoch_12.pth --out ./result/result_12.pkl --eval bbox
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。