前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Detectron结构解析

Detectron结构解析

作者头像
张俊怡
发布2019-05-15 13:49:39
8330
发布2019-05-15 13:49:39
举报

Detectron是Facebook AI Research 的开源项目。主要是faster RCNN系列的大神们,将Mask RCNN,RetinaNet,Faster RCNN,RPN等算法集合到了一个框架下,方便研究人员使用。

科研人员除了科研能力,如果能具备优秀的工程能力,将是非常棒的。本文记录了detectron pytorch版本的代码结构笔记,一起来学习一下大神优美的工程架构。 detection pytorch link: https://github.com/roytseng-tw/Detectron.pytorch

Detectron:

主要包含以下五个文件夹。

1、configs: 2、data 3、lib 4、tools 5、Outputs —————————————————————————————————————————————— 下边继续介绍这些文件夹

configs

这个文件夹目录下全部存放的是模型训练的各种yaml配置文件,你想要选什么样的模型组合,可在这里挑选,并且可以修改其中的一些参数。 包含三个文件夹:baselines、getting_started、gn_baselines 一般选baselines里边的模型就行了。

tools

这个文件夹放一些自己添加的常用的工具脚本文件,比较重要的两个文件有train_net.py 和 test_net.py,这两个文件分别是训练和测试的初始加载文件。

Outputs

这个文件夹中保存的是训练的模型已经测试的结果 模型保存在 ckpt中 测试结果在 test中,可视化结果在test中的vis里。

data

这是存放数据集的地方,可以按照VOC的形式存放。

VOC形式 [2]

——————————————————————————————————————————————

注意,最最最关键的核心代码都在这里!

lib

lib 包含 datasets、core、model、modeling、nn、roi_data

下边继续逐个介绍这些文件夹以及里边的文件

1、datasets

dataset_catalog.py:跟所读取的数据相关的路径参数的配置代码。 roidb.py、json_dataset.py:读取数据构建数据结构roidb的代码。 voc_dataset_evaluator.py和voc_eval.py:测试与结果评估涉及的代码。

在目标检测类任务中, 有一个很重要的数据结构roidb, 它将作为基本的数据结构在数据队列中存在, Detection 的数据载入类 RoIDdataLoader 也是将该数据结构作为成员变量使用的。

roidb [1]

2、core

这个文件夹中主要包含一下几个文件: config.py: 配置一些超参数的地方。 test_engine.py:调用tools/test_net.py后就会调用到这个文件,然后去调用datasets 里边的 roidb.py、json_dataset.py读取数据构建roidb,然后再通过模型推断出预测的结果,最后进行结果的评估。 test.py: 测试的过程需要用到的一些函数封装好在这个文件中。

3、model

3.1、nms:非极大抑制算法,应用相当广泛,其主要目的是消除多余的框,找到最佳的物体检测位置。 3.2、roi_align: ROI Align 是在Mask-RCNN这篇论文里提出的一种区域特征聚集方式, 很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)的问题。实验显示,在检测测任务中将 ROI Pooling 替换为 ROI Align 可以提升检测模型的准确性 [3]。 3.3 roi_crop:传统的CNN限制了输入必须固定大小(比如AlexNet是224x224),所以需要进行裁剪,在实际使用中往往需要对原图片进行crop或者warp的操作 [4]。

代码语言:javascript
复制
crop:截取原图片的一个固定大小的patch
warp:将原图片的ROI缩放到一个固定大小的patch

crop和warp都无法保证在不失真的情况下将图片传入到CNN当中:

代码语言:javascript
复制
crop:物体可能会产生截断,尤其是长宽比大的图片.
warp:物体被拉伸,失去“原形”,尤其是长宽比大的图片

3.4 roi_pooling:为了解决 crop和warp带来的问题(截断、失去“原形”)而提出的。 3.5 utils: 里边就包含一个文件net_utils.py, 该文件中封装了一些跟网络本身有关的函数,比如权重初始化。

4、modeling

这个文件夹中存放的是一些网络结构的文件,比如resnet、fpn、fast_rcnn_heads等等,接下来我将一一介绍。

5、nn

5.1 modules: 包含(normalization.py 和 upsample.py) 5.2 parallel:用于并行计算的文件

6、roi_data

包含生成roi相关的文件。

7、utils

工具文件存放的文件夹

参考文献

1、https://hellozhaozheng.github.io/z_post/Caffe2-Detectron1-roidb%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/ 2、https://blog.csdn.net/mr_health/article/details/80676799 3、https://blog.csdn.net/wfei101/article/details/79618567 4、https://blog.csdn.net/weixin_43872578/article/details/87897857

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Detectron是Facebook AI Research 的开源项目。主要是faster RCNN系列的大神们,将Mask RCNN,RetinaNet,Faster RCNN,RPN等算法集合到了一个框架下,方便研究人员使用。
  • Detectron:
    • configs
      • tools
        • Outputs
          • data
          • 注意,最最最关键的核心代码都在这里!
            • lib
              • 1、datasets
                • 2、core
                  • 3、model
                    • 4、modeling
                      • 5、nn
                        • 6、roi_data
                          • 7、utils
                            • 参考文献
                            相关产品与服务
                            GPU 云服务器
                            GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档