跳到内容

如何贡献 🚀

欢迎!我们很高兴您考虑为 Ultralytics 开源项目做出贡献。您的参与有助于提高我们代码仓库的质量,并使整个计算机视觉社区受益。

完整指南

有关全面的贡献指南,另请参阅我们主要文档中的Ultralytics官方贡献指南

Ultralytics开源贡献者

观看:为 Ultralytics 做贡献

快速入门指南 🎯

准备好贡献了吗?请按照以下步骤操作:

  1. 阅读我们的行为准则 - 尊重、友善和专业
  2. Fork 你想要贡献的仓库
  3. 创建一个具有描述性名称的特性分支
  4. 按照编码标准进行更改
  5. 为新功能编写测试
  6. 提交包含清晰描述的 pull request
  7. 签署 CLA,在你的 PR 中评论
  8. 回复审阅者的反馈意见

有关详细的PR流程,请参阅开发工作流程

贡献指南 📋

行为准则 🤝

所有贡献者都必须遵守我们的行为准则,该准则基于贡献者公约。这确保了每个人都能在一个热情和包容的环境中工作。尊重友善专业是我们社区的核心。

贡献者许可协议 (CLA) 📝

在合并您的PR之前,您必须签署我们的CLA(贡献者许可协议)。这项法律协议确保贡献内容已根据AGPL-3.0获得适当许可,从而保护您和项目。

提交PR后,CLA机器人将指导您完成签署。要签署,请评论:

I have read the CLA Document and I sign the CLA

CLA涵盖:

  • 您贡献内容的版权和专利许可
  • Ultralytics使用和分发您的作品的权利
  • 您拥有贡献内容权利的声明
  • 免责声明

请查看完整的CLA文档以了解完整的条款。

最佳实践 ✨

贡献代码时:

  • 避免重复:尽可能重用现有代码
  • 进行较小的更改:专注于修改,而不是大规模的更改
  • 简化:寻找简化的机会
  • 考虑兼容性:避免破坏现有代码
  • 使用一致的格式:遵循Ruff Formatter
  • 添加测试:为新功能添加测试
  • 更新文档:保持文档的及时性

编码标准 📐

  • 文档字符串:使用Google风格的文档字符串,并在括号中注明类型
  • 行宽:最多120个字符
  • 导入:使用 pathlib 代替 os
  • 测试:所有PR都必须通过CI测试
  • 类型提示:在有益的地方使用

请参阅开发工作流程,了解完整的编码标准。

贡献方式 🌟

代码贡献 💻

文档 📚

  • 改进现有的文档
  • 为特定用例添加教程和指南
  • 修正拼写错误和错误。
  • 将文档翻译成其他语言。

测试 🧪

  • 为新功能编写单元测试。
  • 在不同的模型任务中测试新功能。
  • 报告测试覆盖率缺口。
  • 跨平台的性能基准测试

社区支持 💬

问题报告 🐞

通过 GitHub Issues 报告错误,帮助我们改进:

Bug报告要求

  1. 检查现有问题以避免重复。
  2. 创建 最小可复现示例 (MRE) - 重现该问题的小型、独立的程式码。
  3. 描述环境:操作系统、Python 版本、库版本、硬件 (CPU/GPU)。
  4. 解释预期行为与实际行为,并提供错误消息和回溯。

如何撰写优秀的MRE

最小可复现示例应:

  • 隔离问题:删除不必要的程式码。
  • 使用公共模型和数据集例如: yolov8n.ptcoco8.yaml
  • 包含依赖项例如:包含 yolo checkspip list
  • 提供清晰的描述:预期行为与实际行为
  • 格式正确:使用带有三个反引号的代码块
  • 可测试:其他人无需修改即可运行

有关详细说明,请参阅完整的 MRE 指南

审查Pull Requests 👀

审查 PR 是有价值的贡献:

  • 检查单元测试:验证新功能的测试
  • 审查文档:确保文档已更新
  • 评估性能:考虑对速度/内存的影响
  • 验证 CI 测试:确认所有测试均通过
  • 提供建设性的反馈:具体且有帮助
  • 认可贡献:感谢贡献者

许可信息 📜

AGPL-3.0 许可

Ultralytics 的存储库使用 AGPL-3.0。这有助于提高开放性、透明度和协作改进。

在你的项目中使用YOLO

如果您在项目中使用 Ultralytics YOLO 模型或代码,则 AGPL-3.0 要求您的整个衍生作品也必须在 AGPL-3.0 下开源。

为什么合规性很重要:

  • 保持软件开放以造福社区
  • 使用 AGPL-3.0 代码时的法律要求
  • 促进协作和透明度

替代方案: 如果您不想开源您的项目,请获得 企业许可证

如何遵守AGPL-3.0

在 AGPL-3.0 下公开发布完整的源代码:

  1. 选择起点

  2. 为你的项目授权许可

  3. 在源文件顶部添加许可声明

    • 发布源代码,包括:
    • 完整的应用/系统
    • 对 Ultralytics 代码的修改
    • 训练/验证/推理 脚本
    • 如果修改过,则包括模型权重
    • 配置文件和使用的 数据集
    • 后端/前端代码
    • 修改过的第三方库
  4. 如果可重新分发,则包括训练数据

    • README/ README/
    • 中声明 AGPL-3.0 许可

包含设置说明

我们的开发团队 👥

如有疑问,请随时联系团队成员寻求指导:

姓名 GitHub 个人资料
Abrish Sabri asabri97
Abirami Vina abirami-vina
Alexis Schutzger picsalex
Burhan Qaddoumi Burhan-Q
Fatih Akyon fcakyon
Francesco Mattioli ambitious-octopus
Giovanni Dal Zillio ggg-dz-ultralytics
Glenn Jocher glenn-jocher
Hannah Streif HannahStreif
Jake Qian fengqianjake
Jing Qiu Laughing-q
Joey Tjon NoCodeJoey
Jordan Cooper JCoops1
Kasim Acikbas kayselmecnun
Kirill Viarbitski Kverbitski
Kiryl Oblikau munknex
Kristian Sommer sokrisba
Lakshantha Dissanayake lakshanthad
Marius Keiser Skillnoob
Mohammed Yasin Y-T-G
Muhammad Rizwan Munawar RizwanMunawar
Mykola Boiko mykolaxboiko
Nicolai Nielsen niconielsen32
Nuvola Ladi NLadi
Onuralp Sezer onuralpszr
Pablo Karnbaum pablokarnbaum
Paula Derrenger pderrenger
Prateek Bhatnagar prateek-ultralytics
Rick Hou Bovey0809
Ryan Leonel Somali ryanleonels
Sergiu Waxmann sergiuwaxmann
Thomas Chuang chuang091
William Beaven william-beaven
Yogendra Singh yogendrasinghx
Tigran Hakobyan tthakz
Zinnia Pourdad zinnialp
Shuai (Louis) Lyu ShuaiLYU
Abi Anderson UltralyticsAbi
Jin Xu laodouya
Zuzana Kontrikova zkontri
Miles Deans miles-deans-ultralytics
Mengyu (Mason) Liu lmycross
克雷格·麦克斯韦尔 克雷格-发货
安德烈·巴尼卡 ultralytics

获取支持 💬

有问题或需要帮助吗?

感谢您!🎉

感谢您对 Ultralytics 开源项目贡献的兴趣。 您的参与对于塑造我们软件的未来以及建立充满活力的创新和协作社区至关重要。

我们很高兴看到您的想法变为现实,并感谢您对推进目标detect技术的承诺。 让我们一起继续成长和创新! 🚀🌟

资源 📚



📅创建于21天前 ✏️更新于21天前