Ultralytics YOLO27:
Get Started

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

При отправке сообщения об ошибке в репозиториях 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.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».

Комментарии