读mmdetection的faster rcnn代码

一行行看运行过程
在这里插入图片描述
首先将参数传好,第一行设断点,一行行过就完事了。
在这里插入图片描述
很明显是字典。

model = build_detector(cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg)
#这行创建模型了
def build_detector(cfg, train_cfg=None, test_cfg=None):
    return build(cfg, DETECTORS, dict(train_cfg=train_cfg, test_cfg=test_cfg))
    #接着跳到了这里,接收了cfg.model,也是faster配置文件里的第一个字典。后面接
    #这跳到build,中间的DETECTORS是从哪来的。
from .registry import (BACKBONES, DETECTORS, HEADS, LOSSES, NECKS,
                       ROI_EXTRACTORS, SHARED_HEADS)
#开头写了从registry里掉的,进去看看。
DETECTORS = Registry('detector')
#registry.py里的,再进去看看。

https://www.cnblogs.com/BlueSkyyj/p/9415087.html
这里贴个地址,讲__init__和__all__的作用的,我也是第一次读项目(其实基本的python语句)掌握的也不太明白。我初步理解是__init__.__all__后的模块都会导入。

_all__ = [
    'BACKBONES', 'NECKS', 'ROI_EXTRACTORS', 'SHARED_HEADS', 'HEADS', 'LOSSES',
    'DETECTORS', 'build_backbone', 'build_neck', 'build_roi_extractor',
    'build_shared_head', 'build_head', 'build_loss', 'build_detector'
]

然后看看Registry(‘detector’)是什么。

__all__ = [
    'ATSS', 'BaseDetector', 'SingleStageDetector', 'TwoStageDetector', 'RPN',
    'FastRCNN', 'FasterRCNN', 'MaskRCNN', 'CascadeRCNN', 'HybridTaskCascade',
    'DoubleHeadRCNN', 'RetinaNet', 'FCOS', 'GridRCNN', 'MaskScoringRCNN',
    'RepPointsDetector', 'FOVEA'
]#这里面就有FasterRCNN了

再往下看

@DETECTORS.register_module
class FasterRCNN(TwoStageDetector):#一个双阶段的类

现在跳回build函数。前面没说Registry也是个类。

class Registry(object):
def build(cfg, registry, default_args=None):

所以到了build函数传入的几个参数就是这样的:一个cfg字典,一个registry类。
接着跳到了

#这才开始正题了
def build_from_cfg(cfg, registry, default_args=None):
args = cfg.copy()#读参
obj_type = args.pop('type')#读模型 FasterRCNN
       if mmcv.is_str(obj_type):
        obj_cls = registry.get(obj_type)#这里返回了FasterRCNN类
#再下一步就跳到了FasterRCNN类里了,这块我还不了解(主要是类的继承啥的....原谅菜鸡)。看明白了再写吧。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值