detectron是facebook 实验室的深度学习目标检测框架,依赖于caffe2,支持以下模型:
- Mask R-CNN -- Marr Prize at ICCV 2017
- RetinaNet -- Best Student Paper Award at ICCV 2017
- Faster R-CNN
- RPN
- Fast R-CNN
- R-FCN
1)安装见 https://github.com/facebookresearch/Detectron/blob/master/GETTING_STARTED.md
2)运行mask-rcnn:
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
3)个人使用总结:
a)最好联网运行,我直接下载 model_final.pkl,只有retinanet_X-101-32x8d-FPN_2x.yaml 能运行成功。其它都出现运行错误。
联网运行就ok. 联网之后模型文件保存在 /tmp/detectron-download-cache/下面,不会覆盖,ls /tmp/detectron-download-cache/
35861858 36494496 37129812 37698009 37732318 ImageNetPretrained
运行retinanet_X-101-32x8d-FPN_2x.yaml,只要注释到line100,101即可,把离线下载的model_final.pkl 重命名,运行命令如下:
python2 tools/infer_simple.py --cfg configs/12_2017_baselines/RetinaNet/retinanet_X-101-32x8d-FPN_2x.yaml --output-dir tmp/detectron-visualizations --image-ext jpg -- wts detectron-model/retinanet_X-101-32x8d-FPN_2x-model_final.pkl tmp/2018-4-9-tunnel/
b) 显示的颜色和label太小,可以改动。在vis.py:
检测阈值是thresh, dpi可以加大,显示的字体和目标框会大一些。
c)我的用法,mask-rcnn比yolo2检测慢,但是检测效果要好很多。当要做图片标签时,先用这个模型预检测:https://s3-us-west-2.amazonaws.com/detectron/36494496/12_2017_baselines/e2e_mask_rcnn_X-101-64x4d-FPN_1x.yaml.07_50_11.fkwVtEvg/output/train/coco_2014_train%3Acoco_2014_valminusminival/generalized_rcnn/model_final.pkl
可以极大减少标定的工作量。 然后给yolo2这种快速检测框架做训练,实现产品化。下图是对一个百度图片的检测效果:
d)遗留问题:
运行 e2e_mask_rcnn_X-152-32x8d-FPN-IN5k_1.44x 模型(box mAp高达 48.1):出现显存不足,我的11G显存都不足。究竟要多大?
caffe2/core/context_gpu.cu:327: out of memory Error from operator
I7+1080Ti上检测时间,模型是 e2e_mask_rcnn_X-101-64x4d-FPN_1x.yaml:
参考:
https://caffe2.ai/docs/getting-started.html?platform=ubuntu&configuration=compile
https://github.com/facebookresearch/Detectron/blob/master/GETTING_STARTED.md