Detectron研读和实践一:detectron框架概览

引言

Detectron是Facebook AI研究院(FAIR)于2018年初公开的目前为止业内最佳水平的目标检测平台。据介绍,该项目自 2016 年 7 月启动,构建于 Caffe2 之上,目前支持大量机器学习算法,其中包括 Mask R-CNN(何恺明的研究,ICCV 2017 最佳论文)和 Focal Loss for Dense Object Detection,(ICCV 2017 最佳学生论文)。Facebook 称,该工具包已被应用与公司内部很多团队应用于各类应用中,一旦训练完成,这些计算机视觉模型可被部署在云端或移动设备上。
该工具的开源对于研究目标检测的朋友来说有极大的帮助,可以帮助他们利用最先进的深度学习目标检测技术快速构建自己的模型和应用,也可在其上开展进一步的研究,无论从工程上还是从学术研究上都有较大的参考价值。由于本人目前的课题方向也是目标检测,因此准备好好研读一番Detectron的源码,记录下自己的一些理解和体会,也希望能与志同道合的朋友一起交流探讨。

Detectron的安装和使用

关于Detectron的具体安装和使用可以参考该项目的github,英语不好的朋友也可以直接看Caffe2—Detectron初步使用这篇博客,基本把该项目github上的相关说明和介绍翻译过来了。

各模块简要介绍

Detectron 框架包含 config,demo,lib,tests 和 tools 等文件夹,下面对各文件夹进行简要地介绍。

1.config 包含着各个模型的训练和测试参数。其中有2017年12月公布的众多baselines的配置参数以及Using detectron教程中提到的多种GPU方案训练以ResNet-50-FPN为backbone的Faster R-CNN的配置参数。

2.demo主要存了一些用于detectron演示的测试图片和输出结果。

3.lib 是 detectron 的核心文件夹,又包含若干重要的子文件夹,例如 core,datasets,modelings,roi_data,ops,utils等。

  • core:主要包含项目默认的配置(config.py),生成rpn proposal的相关函数(rpn_generator.py)以及推理测试相关的一些文件(test.py等)
  • datasets:主要涉及一些与数据集相关的文件。其中data子文件夹用于存储训练数据集,支持训练的数据集有COCO、PASCAL_VOC和cityspaces。注意label文件的格式是json格式的。VOCdevkit-matlab子文件夹主要包含一些与数据集评价有关的文件。
  • modeling:这又是lib中核心的模块,包含很多优秀的目标检测网络的实现,如Faster R-CNN,Mask R-CNN,FPN,R-FCN,Retinanet等,且都尽可能被组织成了子模块的形式,方便进行使用。
  • ops:主要是定义了一些与生成和分配proposal相关的operators,用于辅助modeling.detector模块中的相关函数(包括GenerateProposals(),GenerateProposalLabels()和CollectAndDistributeFpnRpnProposals())。
  • roi_data:涉及各种网络minibatches的构建,加载和通用帮助函数。
  • utils:包含学习率等其它一些非核心函数。

4.tests包含对一些操作如数据加载、bbox变换等的测试文件。

5.tools包含使用detectron进行模型训练、测试、可视化结果和简单推理等操作的工具函数。

参考资料:
1. 从论文到测试:Facebook Detectron开源项目初探| 机器之心

你可能感兴趣的:(深度学习,计算机视觉)