Detectron2 阅读学习-工程目录分解-持续更新

750 阅读1分钟

Detectron2 :

tutorials : detectron2.readthedocs.io/en/latest/t…

github : github.com/facebookres…

工程目录:

image.png

  • demo 下面是基于pretrained model的推理脚本,输入可以是图片和视频,输出可返回可视化结果

    • predictor.py 负责调用推理器DefaultPredictor和可视化工具,同时包含并行化推理的封装类AsyncPredictor

  • tools 是训练和测试的入口

    • train_net.py / plain_train_net.py(简化版) 配合configs训练各类模型
    ./train_net.py --num-gpus 8 \
    --config-fil ../configs/COCOInstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml
    
    • README.md 里说明了该目录下各个脚本的用途和用法,包括训练、速度测试、模型参数量计算量分析、可视化等

    • deploy目录

  • 子目录detectron2

    • 核心组件均在此目录下,可被调用,包括但不限于:
      • 优化器
      • 模型结构
      • 数据供给模块
      • 模型存储加载
    • modeling/meta_arch :
      • META_ARCH_REGISTRY:
    算法名注册的class备注
    rcnnclass GeneralizedRCNN(nn.Module)two-stage检测
    retinanetclass RetinaNet(nn.Module)one-stage检测
    panoptic_fpnclass PanopticFPN(GeneralizedRCNN)全景分割
    semantic_segclass SemanticSegmentor(nn.Module)语义分割
    Registry类 import 自fvcore模块,用于提供注册机制,便于用户自行添加和使用对应的模型,
    具体的注册使用方法见
    https://github.com/facebookresearch/fvcore/blob/master/fvcore/common/registry.py
    简单来说其提供register()方法作为装饰器来注册其他类模块,并利用get()方法获取注册表中的方法,用户在自定义模块后可直接利用装饰器来注册,eg:
    create registry:
        BACKBONE_REGISTRY = Registry("BACKBONE")
    register an object:
        @BACKBONE_REGISTRY.register()#注意这里带了括号
        class BackboneName():
            ...
    get the object:
        model = BACKBONE_REGISTRY.get('BackboneName')(cfg)
    
    • modeling/backbone
      • BACKBONE_REGISTRY