Detectron2(AdelaiDet)加载COCO格式自定义数据集

喜欢而已 提交于 2020-12-24 09:20:51

测试环境:
OS: Win10
CUDA: 11.0
pytorch: 1.7.1
GPU: 3060Ti
python:3.8
Detectron: 0.3(笔者可以在win环境成功编译安装detectron2





Detectron2模型数量虽然比mmdetection少,不过有些论文还是用Detectron2做的,因此有必要了解一下如何用Detectron2训练自定义数据集。

关于mmdetection下训练coco格式的自定义数据请移步笔者另一篇博文:mmdetection-v2.3安装配置及训练自定义数据集

以笔者目前的经验来看,要想对自己领域内的图像做目标检测任务,最好的方法是制作成COCO格式数据集,个人习惯用labelimg先制作成voc格式,然后用脚本转换为coco格式,转换脚本可见笔者的github库:https://github.com/ouening/OD_dataset_conversion_scripts 。制作成COCO格式的好处是目前大部分OD框架都支持该数据格式,直接调用API或者简单修改就可以用,当然VOC格式也是基本都支持的,但是COCO在指标评价上更加丰富,VOC只有传统的mAP,COCO指标有AP,AP0.5,AP0.75,APs,APm,APl,AR1,AR10,AR100等。

下面以AdelaiDet(基于Detectron2,需要先安装此库)检测框架为例介绍使用coco格式的自定义数据集训练FCOS模型。

按照教程安装完AdelaiDet之后,我们可以看到该库支持一下几种模型:
在这里插入图片描述
我们进入FCOS-Detection文件夹查看一下FCOS模型相关的配置文件:
在这里插入图片描述
官方帮助文档的教程提示是使用R_50_1x.yaml这个配置文件,打开这个配置文件可以看到依赖于Base-FCOS.yaml这个文件,而这个配置文件就是最基础的,包括了模型结构,数据集,求解器等参数,因此训练自己的数据集需要修改这里的数据集,batch size也可以在此文件修改。



假设我已经制作好了自己的数据集,其组织形式如下:
在这里插入图片描述
在这里插入图片描述

修改训练脚本tools/train_net,在程序开头位置注册数据集信息,代码很简单,因为使用的是coco格式数据集,detectron2提供相关api进行设置,代码如下:

##===============注册自定义数据集================##
from detectron2.data.datasets import register_coco_instances
register_coco_instances("SimpleOD_train", {
   
   }, json_file=r"D:\simpleod\YOLODataset\CocoDataset\annotations\instances_trainval.json",
 image_root = r"D:\simpleod\YOLODataset\CocoDataset\trainval")
register_coco_instances("SimpleOD_test", {
   
   }, r"D:\simpleod\YOLODataset\CocoDataset\annotations\instances_test.json",
 r"D:\simpleod\YOLODataset\CocoDataset\test")

# 设置类别
from detectron2.data import MetadataCatalog
MetadataCatalog.get("SimpleOD_train").thing_classes = ['xianjia','fangzhenchui','insulator']
MetadataCatalog.get("SimpleOD_test").thing_classes = ['xianjia','fangzhenchui','insulator']
##================ END =========================##

接下来是修改配置文件Base-FCOS.yaml,如下图所示:
在这里插入图片描述
最后执行命令:

python tools/train_net.py --config-file configs/FCOS-Detection/R_50_1x.yaml --num-gpus 1  OUTPUT_DIR training_dir/fcos_R_50_1x

如果顺利的话就可以正常运行了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!