如何贡献 🚀#
欢迎!很高兴你考虑为 Ultralytics 开源项目贡献力量。你的参与有助于提升我们代码仓库的质量,并惠及整个计算机视觉社区。
如需全面了解贡献指南,还请参阅主文档中的 Ultralytics 官方贡献指南。
观看:为 Ultralytics 做贡献#
快速入门指南 🎯#
准备好贡献了吗?请按照以下步骤操作:
- 阅读我们的行为准则 - 尊重、友善和专业
- Fork 你想要贡献的代码仓库
- 创建功能分支,并使用描述性名称
- 进行修改,并遵循编码规范
- 为新功能编写测试
- 提交 Pull Request,并附上清晰的描述
- 签署 CLA,方法是在你的 PR 中发表评论
- 回复审阅者的反馈
详细的 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 Discussions 中回答问题
- 在 Discord 上帮助用户
- 审阅 Pull Request
- 分类处理问题
报告错误 🐞#
通过 GitHub Issues 报告错误,帮助我们改进:
错误报告要求#
- 检查现有问题,避免重复
- 创建最小可复现示例 (MRE) - 能够复现问题的小型独立代码
- 描述环境:操作系统、Python 版本、库版本、硬件(CPU/GPU)
- 说明预期行为与实际行为的差异,并附上错误消息和回溯信息
什么样的 MRE 才算合格#
最小可复现示例应当:
- 隔离问题:移除不必要的代码
- 使用公开模型和数据集:例如
yolo26n.pt和coco8.yaml - 包含依赖项:使用
yolo checks或pip list列出依赖项 - 提供清晰的描述:说明预期行为与实际行为
- 正确格式化:使用三个反引号包围的代码块
- 确保可测试:其他人无需修改即可运行
详细说明请参阅完整的 MRE 指南。
审阅 Pull Request 👀#
审阅 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 下公开提供完整源代码:
-
选择起点:
-
为你的项目授权:
- 添加
LICENSE文件,其中包含完整的 AGPL-3.0 文本 - 在源代码文件顶部添加许可证声明
- 添加
-
发布源代码,包括:
-
清晰记录:
- 在
README.md中声明 AGPL-3.0 许可证 - 包含设置说明
- 适当地注明 Ultralytics YOLO 的归属
- 在
有关示例结构,请参阅 Ultralytics Template Repository。
我们的开发团队 👥#
如需指导,欢迎联系团队成员:
| 姓名 | GitHub 个人资料 |
|---|---|
| Abi Anderson | UltralyticsAbi |
| Abirami Vina | abirami-vina |
| Alex Wong | UltraAlex118 |
| Alexis Schutzger | picsalex |
| Altaïr Kabunda-Margalet | altair-jpg |
| Anastasiia Khrapal | nastijakh |
| Anthony Evans | antevansultralytics |
| Antonina Poludena | Antonina2111 |
| Craig Johnston | craigjohnston1 |
| Darin Kabashi | darin-k |
| Ed Crook | ed-yolo |
| Esat Kalfaoglu | artest08 |
| Fatih Akyon | fcakyon |
| Francesco Mattioli | ambitious-octopus |
| Giovanni Dal Zillio | ggg-dz-ultralytics |
| Glenn Jocher | glenn-jocher |
| Hannah Streif | HannahStreif |
| Irene Calatrava | icalatrava |
| Jake Qian | fengqianjake |
| Javier Chulvi | JaviChulvi |
| Jianing Qi (Jalyn) | jianing-Jalyn |
| Jin Xu | laodouya |
| Jing Qiu | Laughing-q |
| Joey Cherisea | Cherisea |
| Joey Tjon | NoCodeJoey |
| Kasim Acikbas | kayselmecnun |
| Kristian Sommer | sokrisba |
| Lakshantha Dissanayake | lakshanthad |
| Leo Samsinger | lsamsinger |
| Marius Keiser | Skillnoob |
| Matt Bristow | matt-ultralytics |
| Maxim Sokolov | somal |
| Mengyu (Mason) Liu | lmycross |
| Miles Deans | miles-deans-ultralytics |
| Mohammed Yasin | Y-T-G |
| Muhammad Rizwan Munawar | RizwanMunawar |
| Murat Raimbekov | raimbekovm |
| Nicolai Nielsen | niconielsen32 |
| Nuvola Ladi | NLadi |
| Olivia Wang | ziyue-olivia |
| Onuralp Sezer | onuralpszr |
| Pablo Karnbaum | pablokarnbaum |
| Paula Derrenger | pderrenger |
| Rick Hou | Bovey0809 |
| Sergiu Waxmann | sergiuwaxmann |
| Shuai (Louis) Lyu | ShuaiLYU |
| Thomas Chuang | chuang091 |
| Tianshu Li | tianshu-Li715 |
| Yogendra Singh | yogendrasinghx |
| Zinnia Pourdad | zinnialp |
| Zuzana Kontrikova | zkontri |
获取支持 💬#
有问题或需要帮助?
- 在 GitHub 上提交 issue
- 加入 GitHub Discussions
- 在 Discord 上交流
- 查看文档
- 访问帮助中心
- 浏览 Ultralytics Blog 获取教程和指南
- 探索解决方案,了解特定行业的应用
谢谢!🎉#
感谢你对 Ultralytics 开源项目的关注并参与贡献。你的参与对于塑造我们软件的未来,以及构建充满创新与协作活力的社区至关重要。
我们期待看到你的想法落地,也感谢你致力于推动目标检测技术的发展。让我们携手继续成长与创新!🚀🌟
资源 📚#
- 官方贡献指南 - 完整的贡献指南
- 开发工作流 - PR 流程和代码规范
- CI/Testing - 测试与质量检查
- Documentation Workflow - 编写文档
- 行为准则 - 社区规范
- CLA Document - 贡献者许可协议
- MRE Guide - 报告 bug 的最佳实践
- Ultralytics Blog - 教程与案例研究
- 社区活动 - 网络研讨会和会议
- Customer Stories - 真实应用
