Ultralytics YOLO27:

Cómo contribuir 🚀#

¡Te damos la bienvenida! Nos encanta que te estés planteando contribuir a los proyectos de código abierto de Ultralytics. Tu participación ayuda a mejorar la calidad de nuestros repositorios y beneficia a toda la comunidad de la visión por ordenador.

Directrices completas

Para consultar unas directrices de contribución exhaustivas, visita también la Guía oficial de contribución de Ultralytics en nuestra documentación principal.

Colaboradores de código abierto de Ultralytics

Vídeo: Cómo contribuir a Ultralytics#

Guía de inicio rápido 🎯#

¿Listo para contribuir? Sigue estos pasos:

  1. Lee nuestro Código de conducta - Respeto, amabilidad y profesionalidad
  2. Crea un fork del repositorio al que quieras contribuir
  3. Crea una rama de funcionalidad con un nombre descriptivo
  4. Haz tus cambios siguiendo los estándares de codificación
  5. Escribe pruebas para la nueva funcionalidad
  6. Envía una pull request con una descripción clara
  7. Firma el CLA comentando en tu PR
  8. Responde a los comentarios de los revisores

Consulta el Flujo de trabajo de desarrollo para conocer el proceso detallado de las PR.

Directrices de contribución 📋#

Código de conducta 🤝#

Todas las personas colaboradoras deben cumplir nuestro Código de conducta, basado en el Pacto del Colaborador. Esto garantiza un entorno acogedor e inclusivo para todos. El respeto, la amabilidad y la profesionalidad son la base de nuestra comunidad.

Acuerdo de licencia del contribuyente (CLA) 📝#

Antes de que podamos fusionar tu PR, debes firmar nuestro CLA. Este acuerdo legal garantiza que las contribuciones se autoricen correctamente bajo AGPL-3.0, protegiéndote tanto a ti como al proyecto.

Después de enviar tu PR, el bot del CLA te guiará. Para firmarlo, escribe un comentario:

I have read the CLA Document and I sign the CLA

El CLA incluye:

  • Licencias de derechos de autor y patentes para tus contribuciones
  • Derechos de Ultralytics para usar y distribuir tu trabajo
  • Declaraciones de que eres titular de los derechos de tus contribuciones
  • Exención de garantías

Consulta el documento completo del CLA para conocer todas las condiciones.

Buenas prácticas ✨#

Al contribuir con código:

  • Evita la duplicación: Reutiliza el código existente siempre que sea posible
  • Haz cambios más pequeños: Prioriza modificaciones específicas frente a cambios a gran escala
  • Simplifica: Busca oportunidades de simplificación
  • Ten en cuenta la compatibilidad: Evita romper el código existente
  • Usa un formato coherente: Sigue Ruff Formatter
  • Añade pruebas: Incluye pruebas para las nuevas funcionalidades
  • Actualiza la documentación: Mantén la documentación al día

Estándares de codificación 📐#

  • Docstrings: Usa docstrings con el estilo de Google con tipos entre paréntesis
  • Longitud de línea: 120 caracteres como máximo
  • Imports: Usa pathlib en lugar de os
  • Pruebas: Todas las PR deben superar las pruebas de CI
  • Anotaciones de tipo: Úsalas cuando resulten beneficiosas

Consulta el Flujo de trabajo de desarrollo para conocer todos los estándares de codificación.

Formas de contribuir 🌟#

Contribuciones de código 💻#

  • Nuevas funcionalidades y mejoras para los modelos YOLO
  • Correcciones de errores y resolución de incidencias
  • Optimizaciones de rendimiento para el entrenamiento y la inferencia
  • Compatibilidad con formatos de exportación para distintas opciones de despliegue
  • Mejoras de compatibilidad con plataformas

Documentación 📚#

  • Mejora la documentación existente
  • Añade tutoriales y guías para casos de uso específicos
  • Corrige errores tipográficos y fallos
  • Traduce la documentación a otros idiomas

Pruebas 🧪#

  • Escribe pruebas unitarias para las nuevas funcionalidades
  • Prueba las nuevas funcionalidades con distintos modelos y tareas
  • Informa de las carencias de cobertura de pruebas
  • Evaluación comparativa del rendimiento en distintas plataformas

Soporte de la comunidad 💬#

  • Responde a preguntas en GitHub Discussions
  • Ayuda a los usuarios en Discord
  • Revisa las pull requests
  • Clasifica las incidencias

Informar de errores 🐞#

Ayúdanos a mejorar informando de errores mediante GitHub Issues:

Requisitos para informar de errores#

  1. Comprueba las incidencias existentes para evitar duplicados
  2. Crea un Ejemplo mínimo reproducible (MRE) - Código pequeño y autónomo que reproduce la incidencia
  3. Describe el entorno: sistema operativo, versión de Python, versiones de las bibliotecas y hardware (CPU/GPU)
  4. Explica el comportamiento esperado y el real con mensajes de error y trazas

Qué debe tener un buen MRE#

