Создание минимального воспроизводимого примера для сообщений об ошибках#
При отправке сообщения об ошибке в репозиториях Ultralytics YOLO важно предоставить минимальный воспроизводимый пример (MRE). MRE — это небольшой автономный фрагмент кода, демонстрирующий возникшую у тебя проблему. Такой пример помогает сопровождающим и участникам понять проблему и эффективнее найти решение. В этом руководстве объясняется, как создать MRE при отправке сообщений об ошибках в репозитории Ultralytics YOLO.
1. Изолируй проблему#
Первый шаг при создании MRE — изолировать проблему. Удали весь лишний код и зависимости, не связанные напрямую с проблемой. Сосредоточься на конкретной части кода, вызывающей проблему, и исключи все не относящиеся к делу фрагменты.
2. Используй общедоступные модели и наборы данных#
При создании MRE используй общедоступные модели и наборы данных, чтобы воспроизвести проблему. Например, используй модель yolo26n.pt и набор данных coco8.yaml. Так сопровождающие и участники смогут легко запустить твой пример и изучить проблему без доступа к закрытым данным или пользовательским моделям.
3. Добавь все необходимые зависимости#
Укажи в MRE все необходимые зависимости. Если код использует внешние библиотеки, перечисли нужные пакеты и их версии. В идеале укажи зависимости в сообщении об ошибке с помощью yolo checks, если у тебя установлен ultralytics, или pip list для других инструментов.
4. Чётко опиши проблему#
Чётко и кратко опиши возникшую проблему. Объясни ожидаемое поведение и то, что происходит на самом деле. Если это уместно, добавь сообщения об ошибках или журналы.
5. Правильно отформатируй код#
Правильно отформатируй код, используя блоки кода в описании проблемы. Так другим будет проще прочитать и понять твой код. В GitHub можно создать блок кода, заключив код в тройные обратные кавычки (```) и указав язык:
```python
# Your Python code goes here
```6. Проверь MRE#
Перед отправкой проверь MRE, чтобы убедиться, что он точно воспроизводит проблему. Убедись, что другие смогут запустить твой пример без проблем и изменений.
Пример MRE#
Вот пример MRE для гипотетического сообщения об ошибке:
Описание ошибки:
При выполнении инференса на изображении с 0 каналами возникает ошибка, связанная с размерностями входного тензора.
MRE:
import torch
from ultralytics import YOLO
# Загрузи модель
model = YOLO("yolo26n.pt")
# Загружаем изображение с 0 каналами
image = torch.rand(1, 0, 640, 640)
# Запускаем модель
results = model(image)Сообщение об ошибке:
RuntimeError: Expected input[1, 0, 640, 640] to have 3 channels, but got 0 channels insteadЗависимости:
torch==2.8.0ultralytics==8.4.142
В этом примере MRE демонстрирует проблему с помощью минимального объёма кода, использует общедоступную модель ("yolo26n.pt"), включает все необходимые зависимости и чётко описывает проблему вместе с сообщением об ошибке.
Следуя этим рекомендациям, ты поможешь сопровождающим и участникам репозиториев Ultralytics YOLO эффективнее понять и решить проблему.
Часто задаваемые вопросы#
Чтобы создать эффективный минимальный воспроизводимый пример (MRE) для сообщений об ошибках в репозиториях Ultralytics YOLO, выполни следующие шаги:
- Изолируй проблему: удали код и зависимости, не связанные напрямую с проблемой.
- Используй общедоступные модели и наборы данных: используй общедоступные ресурсы, например
yolo26n.ptиcoco8.yaml, чтобы упростить воспроизведение проблемы. - Добавь все необходимые зависимости: укажи необходимые пакеты и их версии. Перечислить зависимости можно с помощью
yolo checks, если у тебя установленultralytics, илиpip list. - Чётко опиши проблему: объясни ожидаемое и фактическое поведение, включая сообщения об ошибках и журналы.
- Правильно отформатируй код: используй блоки кода, чтобы его было проще читать.
- Проверь MRE: убедись, что MRE воспроизводит проблему без изменений.
Подробное руководство смотри в разделе «Создание минимального воспроизводимого примера».
Общедоступные модели и наборы данных в MRE позволяют сопровождающим легко запустить твой пример без доступа к закрытым данным. Это помогает быстрее и эффективнее решать проблемы. Например, использование модели
yolo26n.ptи набора данныхcoco8.yamlпомогает стандартизировать и упростить отладку. Подробнее об общедоступных моделях и наборах данных читай в разделе «Используй общедоступные модели и наборы данных».Полное сообщение об ошибке Ultralytics YOLO должно включать:
- Чёткое описание: объясни проблему, ожидаемое и фактическое поведение.
- Сообщения об ошибках: добавь все относящиеся к делу сообщения об ошибках или журналы.
- Зависимости: перечисли необходимые зависимости и их версии.
- MRE: предоставь минимальный воспроизводимый пример.
- Шаги для воспроизведения: перечисли шаги, необходимые для воспроизведения проблемы.
Полный список пунктов смотри в разделе «Чётко опиши проблему».
Чтобы правильно отформатировать код при отправке сообщения об ошибке на GitHub:
- Используй тройные обратные кавычки (```), чтобы создать блок кода.
- Укажи язык программирования для подсветки синтаксиса, например ```python.
- Правильно расставь отступы в коде, чтобы его было удобно читать.
Пример:
```python # Your Python code goes here ```Другие советы по форматированию кода смотри в разделе «Правильно отформатируй код».
Перед отправкой MRE обязательно:
- Убедись, что проблему можно воспроизвести.
- Проверь, что все зависимости указаны и перечислены правильно.
- Удали весь лишний код.
- Проверь MRE и убедись, что он воспроизводит проблему без изменений.
Подробный список проверок смотри в разделе «Проверь MRE».