Detectron2 编写模型 | 七

2020-05-31 00:00:00 专区 订阅 模型 组件 你可以

作者|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中。请参阅detectron2meshrcnn中的densepose,以获取实现新RoiHead以执行新任务的示例。project/包含更多实现不同体系结构的示例。

  • ROIHeads:detectron2.readthedocs.io/modules/mod…

  • detectron2:github.com/facebookres…

  • meshrcnn:github.com/facebookres…

  • projects/:github.com/facebookres…

完整的注册表列表可以在API文档中找到。你可以在这些注册表中注册组件,以自定义模型的不同部分或整个模型。

  • API文档: detectron2.readthedocs.io/modules/mod…

原文链接:detectron2.readthedocs.io/tutorials/w…

欢迎关注磐创AI博客站: panchuang.net/

sklearn机器学习中文官方文档: sklearn123.com/

欢迎关注磐创博客资源汇总站: docs.panchuang.net/

相关文章