Создание минимального воспроизводимого примера для отчётов об ошибках#
При отправке отчёта об ошибке для репозиториев Ultralytics YOLO важно предоставить минимальный воспроизводимый пример (MRE). 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
# 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)Сообщение об ошибке:
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.