最近去RBG大婶的github主页查看faster rcnn源码,他告诉我py-faster rcnn已经out了,让我移步detectron看下mask rcnn,于是我就去了Shaoqingren婶的github看了下,原作者好像没有说faster rcnn out的意思。抱着试试看的态度,买了两瓶。。。额。去了detectron的githunb主页看了下,于是clone下来研究下。
Detectron文件夹下有大量的文件资源,包含了模型训练与推理的配置,FAIR预训练的模型,docker容器配置以及一些必要的库文件等。即使没有经历一一阅读源码,但是了解下各个文件的作用也是很必要的,下面由AI小白带你学习Detectron平台,一步一步从入门到放弃。
model_Zoo概述
configs/12_2017_baselines文件夹下存放了FAIR在2017年12月份预训练好的最新的目标识别模型,打开文件夹可以看到有faster rcnn,mask rcnn,keyponit rcnn ,retinanet 等,涵盖了最先进的目标识别算法,别问为啥没有yolo和ssd,我也不知道,也许下次更新就会出现。官方在MODEL_ZOO.md文档中公布了一些训练细节:
1. 训练平台是自己的开源gpu服务器Big Basin,8个Tesla P100GPU完成了训练(基于cuda8.0,cuDNN6.0.21)
2. 8个gpu并行sync SGD(同步随机梯度下降法)训练,minibatch 为8或16,这么好的机器minbath size还是选的比较保守的hehe
3.训练时,仅用水平反转作为数据增强,训练数据集为coco_2014_train和coco_2014_valminusminival,完全等价于coco_2017_train
4.测试集采用coco_2014_minival,这也完全等价于coco_2017_val,纯手打,结果比机器翻译还机器翻译,输出结果是coco json格式
5. 目前的预训练模型都是coco dataset格式,Cityscapes dataset预训练模型下个detectron版本即将推出,真替做adas的同学高兴啊,忧愁啥时候出个x光数据集预训练模型
预训练模型策略
configs/12_2017_baselines文件夹下的预训练模型的命名结尾有1x,2x,s1x等字符,表示了三种不同的训练策略:1. 1x: minibatch size 16, t开始 LR 是0.02,在 60k 和 80k 迭代之间LR乘以0.1系数衰减,总的迭代次数为90k. 训练过程总计12.17个epochs,数据集为coco_2014_train coco_2014_valminusminival,数量为118,287幅图像。
2. 2x: LR为0.01,在 60k 和 80k 迭代之间LR乘以0.1系数衰减,总的迭代次数为90k,训练时间是1x的两倍。
3. s1x ("stretched 1x"): 相比1x,学习率缩小了1.44倍,在 100k 和 120k 迭代之间LR乘以0.1系数衰减,总的迭代次数为130k.
若修改minibatch size,建议在8到16之间, SGD iterations 和 base learning rate 需要修改。参考FB的论文 Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour.
ImageNet 预训练模型
FAIR给出了转换后的基于ImageNet-1k的预训练模型,我们可以用这些模型来迁移学习私人定制模型。
- R-50.pkl: converted copy of MSRA's original ResNet-50 model
- R-101.pkl: converted copy of MSRA's original ResNet-101 model
- X-101-64x4d.pkl: converted copy of FB's original ResNeXt-101-64x4d model trained with Torch7
- X-101-32x8d.pkl: ResNeXt-101-32x8d model trained with Caffe2 at FB
- X-152-32x8d-IN5k.pkl: ResNeXt-152-32x8d model trained on ImageNet-5k with Caffe2 at FB (see our ResNeXt paper for details on ImageNet-5k)
faster rcnn和mask rcnn baseline
个人比较关心目标识别算法的速度和精度,于是摘出了下面的baseline,主要是end2end faster rcnn和mask rcnn,红色的backbone对应的faster rcnn和mask rcnn比较中意backbone | type | lr schd | im/ gpu | train mem (GB) | train time (s/iter) | train time total (hr) | inference time (s/im) | box AP | mask AP | kp AP | prop. AR | model id | download links |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
R-50-C4 | Faster | 1x | 1 | 6.3 | 0.566 | 28.3 | 0.167 + 0.003 | 34.8 | - | - | - | 35857197 | model | boxes |
R-50-C4 | Faster | 2x | 1 | 6.3 | 0.569 | 56.9 | 0.174 + 0.003 | 36.5 | - | - | - | 35857281 | model | boxes |
R-50-FPN | Faster | 1x | 2 | 7.2 | 0.544 | 13.6 | 0.093 + 0.004 | 36.7 | - | - | - | 35857345 | model | boxes |
R-50-FPN | Faster | 2x | 2 | 7.2 | 0.546 | 27.3 | 0.092 + 0.004 | 37.9 | - | - | - | 35857389 | model | boxes |
R-101-FPN | Faster | 1x | 2 | 8.9 | 0.647 | 16.2 | 0.120 + 0.004 | 39.4 | - | - | - | 35857890 | model | boxes |
R-101-FPN | Faster | 2x | 2 | 8.9 | 0.647 | 32.4 | 0.119 + 0.004 | 39.8 | - | - | - | 35857952 | model | boxes |
X-101-64x4d-FPN | Faster | 1x | 1 | 6.9 | 1.057 | 52.9 | 0.305 + 0.003 | 41.5 | - | - | - | 35858015 | model | boxes |
X-101-64x4d-FPN | Faster | 2x | 1 | 6.9 | 1.055 | 105.5 | 0.304 + 0.003 | 40.8 | - | - | - | 35858198 | model | boxes |
X-101-32x8d-FPN | Faster | 1x | 1 | 7.0 | 0.799 | 40.0 | 0.233 + 0.004 | 41.3 | - | - | - | 36761737 | model | boxes |
X-101-32x8d-FPN | Faster | 2x | 1 | 7.0 | 0.800 | 80.0 | 0.233 + 0.003 | 40.6 | - | - | - | 36761786 | model | boxes |
R-50-C4 | Mask | 1x | 1 | 6.6 | 0.620 | 31.0 | 0.181 + 0.018 | 35.8 | 31.4 | - | - | 35858791 | model | boxes | masks |
R-50-C4 | Mask | 2x | 1 | 6.6 | 0.620 | 62.0 | 0.182 + 0.017 | 37.8 | 32.8 | - | - | 35858828 | model | boxes | masks |
R-50-FPN | Mask | 1x | 2 | 8.6 | 0.889 | 22.2 | 0.099 + 0.019 | 37.7 | 33.9 | - | - | 35858933 | model | boxes | masks |
R-50-FPN | Mask | 2x | 2 | 8.6 | 0.897 | 44.9 | 0.099 + 0.018 | 38.6 | 34.5 | - | - | 35859007 | model | boxes | masks |
R-101-FPN | Mask | 1x | 2 | 10.2 | 1.008 | 25.2 | 0.126 + 0.018 | 40.0 | 35.9 | - | - | 35861795 | model | boxes | masks |
R-101-FPN | Mask | 2x | 2 | 10.2 | 0.993 | 49.7 | 0.126 + 0.017 | 40.9 | 36.4 | - | - | 35861858 | model | boxes | masks |
X-101-64x4d-FPN | Mask | 1x | 1 | 7.6 | 1.217 | 60.9 | 0.309 + 0.018 | 42.4 | 37.5 | - | - | 36494496 | model | boxes | masks |
X-101-64x4d-FPN | Mask | 2x | 1 | 7.6 | 1.210 | 121.0 | 0.309 + 0.015 | 42.2 | 37.2 | - | - | 35859745 | model | boxes | masks |
X-101-32x8d-FPN | Mask | 1x | 1 | 7.7 | 0.961 | 48.1 | 0.239 + 0.019 | 42.1 | 37.3 | - | - | 36761843 | model | boxes | masks |
X-101-32x8d-FPN | Mask | 2x | 1 | 7.7 | 0.975 | 97.5 | 0.240 + 0.016 | 41.7 | 36.9 | - | - | 36762092 | model | boxes | masks |
RetinaNet Baselines
RetinaNet提出是用来抑制目标识别过程中负样本与正样本数量过于悬殊(接近1000:1)以及不同class图像数量带来的模型AP较低问题。也许在coco dataset数据集这两个问题不明显,所以Detectron给出的RetinaNet的boxAP均没有faster rcnn和mask rcnn高。对于自建数据集,RetinaNet值得一试。