Saltar al contenido

Creación de un ejemplo mínimo reproducible para los informes de errores en los repositorios Ultralytics YOLO

Cuando envíes un informe de error a los repositorios de Ultralytics YOLO , es esencial que proporciones un ejemplo mínimo reproducible (MRE). Un MRE es un fragmento de código pequeño y autónomo que demuestra el problema que estás experimentando. Proporcionar un MRE ayuda a los mantenedores y colaboradores a entender el problema y a trabajar en una solución de forma más eficiente. Esta guía explica cómo crear un MRE al enviar informes de errores a los repositorios de Ultralytics YOLO .

1. Aísla el problema

El primer paso para crear una MRE es aislar el problema. Esto significa eliminar cualquier código o dependencia innecesarios que no estén directamente relacionados con el problema. Céntrate en la parte concreta del código que está causando el problema y elimina cualquier código irrelevante.

2. Utilizar modelos y conjuntos de datos públicos

Cuando crees una MRE, utiliza modelos y conjuntos de datos disponibles públicamente para reproducir el problema. Por ejemplo, utiliza el modelo 'yolov8n.pt' y el conjunto de datos '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.

3. 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. Idealmente, proporciona un requirements.txt o enumera las dependencias en tu informe de errores.

4. Escribe una descripción clara del asunto

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

5. Formatea tu código correctamente

Cuando envíes una MRE, formatea tu código adecuadamente utilizando bloques de código en la descripción de la incidencia. Esto facilita a los demás la lectura y comprensión de tu código. En GitHub, puedes crear un bloque de código envolviendo tu código con tres puntos suspensivos (```) y especificando el idioma:

# Your Python code goes here

6. Prueba tu MRE

Antes de enviar tu MRE, pruébalo para asegurarte de que reproduce fielmente el problema. Asegúrate de que los demás puedan ejecutar tu ejemplo sin problemas ni modificaciones.

Ejemplo de MRE

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

Descripción del fallo:

Al ejecutar el detect.py en la imagen de muestra del conjunto de datos "coco8.yaml", obtengo un error relacionado con las dimensiones de la entrada tensor.

MRE:

import torch
from ultralytics import YOLO

# Load the model
model = YOLO("yolov8n.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.0.0
  • ultralytics==8.0.90

En este ejemplo, el MRE demuestra el problema con una cantidad mínima de código, utiliza un modelo público ('yolov8n.pt'), incluye todas las dependencias necesarias y proporciona una descripción clara del problema junto con el mensaje de error.

Si sigues estas directrices, ayudarás a los mantenedores y colaboradores de los repositorios de Ultralytics YOLO a comprender y resolver tu problema con mayor eficacia.



Creado 2023-11-12, Actualizado 2023-11-12
Autores: glenn-jocher (1)

Comentarios