Salta para o conteúdo

Criando um Exemplo Mínimo Reprodutível para Relatórios de Bug em Ultralytics YOLO Repositórios

Ao submeter um relatório de bug para os repositórios Ultralytics YOLO , é essencial fornecer um exemplo mínimo reproduzível (MRE). Um MRE é um pequeno pedaço de código independente que demonstra o problema que estás a ter. Fornecer um MRE ajuda os mantenedores e colaboradores a entender o problema e trabalhar em uma correção de forma mais eficiente. Este guia explica como criar um MRE ao enviar relatórios de erros para os repositórios Ultralytics YOLO .

1. Isola o problema

O primeiro passo para criar um MRE é isolar o problema. Isto significa remover qualquer código desnecessário ou dependências que não estejam diretamente relacionadas com o problema. Concentra-te na parte específica do código que está a causar o problema e remove qualquer código irrelevante.

2. Utiliza modelos e conjuntos de dados públicos

Ao criar um MRE, usa modelos e conjuntos de dados disponíveis publicamente para reproduzir o problema. Por exemplo, usa o modelo 'yolov8n.pt' e o conjunto de dados 'coco8.yaml'. Isso garante que os mantenedores e colaboradores possam executar facilmente o teu exemplo e investigar o problema sem precisar de acesso a dados proprietários ou modelos personalizados.

3. Inclui todas as dependências necessárias

Certifica-te de que incluis todas as dependências necessárias no teu MRE. Se o teu código depende de bibliotecas externas, especifica os pacotes necessários e as suas versões. Idealmente, fornece um requirements.txt ou lista as dependências no teu relatório de bug.

4. Escreve uma descrição clara do problema

Fornece uma descrição clara e concisa do problema que estás a ter. Explica o comportamento esperado e o comportamento real que estás a encontrar. Se aplicável, inclui quaisquer mensagens de erro ou registos relevantes.

5. Formata o teu código corretamente

Quando submeteres um MRE, formata o teu código corretamente utilizando blocos de código na descrição do problema. Isso facilita a leitura e a compreensão do teu código por outras pessoas. No GitHub, podes criar um bloco de código envolvendo o teu código com três pontos traseiros (```) e especificando a linguagem:

# Your Python code goes here

6. Testa a tua MRE

Antes de enviar o teu MRE, testa-o para garantir que reproduz o problema com precisão. Certifica-te de que os outros podem executar o teu exemplo sem quaisquer problemas ou modificações.

Exemplo de uma MRE

Aqui está um exemplo de um MRE para um relatório de bug hipotético:

Descrição do erro:

Ao executar o detect.py na imagem de amostra do conjunto de dados 'coco8.yaml', recebo um erro relacionado com as dimensões da 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)

Mensagem de erro:

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

Dependências:

  • torch==2.0.0
  • ultralytics==8.0.90

Neste exemplo, o MRE demonstra o problema com uma quantidade mínima de código, utiliza um modelo público ('yolov8n.pt'), inclui todas as dependências necessárias e fornece uma descrição clara do problema juntamente com a mensagem de erro.

Ao seguir estas directrizes, ajudarás os responsáveis e contribuidores dos repositórios Ultralytics YOLO a compreender e a resolver o teu problema de forma mais eficiente.



Criado em 2023-11-12, Atualizado em 2023-11-12
Autores: glenn-jocher (1)

Comentários