如何贡献 🚀
欢迎!我们非常高兴你考虑为 Ultralytics 的开源项目做出贡献。你的参与有助于提高我们代码库的质量,并造福整个计算机视觉社区。
如需全面的贡献指南,请同时参阅我们主要文档中的 官方 Ultralytics 贡献指南。
观看:为 Ultralytics 做出贡献
快速入门指南 🎯
准备好做出贡献了吗?请按照以下步骤操作:
- 阅读我们的 行为准则 - 尊重、友善和专业
- Fork 你想要贡献的存储库
- 创建一个具有描述性名称的功能分支
- 按照编码标准进行修改
- 为新功能编写测试
- 提交具有清晰描述的 pull request
- 通过在你的 PR 中评论来签署 CLA
- 回复评审人员的反馈
请参阅 开发工作流 以了解详细的 PR 流程。
贡献指南 📋
行为准则 🤝
所有贡献者必须遵守我们的 行为准则,该准则基于 Contributor Covenant。这能确保为一个每个人都感到受欢迎和包容的环境。尊重、友善和专业是我们社区的核心。
贡献者许可协议 (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
- 分类整理问题
报告 Bug 🐞
通过 GitHub Issues 报告 Bug 来帮助我们改进:
Bug 报告要求
- 检查现有问题以避免重复
- 创建 最小可重现示例 (MRE) - 用于重现该问题的简短、独立的自包含代码
- 描述环境:操作系统、Python 版本、库版本、硬件 (CPU/GPU)
- 解释预期行为与实际行为,并附上错误消息和追踪信息
什么是优秀的 MRE
最小可重现示例应:
- 隔离问题:移除不必要的代码
- 使用公开的模型和数据集:例如
yolo26n.pt和coco8.yaml - 包含依赖项:使用
yolo checks或pip 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 代码时的法律要求
- 促进协作和透明度
替代方案: 如果你不想开源你的项目,请获取 Enterprise License。
如何遵守 AGPL-3.0
在 AGPL-3.0 下公开提供完整的源代码:
-
选择起点:
-
为你的项目授权:
- Add
LICENSEfile with full AGPL-3.0 text - 在源代码文件的顶部添加许可声明
- Add
-
发布源代码,包括:
- 完整的应用程序/系统
- 对 Ultralytics 代码的修改
- Training/validation/inference 脚本
- 如果经过修改,则包含模型权重
- 所使用的配置文件和 datasets
- 后端/前端代码
- 修改过的第三方库
- 如果可再分发,则包含训练数据
-
清晰记录文档:
- 在
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 |
| Andrei Banica | banica-ultralytics |
| Antonina Poludena | Antonina2111 |
| Burhan Qaddoumi | Burhan-Q |
| Craig Johnston | craigjohnston1 |
| Craig Maxwell | craig-ships-it |
| Esat Kalfaoglu | artest08 |
| Fatih Akyon | fcakyon |
| Francesco Mattioli | ambitious-octopus |
| Giovanni Dal Zillio | ggg-dz-ultralytics |
| Glenn Jocher | glenn-jocher |
| Hannah Streif | HannahStreif |
| Jake Qian | fengqianjake |
| Jianing Qi (Jalyn) | jianing-Jalyn |
| Jin Xu | laodouya |
| Jing Qiu | Laughing-q |
| Joey Tjon | NoCodeJoey |
| Kasim Acikbas | kayselmecnun |
| Kirill Verbitsky | Kverbitski |
| Kristian Sommer | sokrisba |
| Lakshantha Dissanayake | lakshanthad |
| Leo Samsinger | lsamsinger |
| Marius Keiser | Skillnoob |
| Matt Bristow | matt-ultralytics |
| Mengyu (Mason) Liu | lmycross |
| Miles Deans | miles-deans-ultralytics |
| Mohammed Yasin | Y-T-G |
| Muhammad Rizwan Munawar | RizwanMunawar |
| Mykola Boiko | mykolaxboiko |
| Nicolai Nielsen | niconielsen32 |
| Nuvola Ladi | NLadi |
| Olivia Wang | ziyue-olivia |
| Onuralp Sezer | onuralpszr |
| Pablo Karnbaum | pablokarnbaum |
| Paula Derrenger | pderrenger |
| Prateek Bhatnagar | prateek-ultralytics |
| Rick Hou | Bovey0809 |
| Sergiu Waxmann | sergiuwaxmann |
| Shuai (Louis) Lyu | ShuaiLYU |
| Thomas Chuang | chuang091 |
| Yogendra Singh | yogendrasinghx |
| Tigran Hakobyan | t-hakobyan |
| Zinnia Pourdad | zinnialp |
| Zuzana Kontrikova | zkontri |
获取支持 💬
有疑问或需要帮助吗?
- 在 GitHub 上提交 issue
- 加入 GitHub Discussions
- 通过 Discord 进行交流
- 查看 文档
- 访问 帮助中心
- 浏览 Ultralytics 博客 获取教程和指南
- 探索 解决方案 以满足特定行业应用需求
谢谢! 🎉
感谢你对参与 Ultralytics 开源项目感兴趣。你的参与对于塑造我们软件的未来以及构建一个充满活力、创新与协作的社区至关重要。
我们期待看到你的创意落地,并感谢你致力于推动目标检测技术的进步。让我们一起继续成长与创新! 🚀🌟
