Cómo crear un ejemplo mínimo reproducible para informes de errores

Al enviar un informe de errores para los repositorios de Ultralytics YOLO, es fundamental proporcionar un Ejemplo Mínimo Reproducible (MRE). Un MRE es una pequeña porción de código autónomo que demuestra el problema que experimentas. Proporcionar un MRE ayuda a los mantenedores y colaboradores a entender el problema y trabajar en una solución de manera más eficiente. Esta guía explica cómo crear un MRE al enviar informes de errores a los repositorios de Ultralytics YOLO.

Aísla el problema

El primer paso para crear un MRE es aislar el problema. Elimina cualquier código o dependencia innecesaria que no esté directamente relacionado con el problema. Céntrate en la parte específica del código que causa el fallo y elimina cualquier sección irrelevante.

Usa modelos y datasets públicos

Al crear un MRE, utiliza modelos y datasets disponibles públicamente para reproducir el problema. Por ejemplo, usa el modelo yolo26n.pt y el dataset coco8.yaml. Esto garantiza que los mantenedores y colaboradores puedan ejecutar fácilmente tu ejemplo e investigar el problema sin necesidad de acceder a datos propietarios o modelos personalizados.

Incluye todas las dependencias necesarias

Asegúrate de incluir todas las dependencias necesarias en tu MRE. Si tu código depende de bibliotecas externas, especifica los paquetes necesarios y sus versiones. Lo ideal es listar las dependencias en tu informe de errores usando yolo checks si tienes instalado ultralytics o pip list para otras herramientas.

Escribe una descripción clara del problema

Proporciona una descripción clara y concisa del problema que experimentas. Explica el comportamiento esperado y el comportamiento real que observas. Si procede, incluye cualquier mensaje de error o registro relevante.

Formatea tu código correctamente

Formatea tu código correctamente usando bloques de código en la descripción del problema. Esto facilita que otros lean y entiendan tu código. En GitHub, puedes crear un bloque de código envolviendo el tuyo con triple comilla invertida (```) y especificando el lenguaje:

```python
# Your Python code goes here
```

Prueba tu MRE

Antes de enviar tu MRE, pruébalo para asegurarte de que reproduce el problema con precisión. Comprueba que otros puedan ejecutar tu ejemplo sin problemas ni modificaciones.

Ejemplo de un MRE

Aquí tienes un ejemplo de un MRE para un hipotético informe de error:

Descripción del error:

Al ejecutar la inferencia en una imagen de 0 canales, recibo un error relacionado con las dimensiones del tensor de entrada.

MRE:

import torch

from ultralytics import YOLO

# Load the model
model = YOLO("yolo26n.pt")

# Load a 0-channel image
image = torch.rand(1, 0, 640, 640)

# Run the model
results = model(image)

Mensaje de error:

RuntimeError: Expected input[1, 0, 640, 640] to have 3 channels, but got 0 channels instead

Dependencias:

  • torch==2.3.0
  • ultralytics==8.2.0

In this example, the MRE demonstrates the issue with a minimal amount of code, uses a public model ("yolo26n.pt"), includes all necessary dependencies, and provides a clear description of the problem along with the error message.

Al seguir estas pautas, ayudarás a los mantenedores y colaboradores de los repositorios de Ultralytics YOLO a entender y resolver tu problema de forma más eficiente.

Preguntas frecuentes

¿Cómo creo un Ejemplo Mínimo Reproducible (MRE) efectivo para informes de errores en los repositorios de Ultralytics YOLO?

Para crear un Ejemplo Mínimo Reproducible (MRE) efectivo para informes de errores en los repositorios de Ultralytics YOLO, sigue estos pasos:

  1. Aísla el problema: Elimina cualquier código o dependencia que no esté directamente relacionado con el problema.
  2. Usa modelos y datasets públicos: Utiliza recursos públicos como yolo26n.pt y coco8.yaml para facilitar la reproducibilidad.
  3. Incluye todas las dependencias necesarias: Especifica los paquetes necesarios y sus versiones. Puedes listar las dependencias usando yolo checks si tienes ultralytics instalado o pip list.
  4. Escribe una descripción clara del problema: Explica el comportamiento esperado y el real, incluyendo cualquier mensaje de error o registro.
  5. Formatea tu código correctamente: Usa bloques de código para formatear tu código, haciéndolo más fácil de leer.
  6. Prueba tu MRE: Asegúrate de que tu MRE reproduzca el problema sin modificaciones.

Para ver una guía detallada, consulta Creación de un Ejemplo Mínimo Reproducible.

¿Por qué debería usar modelos y datasets disponibles públicamente en mi MRE para informes de errores de Ultralytics YOLO?

Usar modelos y datasets públicos en tu MRE garantiza que los mantenedores puedan ejecutar tu ejemplo fácilmente sin necesidad de acceder a datos propietarios. Esto permite una resolución de problemas más rápida y eficiente. Por ejemplo, usar el modelo yolo26n.pt y el dataset coco8.yaml ayuda a estandarizar y simplificar el proceso de depuración. Aprende más sobre modelos y datasets públicos en la sección Usa modelos y datasets públicos.

¿Qué información debo incluir en mi informe de error para Ultralytics YOLO?

Un informe de error completo para Ultralytics YOLO debería incluir:

  • Descripción clara: Explica el problema, el comportamiento esperado y el comportamiento real.
  • Mensajes de error: Incluye cualquier mensaje de error o registro relevante.
  • Dependencias: Enumera las dependencias necesarias y sus versiones.
  • MRE: Proporciona un Ejemplo Mínimo Reproducible.
  • Pasos para reproducir: Esboza los pasos necesarios para reproducir el problema.

Para obtener una lista de comprobación completa, consulta la sección Escribe una descripción clara del problema.

¿Cómo puedo formatear mi código correctamente al enviar un informe de error en GitHub?

Para formatear tu código correctamente al enviar un informe de error en GitHub:

  • Usa triple comilla invertida (```) para crear bloques de código.
  • Especifica el lenguaje de programación para el resaltado de sintaxis, p. ej., ```python.
  • Asegúrate de que tu código esté correctamente indentado para facilitar la lectura.

Ejemplo:

```python
# Your Python code goes here
```

Para más consejos sobre el formato de código, consulta Formatea tu código correctamente.

¿Cuáles son algunos errores comunes que debo verificar antes de enviar mi MRE para un informe de error?

Antes de enviar tu MRE, asegúrate de:

  • Verificar que el problema sea reproducible.
  • Asegurarte de que todas las dependencias estén listadas y sean correctas.
  • Eliminar cualquier código innecesario.
  • Probar el MRE para asegurar que reproduzca el problema sin modificaciones.

Para obtener una lista de comprobación detallada, visita la sección Prueba tu MRE.

Comentarios