Устранение распространенных проблем с YOLO

YOLO common training and deployment issues

Введение

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



Watch: Ultralytics YOLO26 Common Issues | Installation Errors, Model Training Issues

Распространенные проблемы

Ошибки при установке

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

  • Ты используешь Python 3.8 или более позднюю версию, как рекомендуется.
  • Убедись, что у тебя установлена правильная версия PyTorch (1.8 или новее).
  • Подумай об использовании виртуальных сред, чтобы избежать конфликтов.
  • Следуй официальному руководству по установке шаг за шагом.

Кроме того, вот некоторые распространенные проблемы при установке, с которыми сталкиваются пользователи, вместе с их решениями:

  • Ошибки импорта или проблемы с зависимостями — если у тебя возникают ошибки при импорте YOLO26 или проблемы с зависимостями, попробуй выполнить следующие действия по устранению неполадок:

    • Чистая установка: Иногда новая установка помогает решить неожиданные проблемы. Особенно с такими библиотеками, как Ultralytics, где обновления могут изменять структуру файлового дерева или функционал.

    • Регулярные обновления: Убедись, что ты используешь последнюю версию библиотеки. Более старые версии могут быть несовместимы с последними обновлениями, что ведет к конфликтам или ошибкам.

    • Проверка зависимостей: Удостоверься, что все необходимые зависимости установлены правильно и имеют совместимые версии.

    • Изучение изменений: Если ты клонировал или установил более старую версию, помни, что значительные обновления могут повлиять на структуру или функциональность библиотеки. Всегда обращайся к официальной документации или списку изменений (changelog), чтобы понять суть крупных обновлений.

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

  • Запуск YOLO26 на GPU — если у тебя возникают трудности с запуском YOLO26 на GPU, попробуй следующие шаги:

    • Проверка совместимости и установки CUDA: Убедись, что твой GPU совместим с CUDA и что CUDA установлена корректно. Используй команду nvidia-smi для проверки статуса твоего GPU NVIDIA и версии CUDA.

    • Проверка интеграции PyTorch и CUDA: Убедись, что PyTorch может использовать CUDA, выполнив import torch; print(torch.cuda.is_available()) в терминале Python. Если команда вернет 'True', PyTorch готов к работе с CUDA.

    • Проверка совместимости GPU: Поддержка архитектур GPU старше Turing и вычислительных возможностей (SM) < 7.5 была прекращена начиная с cuDNN 9.11.0. Поэтому, если у тебя старый GPU (например, 1080Ti), тебе может потребоваться использовать версию PyTorch, собранную с более старой версией CUDA/cuDNN. Проверить это можно командой import torch; cap = torch.cuda.get_device_capability(0) if torch.cuda.is_available() else (0, 0); cudnn = torch.backends.cudnn.version() or 0; ok = "not compatible" if cudnn >= 91100 and (cap[0] < 7 or (cap[0] == 7 and cap[1] < 5)) else "should be ok"; print(f"Compute capability: SM {cap[0]}.{cap[1]}, cuDNN: {cudnn} => {ok}")

    • Активация окружения: Убедись, что ты находишься в правильном окружении, где установлены все необходимые пакеты.

    • Обновление пакетов: Устаревшие пакеты могут быть несовместимы с твоим GPU. Поддерживай их в актуальном состоянии.

    • Настройка программы: Проверь, указано ли в программе или коде использование GPU. В YOLO26 это может быть задано в настройках или конфигурации.

Проблемы при обучении модели

В этом разделе разобраны частые проблемы, возникающие при обучении, а также их причины и способы решения.

Проверка конфигурационных настроек

Проблема: Ты не уверен, правильно ли применяются настройки из .yaml файла во время обучения модели.

Решение: Настройки из .yaml файла должны применяться при использовании функции model.train(). Чтобы убедиться в правильности их применения, выполни следующие действия:

  • Подтверди, что путь к твоему конфигурационному .yaml файлу указан верно.

  • Убедись, что ты передаешь путь к .yaml файлу как аргумент data при вызове model.train(), как показано ниже:

    model.train(data="/path/to/your/data.yaml", batch=4)

Ускорение обучения с использованием нескольких GPU

Проблема: Обучение идет медленно на одном GPU, и ты хочешь ускорить процесс, используя несколько GPU.

Решение: Увеличение batch size может ускорить обучение, но важно учитывать объем памяти GPU. Чтобы ускорить обучение на нескольких GPU, выполни следующие шаги:

  • Убедись, что у тебя доступно несколько GPU.

  • Измени свой конфигурационный .yaml файл, указав количество используемых GPU, например gpus: 4.

  • Увеличь размер пакета (batch size) соответственно, чтобы максимально эффективно использовать возможности всех GPU, не выходя за пределы объема памяти.

  • Измени команду запуска обучения, чтобы задействовать несколько GPU:

    # Adjust the batch size and other settings as needed to optimize training speed
    model.train(data="/path/to/your/data.yaml", batch=32)

