Detectron中config文件的解释

Detectron中config文件的解释

本博客仅仅是总结使用detectron过程中曾经遇到的一些问题,不做详细步骤指导。

1.Detectron 是什么?
detectron是Facebook AI Research 的开源项目。主要是faster RCNN系列的大神们,将Mask RCNN,RetinaNet,Faster RCNN,RPN等算法集合到了一个框架下,方便研究人员使用。它的网络是在caffe2上运行的。对于目标检测任务来说,无疑是利器。
Detectron的github地址

2.为什么选择用detectron?
除了方便还是方便。很多初学者都是从caffe开始,但是对于结构复杂的网络而言,caffe的prototxt 文件看上去有些繁琐,并且参数设置也不是特别直观。而caffe2在不改变网络结构的情况下,参数的设置,数据集的更改等等在yml文件中都更为直观。更改网络的情况,个人还没有了解,日后如果有了解再补充。

3.detectron怎么用?
在github上有英文的指导,这里是传送门
这里假定都已经安装成功,那么使用的时候

python2 tools/infer_simple.py \
--cfg configs/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml \
--output-dir /tmp/detectron-visualizations \
--image-ext jpg \
--wts https://s3-us-west-2.amazonaws.com/detectron/35861858/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml.02_32_51.SgT4y1cO/output/train/coco_2014_train:coco_2014_valminusminival/generalized_rcnn/model_final.pkl \
demo

我们这里只解释具体的几个参数的含义。
1)cfg,是配置文件,均存在于configs目录下。
在Model中:

MODEL:
	TYPE: generalized_rcnn
	CONV_BODY: FPN.add_fpn_ResNet50_conv5_body
	NUM_CLASSES: 81
	FASTER_RCNN: True

其中需要初学者注意的是NUM_CLASSES,对于customer的数据集,该值为 类别数+1,因此对于coco来说就是80+1
对于Mask网络,model部分还应加上

	MASK_ON: True

设置GPU的数量:

NUM_GPUS: 1

SOLVER设置:

SOLVER:
	WEIGHT_DECAY: 0.0001
	LR_POLICY: steps_with_decay
	BASE_LR: 0.0025
	GAMMA: 0.1
	MAX_ITER: 60000
	STEPS: [0, 30000, 40000]

首先,对于训练次数而言,如果数据集不大,我们可以设置为几千次,如果像coco这类数据量较大,几万次还是有必要的。default的单GPU下为60000次。这里值得一提的是,对于多GPU下,MAX_ITER的次数与GPU的数量成反比。另一个需要说的参数是BASE_LR,初始的学习率对于网络训练很重要,太大会使网络不容易收敛到最小值,太小又会使网络收敛过慢。正如之前博客所言,通常取e-3到e-4比较安全。这里0.0025的取值,猜测是作者根据网络和数据多次实验所取的较优的配置。在多GPU下,BASE_LR的取值与GPU成正比。

FPN和FAST RCNN设置:

FPN:
	FPN_ON: True
	MULTILEVEL_ROIS: True
	MULTILEVEL_RPN: True
FAST_RCNN:
	ROI_BOX_HEAD: fast_rcnn_heads.add_roi_2mlp_head
	ROI_XFORM_METHOD: RoIAlign
	ROI_XFORM_RESOLUTION: 7
	ROI_XFORM_SAMPLING_RATIO: 2

曾经尝试改动FPN,但是与此同时model也应该改动,正常情况下这两项在customer数据集上不需要改动。

Train 的设置:

TRAIN:
	WEIGHTS: https://s3-us-west-2.amazonaws.com/detectron/ImageNetPretrained/MSRA/R-50.pkl
	DATASETS: ('coco_2014_train',)
	SCALES: (500,)
	MAX_SIZE: 833
	BATCH_SIZE_PER_IM: 256
	RPN_PRE_NMS_TOP_N: 2000  # Per FPN level

这里要注意的是DATASETS中,自己的数据集需要在dataset_catalog.py中补充,其中数据集的生成方式github中也有详细说明

Test 的设置:

TEST:
	DATASETS: ('coco_2014_minival',)
	SCALE: 500
	MAX_SIZE: 833
	NMS: 0.5
	RPN_PRE_NMS_TOP_N: 1000  # Per FPN level
	RPN_POST_NMS_TOP_N: 1000

其中,需要注意的包括,SCALE和MAX_SIZE,从他人处得到经验,想在inference时提高准确率其中的一个办法就是换成高分辨率,那么这两个参数就是需要改动的了。
另外NMS的设置可以在非密集场景下减少重复出现的box

你可能感兴趣的:(深度学习相关(cs231n))