扩展Detectron2的接口与逻辑

研究是以新的方式做事。这给如何在代码中创建抽象带来了压力, 对于任何规模较大的研究工程项目而言,这都是一个挑战:

  1. 一方面,它需要非常精简的抽象,来以新方式进行所有操作。打破现有的抽象并将其替换为新的抽象必须应该是便利容易的。

  2. 另一方面,这样的项目也需要合理的高层抽象,以便用户可以轻松地以标准方式进行操作,而不必担心仅某些研究人员关心的细节。

在detectron2中,有两种类型的接口可以共同解决这种压力:

  1. 仅采用"config"参数的函数和类(在成熟接口的情况下,可以选择额外参数最少的一组)。这些函数和类实现"标准默认"行为:它将从配置中读取所需内容并执行"标准"操作。用户只需要加载一个标准配置并传递它,而不必担心使用了哪些参数以及它们的含义。

  2. 具有定义明确自变量的函数和类。

    具有定义明确自变量的函数和类是整个系统中一个很小的组成部分。它们需要用户费力地链接在一起,但是可以以更灵活的方式链接在一起。当你需要实现不同于detectron2中包含的"标准默认值"的某些东西时,可以重复使用这些定义明确的组件。

如果你只需要标准行为,请阅读入门指南(https://detectron2.readthedocs.io/tutorials/getting_started.html) 应该足够了。如果你需要将detectron2扩展到自己所需要的, 有关更多详细信息,请参见以下教程:

  • Detectron2包含一些标准数据集,但是你可以使用自定义数据集。请参阅(https://detectron2.readthedocs.io/tutorials/datasets.html)。

  • Detectron2包含从数据集创建数据加载器的标准逻辑,但是你也可以编写自己的逻辑。请参阅(https://detectron2.readthedocs.io/tutorials/data_loading.html)。

  • Detectron2实现许多标准的检测模型,并为你提供重写其行为的方法。请参见使用模型(https://detectron2.readthedocs.io/tutorials/models.html)和编写模型(https://detectron2.readthedocs.io/tutorials/write-models.html)。

  • Detectron2提供了默认的训练过程,适用于常见的训练任务。你可以使用hooks自定义它,也可以编写自己的训练过程。见(https://detectron2.readthedocs.io/tutorials/training.html)。

原文链接:https://detectron2.readthedocs.io/tutorials/extend.html

☆☆☆为方便大家查阅,小编已将Detectron2专栏文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“文章”,如图:

或点击下方“阅读原文”,进入Detectron2专栏,即可查看系列文章。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文(无广告)。

扫描二维码添加小编↓