Параметры непрерывного мониторинга

Проблема: Ты хочешь знать, какие параметры стоит отслеживать в ходе обучения, помимо функции потерь (loss).

Решение: Хотя loss является критически важной метрикой, также важно отслеживать другие показатели для оптимизации работы модели. Ключевые метрики для мониторинга в процессе обучения включают:

Ты можешь получить доступ к этим метрикам в логах обучения или использовать инструменты вроде TensorBoard или wandb для визуализации. Внедрение ранней остановки (early stopping) на основе этих метрик поможет достичь лучших результатов.

Инструменты для отслеживания прогресса обучения

Проблема: Ты ищешь рекомендации по инструментам для отслеживания хода обучения.

Решение: Для отслеживания и визуализации прогресса обучения ты можешь рассмотреть следующие инструменты:

  • TensorBoard: Популярный выбор для визуализации метрик обучения, включая loss, accuracy и другие. Ты можешь легко интегрировать его в процесс обучения YOLO26.
  • Comet: Предоставляет обширный инструментарий для отслеживания и сравнения экспериментов. Позволяет отслеживать метрики, гиперпараметры и даже веса модели. Интеграция с моделями YOLO очень проста и дает полный обзор твоего цикла экспериментов.
  • Ultralytics Platform: Предлагает специализированную среду для отслеживания моделей YOLO, создавая единую платформу для управления метриками, наборами данных и совместной работы с командой. Благодаря узкой специализации на YOLO, сервис предлагает более гибкие настройки отслеживания.

Каждый из этих инструментов имеет свои преимущества, поэтому при выборе ориентируйся на конкретные нужды своего проекта.

Как проверить, происходит ли обучение на GPU

Проблема: Значение 'device' в логах обучения равно 'null', и ты не уверен, идет ли обучение на GPU.

Решение: Значение 'device', равное 'null', обычно означает, что процесс обучения настроен на автоматическое использование доступного GPU, что является поведением по умолчанию. Чтобы гарантированно использовать конкретный GPU, ты можешь вручную установить значение 'device' на индекс GPU (например, '0' для первого GPU) в своем .yaml файле:

device: 0

Это принудительно назначит процесс обучения на указанный GPU. Если ты хочешь обучать на CPU, установи 'device' в значение 'cpu'.

Следи за папкой 'runs', где хранятся логи и метрики, чтобы эффективно отслеживать прогресс обучения.

Ключевые аспекты эффективного обучения модели

Вот несколько вещей, которые стоит учитывать, если ты сталкиваешься с проблемами при обучении модели.

Формат данных и метки

  • Важность: Основа любой machine learning модели — это качество и формат данных, на которых она обучается.
  • Рекомендация: Убедись, что твой пользовательский набор данных и соответствующие ему метки соответствуют ожидаемому формату. Важно проверить, что аннотации точны и высокого качества. Неверные или некачественные аннотации могут сорвать процесс обучения, что приведет к непредсказуемым результатам.

Сходимость модели

  • Важность: Достижение сходимости гарантирует, что модель успешно обучилась на training data.
  • Рекомендация: При обучении модели 'с нуля' критически важно добиться удовлетворительного уровня сходимости. Это может потребовать больше времени обучения и большего количества epochs по сравнению с дообучением (fine-tuning) уже существующей модели.

Learning Rate и размер пакета (batch size)

  • Важность: Эти гиперпараметры играют ключевую роль в том, как модель обновляет веса в процессе обучения.
  • Рекомендация: Регулярно оценивай, являются ли выбранный learning rate и размер пакета оптимальными для твоего набора данных. Параметры, которые не согласуются с характеристиками данных, могут замедлить производительность модели.

Распределение классов

  • Важность: Распределение классов в твоем наборе данных может влиять на предсказания модели.
  • Рекомендация: Регулярно анализируй распределение классов в своем наборе данных. При дисбалансе классов существует риск, что модель приобретет предвзятость к более представленному классу. Это можно увидеть в матрице ошибок (confusion matrix), где модель может преимущественно предсказывать мажоритарный класс.

Сравнение с предобученными весами

  • Важность: Использование предобученных весов дает отличную отправную точку для обучения, особенно когда данных мало.
  • Рекомендация: В качестве диагностического шага попробуй обучить модель на тех же данных, но с инициализацией предобученными весами. Если такой подход дает более качественную матрицу ошибок, это может означать, что модели 'с нуля' требуется больше времени на обучение или дополнительные настройки.

