一、mmdetection简介
二、环境安装
1、安装教程
2、运行demo测试环境是否安装成功
三、训练自定义的dataset
1、准备dataset
2、Training前修改相关文件
3、Training
四、Testing
五、实践中的Tips
六、好资料推荐阅读
再搭建coco的网络中遇到了很多的坑,但是最后你会发现原来他是如此的简单。
1首先原来外我在Pascal VOC进行训练,但是目标检测工具labelme不能够生成XML,生成了的XML不能够使用,于是转换想法,我用了coco
小白总是会犯错误,我以为下贼别人比赛的COCO会对自己有用,但是发现那只是数据集有用而已。
ok
我有自己的数据集。
好的,按照参考的这篇文章的思路https://blog.csdn.net/gaoyi135/article/details/90613895完美解救我。
还有个问题我不理解推荐以软连接的方式创建data文件夹,下面是创建软连接的步骤
cd mmdetection
mkdir data
ln -s $COCO_ROOT data
###其中,$COCO_ROOT需改为你的coco数据集根目录
这句 $COCO_ROOT需要怎么理解。
2、Training前修改相关文件
首先说明的是我的数据集类别一共有4个,分别是:‘Glass_Insulator’, ‘Composite_Insulator’, ‘Clamp’, ‘Drainage_Plate’。且我跑的模型是’configs/faster_rcnn_r50_fpn_1x.py’。
官方提供的代码中都使用的是coco数据集,虽然我们自定义的数据集也已经转换成coco标准格式了,但是像class_name和class_num这些参数是需要修改的,不然跑出来的模型就不会是你想要的。
一些博客例如这个,所提供的方法是按照官方给的定义coco数据集的相关文件,新建文件重新定义自己的数据集和类等,但是其实这是有风险的,我之前按照他们的方法走到最后发现会出现错误,所以最简单便捷且保险的方法是直接修改coco数据集定义文件(官方也是这样建议的)。
1、定义数据种类,需要修改的地方在mmdetection/mmdet/datasets/coco.py。把CLASSES的那个tuple改为自己数据集对应的种类tuple即可。例如:
CLASSES = ('Glass_Insulator', 'Composite_Insulator', 'Clamp', 'Drainage_Plate')
2、接着在mmdetection/mmdet/core/evaluation/class_names.py修改coco_classes数据集类别,这个关系到后面test的时候结果图中显示的类别名称。例如:
def coco_classes():
return [
'Glass_Insulator', 'Composite_Insulator', 'Clamp', 'Drainage_Plate'
]
3、修改configs/faster_rcnn_r50_fpn_1x.py中的model字典中的num_classes、data字典中的img_scale和optimizer中的lr(学习率)。例如:
num_classes=5,#类别数+1
img_scale=(640,478), #输入图像尺寸的最大边与最小边(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
作者:Yee_Ko
来源:CSDN
原文:https://blog.csdn.net/gaoyi135/article/details/90613895
版权声明:本文为博主原创文章,转载请附上博文链接!
*
在生成Annotations的时候也遇到了bug,众说风云,所以自己选择。
上传代码。