Detectron2 编写模型 | 七
本文是全系列中第7 / 15篇:Detectron2
- Detectron2 使用自定义数据集 | 四
- Detectron2 基准测试 | 十二
- Detectron2 使用自定义数据加载器 | 五
- Detectron2 与其他库的兼容性 | 十三
- Detectron2 使用模型 | 六
- Detectron2 API 之 checkpoint | 十四
- Detectron2 编写模型 | 七
- Detectron2 API 之 config | 十五
- Detectron2 开始训练 | 八
- Detectron2 安装 | 一
- Detectron2 进行评估 | 九
- Detectron2 入门 | 二
- Detectron2 配置 | 十
- Detectron2 扩展默认值 | 三
- Detectron2 部署 | 十一
作者|facebookresearch
编译|Flin
来源|Github
编写模型
如果你尝试做一些全新的事情,你可能希望在detectron2中完全从头开始实现一个模型。但是,在许多情况下,你可能对修改或扩展现有模型的某些组件感兴趣.因此,我们还提供了一种注册机制,可让你覆盖标准模型的某些内部组件的行为。
例如,要添加新的主干,请将以下代码导入你的代码中:
from detectron2.modeling import BACKBONE_REGISTRY, Backbone, ShapeSpec
@BACKBONE_REGISTRY.register()
class ToyBackBone(Backbone):
def __init__(self, cfg, input_shape):
# 创建你的backbone
self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=16, padding=3)
def forward(self, image):
return {"conv1": self.conv1(image)}
def output_shape(self):
return {"conv1": ShapeSpec(channels=64, stride=16)}
然后,可以在配置对象中使用cfg.MODEL.BACKBONE.NAME ='ToyBackBone'
。build_model(cfg)
将调用你的ToyBackBone
。
再举一个例子,要将新功能添加到广义R-CNN元体系结构的ROI头中,
你可以实现一个新的ROIHeads
子类并将其放在ROI_HEADS_REGISTRY中。请参阅detectron2
和meshrcnn
中的densepose,以获取实现新RoiHead以执行新任务的示例。project/
包含更多实现不同体系结构的示例。
- ROIHeads:https://detectron2.readthedocs.io/modules/modeling.html#detectron2.modeling.ROIHeads
-
detectron2:https://github.com/facebookresearch/detectron2/tree/master/projects/DensePose
-
meshrcnn:https://github.com/facebookresearch/meshrcnn
-
projects/:https://github.com/facebookresearch/detectron2/tree/master/projects
完整的注册表列表可以在API文档中找到。你可以在这些注册表中注册组件,以自定义模型的不同部分或整个模型。
- API文档: https://detectron2.readthedocs.io/modules/modeling.html#model-registries
原文链接:https://detectron2.readthedocs.io/tutorials/write-models.html
原创文章,作者:磐石,如若转载,请注明出处:https://panchuang.net/2020/05/31/detectron2-%e7%bc%96%e5%86%99%e6%a8%a1%e5%9e%8b-%e4%b8%83/