Проблемы с предсказаниями модели

В этом разделе обсуждаются типичные проблемы, возникающие при предсказании.

Получение предсказаний ограничивающих рамок (BBox) с твоей пользовательской моделью YOLO26

Проблема: При запуске предсказаний с пользовательской моделью YOLO26 возникают трудности с форматом и визуализацией координат ограничивающих рамок.

Решение:

  • Формат координат: YOLO26 предоставляет координаты ограничивающих рамок в абсолютных значениях пикселей. Чтобы перевести их в относительные координаты (от 0 до 1), нужно разделить их на размеры изображения. Например, если размер изображения 640x640, то сделай следующее:

    # Convert absolute coordinates to relative coordinates
    x1 = x1 / 640  # Divide x-coordinates by image width
    x2 = x2 / 640
    y1 = y1 / 640  # Divide y-coordinates by image height
    y2 = y2 / 640
  • Имя файла: Чтобы получить имя файла изображения, для которого делается предсказание, обратись к пути файла напрямую из объекта результата внутри цикла предсказания.

Фильтрация объектов в предсказаниях YOLO26

Проблема: Возникают вопросы, как отфильтровать и отобразить только нужные объекты в результатах предсказания при использовании YOLO26 через библиотеку Ultralytics.

Решение: Для обнаружения конкретных классов используй аргумент classes, чтобы указать, какие именно классы ты хочешь включить в результат. Например, чтобы детектировать только автомобили (предполагая, что у 'cars' индекс класса равен 2):

yolo task=detect mode=segment model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2

Понимание метрик точности (precision) в YOLO26

Проблема: Путаница в разнице между точностью рамок (box precision), точностью сегментации (mask precision) и точностью confusion matrix в YOLO26.

Решение: Box precision измеряет точность предсказанных рамок относительно реальных размеченных рамок, используя IoU (Intersection over Union) как метрику. Mask precision оценивает совпадение предсказанных сегментационных масок с реальными масками на уровне пикселей. Точность матрицы ошибок (confusion matrix precision), в свою очередь, фокусируется на общей точности классификации по всем классам и не учитывает геометрическую точность предсказаний. Важно отметить, что bounding box может быть геометрически точным (true positive), даже если предсказание класса неверно, что приводит к разнице между box precision и confusion matrix precision. Эти метрики оценивают разные аспекты производительности модели, что отражает необходимость использования различных метрик оценки в разных задачах.

Извлечение размеров объектов в YOLO26

Проблема: Сложность в получении длины и высоты детектированных объектов в YOLO26, особенно когда на изображении обнаружено много объектов.

Решение: Чтобы получить размеры ограничивающих рамок, сначала используй модель Ultralytics YOLO26 для обнаружения объектов на изображении. Затем извлеки информацию о ширине и высоте рамок из результатов предсказания.

from ultralytics import YOLO

# Load a pretrained YOLO26 model
model = YOLO("yolo26n.pt")

# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"

# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.25)

# Extract bounding box dimensions
boxes = results[0].boxes.xywh.cpu()
for box in boxes:
    x, y, w, h = box
    print(f"Width of Box: {w}, Height of Box: {h}")

Проблемы развертывания

Проблемы при развертывании на GPU

Проблема: Развертывание моделей в среде с несколькими GPU иногда может приводить к неожиданному поведению, например, непредсказуемому потреблению памяти, разным результатам на разных GPU и т.д.

Решение: Проверь инициализацию GPU по умолчанию. Некоторые фреймворки, такие как PyTorch, могут инициализировать операции CUDA на GPU по умолчанию перед переходом к назначенным GPU. Чтобы избежать нежелательной инициализации по умолчанию, указывай GPU напрямую при развертывании и предсказании. Используй инструменты для мониторинга использования GPU и памяти, чтобы выявлять аномалии в реальном времени. Также убедись, что используешь последнюю версию фреймворка или библиотеки.

Проблемы конвертации/экспорта моделей

Проблема: В процессе конвертации или экспорта моделей машинного обучения в другие форматы или платформы пользователи могут сталкиваться с ошибками или непредвиденным поведением.

