detectron2学习如何使用:细究GeneralizedRCNN结构

以mask detection using detectron2为例:
https

GeneralizedRCNN:

https://www.cnblogs.com/hellcat/p/9814975.html首先比较清晰的架构图这里有。

1.backbone FPN

1.1 fpn_lateral and fpn_output(共4个)

1.2 top_block: LastLevelMaxPool()

1.3 bottom_up resnet:

1.3.1 res结构:由多个BottleneckBlock连接而成

1.3.2 bottom结构BottleneckBlock

有两种类型:一种是有shortcut的BottleneckBlock,一种没有。

2.proposal_generator:RPN

2.1 RPN head

2.1.1 conv 256-256,我很奇怪,这个256是怎么过来的,之前res里面的特征层数目这么多,最后一个甚至达到了2048,难道是我没看全,有一步特征层精简数目的操作没有看到?

2.1.2 objectness_logits 3,即3个类别

2.1.3 anchor_deltas 这里是特征层数由256-12

2.2 anchor_generator

2.2.1 (cell_anchors): BufferList()

关于12:
12=3*4,3为本次检测的类别数目,4为box参数

3.roi_heads:StandardROIHeads

3.1 box_pooler ROIPooler:里面使用level_poolers ,spatial_scale参数推断是由于有FPN的缘故,4个ROIalign各不相同.

这点在https://zhuanlan.zhihu.com/p/83240690中有相同的说法。

3.2 box_head: FastRCNNConvFCHead

为什么是12544,12544/(7*7)=256;256是谁?是RPN conv输出特征层的维数(见上)
box_head里面有flatten–fc1–relu–fc2–relu 最后返回长度1024的向量。

3.3 box_predictor FastRCNNOutputLayers

cls_score:这里out logits为4,是包含了背景类。
bbox_pred:12.

3.4 mask_pooler:ROIPooler:类似上面的box pooler,这里也是一个level_pooler 里面一个module list.

3.5 mask_head:MaskRCNNConvUpsampleHead:这一部分作用是什么?最后predictor的作用就是预测这很清楚,可是为何要上采样呢?莫非是为了让mask更加细致?

猜你喜欢

转载自blog.csdn.net/qq_44065334/article/details/114491013