为 detectron2 做贡献¶
问题¶
我们使用 GitHub 问题跟踪公共错误和问题。请确保在报告任何问题时遵循以下之一 问题模板.
Facebook 有一个 漏洞赏金计划 用于安全漏洞的安全披露。在这种情况下,请按照该页面上的概述流程操作,不要发布公共问题。
拉取请求¶
我们积极欢迎拉取请求。
但是,如果您添加任何重大功能(例如 > 50 行),请确保在发送 PR 之前与维护者讨论您的动机和提案。这样做是为了节省您的时间,这样您就不会花时间在我们将不会接受的 PR 上。
我们并不总是接受新功能,我们会考虑以下因素
是否可以在不修改 detectron2 的情况下实现相同的功能。detectron2 的设计使得您可以从外部实现许多扩展,例如 项目 中的扩展。
如果 detectron2 的某些部分不够可扩展,您也可以提出一个更通用的问题来改进它。此类功能请求可能对更多用户有用。
该功能是否对大量用户潜在有用(例如,有影响力的检测论文、流行的数据集、显著的加速、广泛有用的实用程序),或者只对一小部分用户有用(例如,鲜为人知的论文、非目标检测领域中的改进、社区中不太流行的技巧、处理非标准类型数据的代码)
默认情况下,在这些模型、数据集、新任务在社区中获得显著普及之前,不会添加到 detectron2 中。我们有时会在
projects/
中接受此类功能,或者作为projects/README.md
中的链接。
所提出的解决方案的设计/接口是否良好。这可以在 PR 之前在问题中进行讨论,或者以草案 PR 的形式进行讨论。
所提出的解决方案是否会给不需要此功能的用户带来额外的精神/实际负担。
所提出的解决方案是否会破坏现有的 API。
要向现有函数/类 Func
添加功能,始终有两种方法:(1) 向 Func
添加新参数;(2) 编写新的 Func_with_new_feature
。为了满足上述标准,我们通常更喜欢方法 (2),因为
它不涉及修改或可能破坏现有代码。
它不会给不需要新功能的用户增加负担。
向函数/类添加新参数在未来所有可能的新的研究思想方面不可扩展。
发送 PR 时,请执行以下操作
如果 PR 包含多个正交更改,请将其拆分为多个 PR。
如果您添加了需要测试的代码,请添加测试。
对于需要实验的 PR(例如添加新模型或新方法),您不需要更新模型库,但请在 PR 的描述中提供实验结果。
如果更改了 API,请更新文档。
我们在 python 中使用 Google 风格文档字符串。
确保您的代码使用
./dev/linter.sh
进行 lint 检查。
贡献者许可协议 (“CLA”)¶
为了接受您的拉取请求,我们需要您提交 CLA。您只需要这样做一次就可以处理 Facebook 的任何开源项目。
在此完成您的 CLA:https://code.facebook.com/cla
许可证¶
通过为 detectron2 做贡献,您同意您的贡献将在此源代码树根目录中的 LICENSE 文件下获得许可。