Решение:

  • Проверка совместимости: Убедись, что используешь версии библиотек и фреймворков, которые совместимы друг с другом. Несовпадающие версии могут привести к неожиданным ошибкам при конвертации.
  • Сброс окружения: Если ты работаешь в интерактивной среде, такой как Jupyter или Colab, попробуй перезапустить окружение после внесения существенных изменений или установки новых компонентов. Чистый старт иногда решает скрытые проблемы.
  • Официальная документация: Всегда обращайся к официальной документации инструмента или библиотеки, которую ты используешь для конвертации. Там часто содержатся специфические рекомендации и лучшие практики для экспорта моделей.
  • Поддержка сообщества: Проверь официальный репозиторий библиотеки или фреймворка на наличие похожих проблем, о которых сообщали другие пользователи. Мейнтейнеры или сообщество могли уже предложить решения или обходные пути в дискуссиях.
  • Регулярные обновления: Убедись, что используешь последнюю версию инструмента или библиотеки. Разработчики часто выпускают обновления, исправляющие известные ошибки или улучшающие функциональность.
  • Инкрементальное тестирование: Прежде чем выполнять полную конвертацию, протестируй процесс на модели меньшего размера или наборе данных, чтобы выявить потенциальные проблемы на ранней стадии.

Сообщество и поддержка

Общение с сообществом единомышленников может значительно повысить твой опыт и успех в работе с YOLO26. Ниже приведены некоторые каналы и ресурсы, которые могут быть полезны.

Форумы и каналы для получения помощи

GitHub Issues: В репозитории YOLO26 на GitHub есть вкладка Issues, где ты можешь задать вопросы, сообщить об ошибках и предложить новые функции. Сообщество и сопровождающие проекта здесь активны, и это отличное место для получения помощи с конкретными проблемами.

Сервер Ultralytics в Discord: У Ultralytics есть сервер в Discord, где ты можешь пообщаться с другими пользователями и разработчиками.

Официальная документация и ресурсы

Документация Ultralytics YOLO26: Официальная документация содержит исчерпывающий обзор YOLO26, а также руководства по установке, использованию и устранению неполадок.

Эти ресурсы станут надежной базой для решения проблем и улучшения твоих проектов на базе YOLO26, а также помогут наладить общение с другими участниками сообщества YOLO26.

Заключение

Устранение неполадок — неотъемлемая часть любого процесса разработки, и наличие нужных знаний поможет значительно сократить время и усилия, затрачиваемые на решение проблем. Это руководство направлено на решение наиболее распространенных задач, с которыми сталкиваются пользователи модели YOLO26 в экосистеме Ultralytics. Понимая и решая эти типичные проблемы, ты сможешь обеспечить более плавный ход работы над проектом и достичь лучших результатов в своих задачах компьютерного зрения.

Помни, что сообщество Ultralytics — ценный ресурс. Взаимодействие с другими разработчиками и экспертами может дать дополнительные идеи и решения, которые могут не охватываться стандартной документацией. Продолжай учиться, экспериментировать и делиться своим опытом, чтобы вносить вклад в общие знания сообщества.

Часто задаваемые вопросы (FAQ)

Как решить ошибки установки YOLO26?

Ошибки установки часто возникают из-за проблем совместимости или отсутствия зависимостей. Убедись, что используешь Python 3.8 или новее и установил PyTorch 1.8 или новее. Полезно использовать виртуальные окружения, чтобы избежать конфликтов. Для пошагового руководства по установке следуй нашему официальному руководству по установке. Если ты столкнулся с ошибками импорта, попробуй выполнить чистую установку или обновить библиотеку до последней версии.

Почему моя модель YOLO26 обучается медленно на одном GPU?

Обучение на одном GPU может быть медленным из-за больших размеров пакетов (batch size) или нехватки памяти. Чтобы ускорить обучение, используй несколько GPU. Убедись, что в твоей системе доступно несколько GPU, и измени файл конфигурации .yaml, указав количество GPU, например gpus: 4. Увеличь размер пакета соответствующим образом, чтобы максимально задействовать GPU, не превышая лимиты памяти. Пример команды:

model.train(data="/path/to/your/data.yaml", batch=32)

Как убедиться, что моя модель YOLO26 обучается на GPU?

Если значение 'device' в логах обучения отображается как 'null', это обычно означает, что процесс обучения настроен на автоматическое использование доступного GPU. Чтобы явно назначить конкретный GPU, задай значение 'device' в файле конфигурации .yaml. Например:

device: 0

Это задает обучение на первом GPU. Используй команду nvidia-smi для проверки своей настройки CUDA.

Как отслеживать прогресс обучения моей модели YOLO26?

Отслеживание и визуализацию прогресса обучения можно эффективно настроить с помощью таких инструментов, как TensorBoard, Comet и платформа Ultralytics. Эти инструменты позволяют записывать и визуализировать такие метрики, как функция потерь (loss), точность (precision), полнота (recall) и mAP. Использование ранней остановки на основе этих метрик также может помочь достичь лучших результатов обучения.

Что делать, если YOLO26 не распознает формат моего набора данных?

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

Комментарии