Ultralytics YOLO27: 加入候补名单。
开始使用

如何贡献 🚀

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

完整指南

如需全面了解贡献指南,请参阅主文档中的Ultralytics 官方贡献指南。

Ultralytics 开源贡献者

观看:为 Ultralytics 做贡献#

快速入门指南 🎯#

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

  1. 阅读我们的行为准则 - 尊重他人、友善待人并保持专业
  2. Fork 你想要贡献的代码仓库
  3. 创建功能分支,并为分支取一个描述性名称
  4. 进行更改,遵循编码规范
  5. 为新功能编写测试
  6. 提交拉取请求,并附上清晰的说明
  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 测试
  • 类型提示:在适用时使用

有关完整编码规范,请参阅开发工作流程。

贡献方式 🌟#

代码贡献 💻#

文档 📚#

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

测试 🧪#

  • 为新功能编写单元测试
  • 使用不同的模型和任务测试新功能
  • 报告测试覆盖率缺口
  • 在不同平台上进行性能基准测试

社区支持 💬#

报告 Bug 🐞#

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

Bug 报告要求#

  1. 检查现有问题,避免重复报告
  2. 创建最小可复现示例 (MRE) - 能够复现问题的精简独立代码
  3. 描述环境:操作系统、Python 版本、库版本、硬件(CPU/GPU)
  4. 说明预期行为与实际行为的差异,并附上错误消息和回溯信息

什么样的 MRE 才算优秀#

最小可复现示例应当:

  • 隔离问题:移除不必要的代码
  • 使用公开模型和数据集:例如 yolo26n.pt 和 coco8.yaml
  • 列出依赖项:使用 yolo checks 或 pip list 列出
  • 提供清晰的描述:说明预期行为与实际行为
  • 正确设置格式:使用三个反引号括起代码块
  • 确保可测试:其他人无需修改即可运行

详细说明请参阅完整的 MRE 指南。

审查拉取请求 👀#

审查 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. 为你的项目选择许可证:

    • 添加 LICENSE 文件,其中包含完整的 AGPL-3.0 文本
    • 在源文件顶部添加许可证声明
  3. 发布源代码,包括:

    • 完整的应用程序/系统
    • 对 Ultralytics 代码所做的修改
    • 训练/验证/推理脚本
    • 修改过的模型权重
    • 配置文件和所用的数据集
    • 后端/前端代码
    • 修改过的第三方库
    • 可再分发的训练数据
  4. 清晰记录:

    • 在 README.md 中注明 AGPL-3.0 许可证
    • 提供安装说明
    • 恰当注明 Ultralytics YOLO 的归属

查看 Ultralytics 模板仓库,了解示例结构。

我们的开发团队 👥#

如需指导,欢迎联系团队成员:

姓名GitHub 个人资料
Abi AndersonUltralyticsAbi
Alex WongUltraAlex118
Alexis Schutzgerpicsalex
Altaïr Kabunda-Margaletaltair-jpg
Anastasiia Khrapalnastijakh
Anthony Evansantevansultralytics
Antonina PoludennaAntonina2111
Craig Johnstoncraigjohnston1
Darin Kabashidarin-k
Ed Crooked-yolo
Emilia Fariftehemilia-fari
Esat Kalfaogluartest08
Fatih Akyonfcakyon
Giovanni Dal Zilioggg-dz-ultralytics
Glenn Jocherglenn-jocher
Hannah StreifHannahStreif
Irene Calatravaicalatrava
Jake Qianfengqianjake
Javier ChulviJaviChulvi
Jianing Qi (Jalyn)jianing-Jalyn
Jillian Rubenoffjillian-rubenoff
Jin Xulaodouya
Jing QiuLaughing-q
Joey CheriseaCherisea
Joey TjonNoCodeJoey
Josh GoldenbergJoshyG-Ultralytics
Kasim Acikbaskayselmecnun
Kristian Sommersokrisba
Lakshantha Dissanayakelakshanthad
Leo Samsingerlsamsinger
Manuel CalveManuelCalve96
Marius KeiserSkillnoob
Matt Bristowmatt-ultralytics
Maxim Sokolovsomal
Mengyu (Mason) Liulmycross
Mihai Pricochimihai-ultralytics
Miles Deansmiles-deans-ultralytics
Mohammed YasinY-T-G
Muhammad Rizwan MunawarRizwanMunawar
Murat Raimbekovraimbekovm
Nuvola LadiNLadi
Olivia Wangziyue-olivia
Onuralp Sezeronuralpszr
Pablo Karnbaumpablokarnbaum
Paula Derrengerpderrenger
Rick HouBovey0809
Sergiu Waxmannsergiuwaxmann
Shuai (Louis) LyuShuaiLYU
Thomas Chuangchuang091
Tianshu Litianshu-Li715
Yogendra Singhyogendrasinghx
Zinnia Pourdadzinnialp
Zuzana Kontrikovazkontri

获取支持 💬#

有问题或需要帮助吗?

谢谢!🎉#

感谢你有兴趣为 Ultralytics 开源项目做贡献。你的参与对于塑造我们软件的未来,以及建设一个充满活力、倡导创新与协作的社区至关重要。

我们很期待看到你的想法变成现实,也感谢你为推动目标检测技术发展所付出的努力。让我们携手不断成长、持续创新!🚀🌟

资源 📚#