Facebook detectron2训练faster rcnn
detectron2是Facebook开源的一套框架,适用于很多的deep learning task,例如instance segmentation等,本文主要就如何利用detectron2训练faster rcnn,并得到模型,主要描述大体的思路
0. 前期
前期请看官方的教程,大致了解怎么回事
github
colab
1. 安装detectron2
其进行目标检测方法不像github上一些项目,是把hub给clone下来修改,而是一个框架,我们需要安装这个框架。
如何安装,请见这里。
建议直接pip安装,而不是编译安装:

安装后,还需要opencv等,这里不描述了。
2. 数据集的准备
我们需要准备一个数据集,这个数据集存放在本机的一个位置,然后我们需要用一个列表装下每张图片的信息,每张图片需要用dict方式存储,举例如下:
{
'file_name': '/exdata3/RuoyuChen/detectron2/VOC2007/JPEGImages/Black_Footed_Albatross_0009_34.jpg',
'image_id': 0,
'height': 336,
'width': 500,
'annotations': [
{
'bbox': [139, 30, 292, 294],
'bbox_mode': <BoxMode.XYXY_ABS: 0>,
'category_id': 0,
'iscrowd': 0
}
]
}
这个只是一张图片的字典可视化,具体解释如下:
file_name:图片路径
image_id:图片编号,从0开始依次加1,没有顺序要求
height:图片的高度
width:图片的宽度
annotation:放box信息,1个{}代表一个框
bbox:[xmin,ymin,xmax,ymax]
bbox_mode:固定就好,详细见官方给的例子,在colab上
category_id:类别数字,从0开始
iscrowd:目标检测默认是0就行
然后假如1个图片的json字典像上面所示,我们假设在python中变量叫record,那么总的字典datasets_dict,我们只要每次求得record后,执行datasets_dict.append(record)即可得到一个完整的字典格式。
3. 注册数据集
这里每次训练前都需要执行类似的操作:
DatasetCatalog.register("CUB_train", lambda d=d: train_dataset_dicts)
MetadataCatalog.get("CUB_train").set(thing_classes=classes)
train_dataset_dicts即对应训练的字典。
4. 训练
模仿官方的配置即可
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml"))
cfg.DATASETS.TRAIN = ("CUB_train",)
cfg.DATASETS.TEST = ()
cfg.DATALOADER.NUM_WORKERS = 2
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url

本文介绍如何使用Facebook的开源框架Detectron2训练FasterRCNN模型。主要内容包括安装Detectron2、准备数据集、注册数据集、配置训练参数及训练过程。通过实例演示了如何构建数据集字典,设置模型参数并执行训练。
最低0.47元/天 解锁文章
2452

被折叠的 条评论
为什么被折叠?



