Перейти к содержимому

Создание минимального воспроизводимого примера для сообщений об ошибках в репозиториях Ultralytics YOLO

При отправке сообщения об ошибке в репозиторий Ultralytics YOLO очень важно предоставить минимальный воспроизводимый пример (MRE). MRE - это небольшой, самодостаточный кусок кода, который демонстрирует проблему, с которой ты столкнулся. Предоставление MRE помогает сопровождающим и контрибьюторам понять проблему и более эффективно работать над ее исправлением. Это руководство объясняет, как создать MRE при отправке сообщений об ошибках в репозитории Ultralytics YOLO .

1. Изолируй проблему

Первым шагом в создании MRE является изоляция проблемы. Это значит, что нужно удалить весь ненужный код или зависимости, которые не имеют прямого отношения к проблеме. Сосредоточься на конкретной части кода, которая вызывает проблему, и удали весь нерелевантный код.

2. Используй публичные модели и наборы данных

При создании MRE используй общедоступные модели и наборы данных, чтобы воспроизвести проблему. Например, используй модель 'yolov8n.pt' и набор данных 'coco8.yaml'. Это гарантирует, что сопровождающие и контрибьюторы смогут легко запустить твой пример и исследовать проблему, не нуждаясь в доступе к собственным данным или пользовательским моделям.

3. Включи все необходимые зависимости

Обязательно включи в свой MRE все необходимые зависимости. Если твой код зависит от внешних библиотек, укажи необходимые пакеты и их версии. В идеале нужно указать requirements.txt файл или перечислите зависимости в своем сообщении об ошибке.

4. Напиши четкое описание проблемы

Дай четкое и лаконичное описание проблемы, с которой ты столкнулся. Объясни ожидаемое и фактическое поведение, с которым ты столкнулся. Если применимо, включи все соответствующие сообщения об ошибках или журналы.

5. Правильно форматируй свой код

При подаче MRE правильно оформляй свой код, используя кодовые блоки в описании проблемы. Так другим будет проще прочитать и понять твой код. В GitHub ты можешь создать кодовый блок, обернув свой код тройными обратными знаками (```) и указав язык:

# Your Python code goes here

6. Проверь свой MRE

Прежде чем отправить свой MRE, протестируй его, чтобы убедиться, что он точно воспроизводит проблему. Убедись, что другие могут запустить твой пример без каких-либо проблем или модификаций.

Пример MRE

Вот пример MRE для гипотетического сообщения об ошибке:

Описание бага:

При запуске detect.py скрипт на примере изображения из набора данных 'coco8.yaml', я получаю ошибку, связанную с размерами входных данных 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)

Сообщение об ошибке:

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

Зависимости:

  • torch==2.0.0
  • ultralytics==8.0.90

В этом примере MRE демонстрирует проблему с минимальным количеством кода, использует публичную модель ('yolov8n.pt'), включает все необходимые зависимости и предоставляет четкое описание проблемы вместе с сообщением об ошибке.

Следуя этим рекомендациям, ты поможешь мейнтейнерам и контрибьюторам репозиториев Ultralytics YOLO понять и решить твою проблему более эффективно.



Создано 2023-11-12, Обновлено 2023-11-12
Авторы: glenn-jocher (1)

Комментарии