Ultralytics YOLO27:

Создание минимального воспроизводимого примера для отчётов об ошибках#

При отправке отчёта об ошибке для репозиториев 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.0
  • ultralytics==8.4.142

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

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

Часто задаваемые вопросы#

  • Чтобы создать эффективный минимальный воспроизводимый пример (MRE) для отчётов об ошибках в репозиториях Ultralytics YOLO, выполни следующие шаги:

    1. Изолируй проблему: удали весь код и зависимости, которые напрямую не связаны с проблемой.
    2. Используй общедоступные модели и наборы данных: используй общедоступные ресурсы, такие как yolo26n.pt и coco8.yaml, чтобы упростить воспроизведение.
    3. Включи все необходимые зависимости: укажи требуемые пакеты и их версии. Зависимости можно перечислить с помощью yolo checks, если у тебя установлен ultralytics, или pip list.
    4. Напиши понятное описание проблемы: объясни ожидаемое и фактическое поведение, включая сообщения об ошибках или журналы.
    5. Правильно отформатируй код: используй блоки кода, чтобы отформатировать код и упростить его чтение.
    6. Протестируй MRE: убедись, что MRE воспроизводит проблему без изменений.

    Подробное руководство см. в разделе Создание минимального воспроизводимого примера.

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

  • Полный отчёт об ошибке для Ultralytics YOLO должен включать:

    • Понятное описание: объясни проблему, ожидаемое и фактическое поведение.
    • Сообщения об ошибках: добавь соответствующие сообщения об ошибках или журналы.
    • Зависимости: перечисли необходимые зависимости и их версии.
    • MRE: предоставь минимальный воспроизводимый пример.
    • Шаги для воспроизведения: опиши шаги, необходимые для воспроизведения проблемы.

    Полный список проверок см. в разделе Напиши понятное описание проблемы.

  • Чтобы правильно отформатировать код при отправке отчёта об ошибке на GitHub:

    • Используй тройные обратные кавычки (```) для создания блоков кода.
    • Укажи язык программирования для подсветки синтаксиса, например ```python.
    • Убедись, что код правильно выровнен для удобства чтения.

    Пример:

    ```python
    # Your Python code goes here
    ```

    Дополнительные советы по форматированию кода см. в разделе Правильно отформатируй код.

  • Перед отправкой MRE убедись, что ты:

    • проверил воспроизводимость проблемы;
    • убедился, что все зависимости перечислены и указаны правильно;
    • удалил весь ненужный код;
    • протестировал MRE и убедился, что он воспроизводит проблему без изменений.

    Подробный список проверок см. в разделе Протестируй MRE.

Комментарии