Un ejemplo mínimo reproducible debe:

  • Aislar el problema: Elimina el código innecesario
  • Usar modelos y conjuntos de datos públicos: p. ej., yolo26n.pt y coco8.yaml
  • Incluir las dependencias: Enuméralas con yolo checks o pip list
  • Ofrecer una descripción clara: Comportamiento esperado y real
  • Tener el formato adecuado: Usa bloques de código con tres comillas invertidas
  • Ser comprobable: Otras personas deben poder ejecutarlo sin modificaciones

Consulta la guía completa de MRE para obtener instrucciones detalladas.

Revisión de pull requests 👀#

Revisar PR es una contribución valiosa:

  • Comprueba las pruebas unitarias: Verifica las pruebas de las nuevas funcionalidades
  • Revisa la documentación: Asegúrate de que la documentación esté actualizada
  • Evalúa el rendimiento: Ten en cuenta el impacto en la velocidad y la memoria
  • Verifica las pruebas de CI: Confirma que todas las pruebas superen los controles
  • Ofrece comentarios constructivos: Sé específico y útil
  • Reconoce el esfuerzo: Da las gracias a las personas colaboradoras

Información sobre la licencia 📜#

Licencia AGPL-3.0#

Ultralytics usa AGPL-3.0 para sus repositorios. Esto fomenta la apertura, la transparencia y la mejora colaborativa.

Uso de YOLO en tu proyecto#

Si usas modelos o código de Ultralytics YOLO en tu proyecto, AGPL-3.0 exige que todo tu trabajo derivado también se publique como código abierto bajo AGPL-3.0.

Por qué es importante cumplir:

  • Mantiene el software abierto en beneficio de la comunidad
  • Es un requisito legal al usar código AGPL-3.0
  • Fomenta la colaboración y la transparencia

Alternativa: Si prefieres no publicar tu proyecto como código abierto, obtén una licencia Enterprise.

Cómo cumplir con AGPL-3.0#

Haz que el código fuente completo esté disponible públicamente bajo AGPL-3.0:

  1. Elige el punto de partida:

  2. Concede una licencia a tu proyecto:

    • Añade el archivo LICENSE con el texto completo de AGPL-3.0
    • Añade el aviso de licencia al principio de los archivos de código fuente
  3. Publica el código fuente, incluidos:

    • Aplicación o sistema completo
    • Modificaciones del código de Ultralytics
    • Scripts de entrenamiento/validación/inferencia
    • Pesos del modelo si se han modificado
    • Archivos de configuración y conjuntos de datos utilizados
    • Código del backend/frontend
    • Bibliotecas de terceros modificadas
    • Datos de entrenamiento si se pueden redistribuir
  4. Documenta claramente:

    • Indica la licencia AGPL-3.0 en README.md
    • Incluye instrucciones de configuración
    • Atribuye Ultralytics YOLO correctamente

Consulta el repositorio de plantillas de Ultralytics para ver un ejemplo de estructura.

Nuestro equipo de desarrollo 👥#

No dudes en ponerte en contacto con los miembros del equipo para recibir orientación:

NombrePerfil de GitHub
Abi AndersonUltralyticsAbi
Abirami Vinaabirami-vina
Alex WongUltraAlex118
Alexis Schutzgerpicsalex
Altaïr Kabunda-Margaletaltair-jpg
Anastasiia Khrapalnastijakh
Anthony Evansantevansultralytics
Antonina PoludenaAntonina2111
Craig Johnstoncraigjohnston1
Darin Kabashidarin-k
Ed Crooked-yolo
Esat Kalfaogluartest08
Fatih Akyonfcakyon
Francesco Mattioliambitious-octopus
Giovanni Dal Zillioggg-dz-ultralytics
Glenn Jocherglenn-jocher
Hannah StreifHannahStreif
Irene Calatravaicalatrava
Jake Qianfengqianjake
Javier ChulviJaviChulvi
Jianing Qi (Jalyn)jianing-Jalyn
Jin Xulaodouya
Jing QiuLaughing-q
Joey CheriseaCherisea
Joey TjonNoCodeJoey
Kasim Acikbaskayselmecnun
Kristian Sommersokrisba
Lakshantha Dissanayakelakshanthad
Leo Samsingerlsamsinger
Marius KeiserSkillnoob
Matt Bristowmatt-ultralytics
Maxim Sokolovsomal
Mengyu (Mason) Liulmycross
Miles Deansmiles-deans-ultralytics
Mohammed YasinY-T-G
Muhammad Rizwan MunawarRizwanMunawar
Murat Raimbekovraimbekovm
Nicolai Nielsenniconielsen32
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

Obtén asistencia 💬#

¿Tienes preguntas o necesitas ayuda?

¡Gracias! 🎉#

Gracias por tu interés en contribuir a los proyectos de código abierto de Ultralytics. Tu participación es esencial para dar forma al futuro de nuestro software y construir una comunidad dinámica de innovación y colaboración.

Nos entusiasma ver cómo tus ideas cobran vida y agradecemos tu compromiso con el avance de la tecnología de detección de objetos. ¡Sigamos creciendo e innovando juntos! 🚀🌟

Recursos 📚#