Detectron结构解析

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]。

crop:截取原图片的一个固定大小的patch
warp:将原图片的ROI缩放到一个固定大小的patch

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容