Cómo contribuir 🚀
Le damos la bienvenida. Estamos encantados de que estés considerando contribuir a Ultralytics de código abierto. Su participación ayuda a mejorar la calidad de nuestros repositorios y beneficia a toda la comunidad de visión por computador.
Directrices completas
Para conocer las directrices completas de contribución, consulte también la Guía oficial de contribución Ultralytics en nuestra documentación principal.
Ver: Contribución a Ultralytics
Guía de inicio rápido 🎯
¿Listo para contribuir? Siga estos pasos:
- Lea nuestro Código de conducta - Respeto, amabilidad y profesionalidad
- Fork del repositorio al que desea contribuir
- Crear una rama con un nombre descriptivo
- Realice los cambios siguiendo las normas de codificación
- Escribir pruebas para nuevas funcionalidades
- Envíe una pull request con una descripción clara
- Firme el CLA comentándolo en su PR
- Responder a los comentarios de los revisores
Consulte Flujo de trabajo de desarrollo para conocer el proceso detallado de RP.
Directrices de contribución 📋
Código de conducta 🤝
Todos los colaboradores deben cumplir nuestro Código de Conducta, basado en el Pacto entre Colaboradores. Esto garantiza un entorno acogedor e integrador para todos. El respeto, la amabilidad y la profesionalidad están en el corazón de nuestra comunidad.
Acuerdo de licencia de colaborador (CLA) 📝
Antes de que podamos fusionar su RP, debe firmar nuestro CLA. Este acuerdo legal garantiza que las contribuciones están debidamente licenciadas bajo AGPL-3.0protegiéndole a usted y al proyecto.
Tras enviar tu RP, el bot de CLA te guiará. Para firmar, comente:
El CLA cubre:
- Licencias de derechos de autor y patentes para sus contribuciones
- Derechos para que Ultralytics utilice y distribuya su trabajo
- Declaraciones de que posee los derechos de sus contribuciones
- Exclusión de garantías
Consulte el documento CLA completo para conocer todas las condiciones.
Buenas prácticas ✨
Al aportar código:
- Evite la duplicación: Reutilizar el código existente siempre que sea posible.
- Haga cambios más pequeños: Modificaciones focalizadas frente a cambios a gran escala
- Simplificar: Busque oportunidades de simplificación
- Tenga en cuenta la compatibilidad: Evitar romper el código existente
- Utilice un formato coherente: Siga el formato Ruff
- Añadir pruebas: Incluir pruebas para las nuevas funciones
- Actualice la documentación: Mantenga actualizada la documentación
Normas de codificación 📐
- Docstrings: Utiliza docstringsGoogle con los tipos entre paréntesis
- Ancho de línea: 120 caracteres como máximo
- Importaciones: Utilice
pathliben lugar deos - Pruebas: Todos los RP deben pasar las pruebas de CI
- Sugerencias de tipo: Utilizar cuando sea beneficioso
Consulte Flujo de trabajo de desarrollo para conocer las normas de codificación completas.
Formas de contribuir 🌟
Código Contribuciones 💻
- Nuevas funciones y mejoras para los modelosYOLO
- Corrección de errores y resolución de problemas
- Optimización del rendimiento de la formación y la inferencia
- Soporte de formatos de exportación para varias opciones de despliegue
- Mejoras en la compatibilidad de plataformas
Documentación 📚
- Mejorar la documentación existente
- Añadir tutoriales y guías para casos de uso específicos
- Corregir erratas y errores
- Traducir la documentación a otros idiomas
Pruebas 🧪
- Escribir pruebas unitarias para nuevas funcionalidades
- Probar nuevas funciones en diferentes modelos y tareas
- Informar de las lagunas en la cobertura de las pruebas
- Evaluación comparativa del rendimiento entre plataformas
Apoyo comunitario 💬
- Responder a preguntas en los Debates de GitHub
- Ayuda a los usuarios en Discord
- Revisar pull requests
- Cuestiones de triaje
Informar de errores 🐞
Ayúdanos a mejorar informando de errores a través de GitHub Issues:
Requisitos para los informes de errores
- Compruebe los problemas existentes para evitar duplicados
- Crear un ejemplo mínimo reproducible (EMR): código pequeño y autónomo que reproduzca el problema.
- Describa el entorno: Sistema operativo, versión de Python , versiones de bibliotecas, hardwareCPUGPU)
- Explicar el comportamiento esperado frente al real con mensajes de error y rastreos
Cómo debe ser un buen MRE
Un ejemplo mínimo reproducible debería:
- Aislar el problema: Eliminar el código innecesario
- Utilizar modelos y conjuntos de datos públicosPor ejemplo
yolov8n.ptycoco8.yaml - Incluir dependencias: Lista con
yolo checksopip list - Proporcionar una descripción clara: Comportamiento esperado frente a comportamiento real
- Formatee correctamente: Utiliza bloques de código con triple punto y coma
- Ser comprobable: Que otros puedan ejecutarlo sin modificaciones
Consulte la Guía completa de MRE para obtener instrucciones detalladas.
Revisión de Pull Requests 👀
La revisión de los RP es una contribución valiosa:
- Compruebe las pruebas unitarias: Verificar las pruebas de las nuevas funciones
- Revisar la documentación: Asegurarse de que la documentación está actualizada
- Evalúe el rendimiento: Considerar el impacto en la velocidad/memoria
- Verifique las pruebas CI: Confirmar que todas las pruebas pasan
- Proporcione comentarios constructivos: Sea específico y útil
- Reconocer el esfuerzo: Agradecer a los colaboradores
Información sobre la licencia 📜
Licencia AGPL-3.0
Ultralytics utiliza AGPL-3.0 para los repositorios. Esto promueve la apertura, la transparencia y la mejora colaborativa.
Utilizar YOLO en su proyecto
Si utiliza Ultralytics YOLO en su proyecto, AGPL-3.0 AGPL-3.0 exige que todo su trabajo derivado esté también bajo AGPL-3.0.
Por qué es importante el cumplimiento:
- Software abierto en beneficio de la comunidad
- Requisito legal al utilizar código AGPL-3.0
- Fomenta la colaboración y la transparencia
Alternativa: Si prefiere que su proyecto no sea de código abierto, obtenga una licencia de empresa.
Cómo cumplir la AGPL-3.0
Poner a disposición del público el código fuente completo bajo AGPL-3.0:
-
Elige el punto de partida:
-
Licencia de su proyecto:
- Añadir
LICENSEarchivo completo Texto AGPL-3.0 - Añadir un aviso de licencia en la parte superior de los archivos fuente
- Añadir
-
Publicar código fuente incluido:
- Aplicación/sistema completo
- Modificaciones del código Ultralytics
- Guiones de formación/validación/inferencia
- Ponderación del modelo si se modifica
- Archivos de configuración y conjuntos de datos utilizados
- Código backend/frontend
- Bibliotecas de terceros modificadas
- Datos de entrenamiento si son redistribuibles
-
Documentar con claridad:
- Licencia AGPL-3.0 en
README/ - Incluir instrucciones de instalación
- Atributo Ultralytics YOLO adecuadamente
- Licencia AGPL-3.0 en
Consulte el Repositorio de plantillas deUltralytics para ver un ejemplo de estructura.
Nuestro equipo de desarrollo 👥
No dudes en ponerte en contacto con los miembros del equipo para que te orienten:
| Nombre | Perfil de GitHub |
|---|---|
| Abrish Sabri | asabri97 |
| Abirami Vina | abirami-vina |
| Alexis Schutzger | picsalex |
| Burhan Qaddoumi | Burhan-Q |
| Fatih Akyon | fcakyon |
| Francesco Mattioli | ambicioso-octopus |
| Giovanni Dal Zillio | 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 | 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 | UltralíticosAbi |
| Jin Xu | laodouya |
| Zuzana Kontrikova | zkontri |
| Miles Deans | ultralytics |
| Mengyu (Mason) Liu | lmycross |
Obtener asistencia 💬
¿Preguntas o necesita ayuda?
- Abrir una incidencia en GitHub
- Únete a los debates de GitHub
- Conectar en Discord
- Comprobar la documentación
- Visite el Centro de ayuda
- Consulte el blog deUltralytics para obtener tutoriales y guías
- Explore Soluciones para aplicaciones específicas del sector
¡Gracias! 🎉
Gracias por su interés en contribuir a los proyectos de código abierto Ultralytics . Su participación es esencial para dar forma al futuro de nuestro software y construir una comunidad vibrante de innovación y colaboración.
Nos entusiasma ver cómo sus ideas cobran vida y apreciamos su compromiso con el avance de la tecnología de detección de objetos. Juntos, ¡continuemos creciendo e innovando! 🚀🌟
Recursos 📚
- Guía oficial para contribuir - Directrices completas para contribuir
- Flujo de trabajo de desarrollo: proceso de relaciones públicas y normas de código
- CI/Testing - Pruebas y controles de calidad
- Flujo de trabajo de la documentación - Redacción de documentos
- Código de conducta - Normas comunitarias
- Documento CLA - Acuerdo de licencia de colaborador
- Guía MRE - Prácticas recomendadas para la notificación de errores
- Ultralytics Blog - Tutoriales y casos prácticos
- Eventos comunitarios - Seminarios web y conferencias
- Historias de clientes - Aplicaciones reales
