Faster R-CNN模块解读(一)— 检测器的构建
根据之前的介绍,config文件中的 model
中的 type
指定了检测器是一个Faster R-CNN检测器。
我们知道要调用一个检测模型要用到函数model = build_detector(cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg)
。接下来,我们看看其是如何调用到Faster R-CNN模块的。
mmdetection/configs/faster_rcnn_r50_fpn_1x.py
1 | model = dict( |
mmdetection/mmdet/models/registry.py
1 | BACKBONES = Registry('backbone') |
mmdetection/mmdet/models/builder.py
1 | def build(cfg, registry, default_args=None): |
mmdetection/mmdet/utils/registry.py
1 | def build_from_cfg(cfg, registry, default_args=None): |
通过build_from_cfg
返回了cfg.model.type
定义的类。registry指明了该类在mmdetection/mmdet/models/detectors中,查看文件faster_rcnn.py
(此处有其框架设计的问题,比如注册器的使用,在本系列中暂时不分析)
1 |
|
可以看到FasterRCNN
继承于TwoStageDetector
。
mmdetection/mmdet/models/detectors/two_stage.py
1 |
|
可以看到通过builder
将检测器的backbone,neck,shared_head,bbox_head,mask_head等全部创建了。并通过init_weights
初始话权重,后续有:
extract_feat()
forward_train()
simple_test && aug_test
下一篇blog将介绍Backbone的构建。