Ultralytics YOLO27:

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

YOLO common training and deployment issues

Это руководство посвящено наиболее распространённым проблемам, с которыми ты можешь столкнуться при работе с Ultralytics YOLO26. Они сгруппированы по этапам, на которых возникают: установка, обучение модели, предсказание и развёртывание. Перейди к категории, соответствующей твоей ошибке, или просмотри раздел FAQ, чтобы быстро найти ответ. В каждом пункте описывается проблема и конкретное исправление, которое можно применить напрямую.



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

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

Ошибки установки#

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

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

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

Поддерживай Ultralytics и его зависимости в актуальном состоянии

Многие ошибки импорта, GPU и экспорта можно исправить простой установкой обновлений. Выполни pip install -U ultralytics и перед дальнейшей отладкой убедись, что версии PyTorch и CUDA совместимы.

Ошибки импорта или проблемы с зависимостями#

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

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

Запуск 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. При запуске обучения или предсказания можно задать аргумент device, например device=0.
Старые GPU и cuDNN 9.11.0+

Поддержка архитектур GPU, предшествующих Turing, — с вычислительной возможностью (SM) ниже 7.5, например 1080 Ti, — была прекращена в cuDNN 9.11.0. На старом GPU может потребоваться сборка 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}")

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

Ниже рассмотрены распространённые проблемы с обучением и способы их устранения.

Проверка параметров конфигурации#

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

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

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

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

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

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

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

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

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

  • Задай аргумент device как список индексов GPU, например device=[0,1,2,3].

  • Соответствующим образом увеличь размер пакета, чтобы полностью использовать несколько 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, device=[0, 1, 2, 3])

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

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

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

Ты можешь получить доступ к этим метрикам из журналов обучения или с помощью таких инструментов, как TensorBoard или Weights & Biases, для визуализации. Внедрение ранней остановки на основе этих метрик поможет тебе достичь лучших результатов.

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

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

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

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

Как проверить, выполняется ли обучение на GPU#

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

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

from ultralytics import YOLO

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

# Use GPU 0; device=[0, 1] for multiple GPUs, device="cpu" for CPU
model.train(data="path/to/data.yaml", device=0)

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

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

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

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

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

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

  • Важность: Достижение сходимости модели гарантирует, что модель достаточно хорошо обучилась на обучающих данных.
  • Рекомендация: При обучении модели «с нуля» важно убедиться, что она достигает удовлетворительного уровня сходимости. По сравнению с дообучением существующей модели это может потребовать более длительного обучения и большего количества эпох.

Скорость обучения и размер пакета

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

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

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

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

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

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

Ниже рассмотрены распространённые проблемы, возникающие при предсказании с помощью модели, и способы их устранения.

Получение предсказаний ограничивающих рамок с помощью пользовательской модели 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 и укажи классы, которые нужно включить в вывод. Например, чтобы обнаруживать только автомобили (если предположить, что индекс класса для «автомобилей» равен 2):

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

Понимание метрик точности в YOLO26#

Проблема: Непонимание различий между точностью рамок, точностью масок и точностью матрицы ошибок в YOLO26.

Решение: Точность рамок измеряет точность предсказанных ограничивающих рамок по сравнению с фактическими эталонными рамками, используя IoU (пересечение над объединением) в качестве метрики. Точность масок оценивает соответствие между предсказанными масками сегментации и эталонными масками при попиксельной классификации объектов. Точность матрицы ошибок, в свою очередь, отражает общую точность классификации по всем классам и не учитывает геометрическую точность предсказаний. Важно отметить, что ограничивающая рамка может быть геометрически точной (истинно положительной), даже если предсказан неправильный класс, что приводит к различиям между точностью рамок и точностью матрицы ошибок. Эти метрики оценивают разные аспекты производительности модели, что подчёркивает необходимость использования различных метрик оценки для разных задач.

Извлечение размеров объектов в 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, рассмотри возможность перезапустить его после значительных изменений или установок. Чистый запуск иногда помогает устранить скрытые проблемы.
  • Официальная документация: Всегда обращайся к официальной документации используемого инструмента или библиотеки для преобразования. В ней часто содержатся конкретные рекомендации и лучшие практики экспорта моделей.
  • Поддержка сообщества: Проверь официальный репозиторий библиотеки или фреймворка на наличие похожих проблем, о которых сообщили другие пользователи. Разработчики или сообщество могли предложить решения или обходные пути в обсуждениях.
  • Регулярно обновляй ПО: убедись, что используешь последнюю версию инструмента или библиотеки. Разработчики часто выпускают обновления, которые исправляют известные ошибки или улучшают функциональность.
  • Тестируй поэтапно: перед выполнением полной конвертации проверь процесс на модели или наборе данных меньшего размера, чтобы заранее выявить возможные проблемы.

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

Получи помощь и поделись решениями через эти каналы и ресурсы.

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

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

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

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

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

Заключение#

Большинство проблем с YOLO26 связано с несколькими основными причинами: несовпадением версий, форматированием набора данных и конфигурацией GPU. Если нужная ошибка не рассматривается здесь, поищи информацию на вкладке GitHub Issues или задай вопрос на сервере Discord — скорее всего, кто-то уже нашёл решение. Если у тебя более сложные проблемы с обучением, ознакомься с руководством Советы по обучению моделей, чтобы получить практические рекомендации и добиться лучших результатов в проектах по компьютерному зрению.

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

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

  • Обучение на одном GPU может идти медленно из-за большого размера пакета или недостатка памяти. Чтобы ускорить обучение, используй несколько GPU. Убедись, что в системе доступно несколько GPU, и задай аргумент device, например device=[0,1,2,3]. Соответственно увеличь размер пакета, чтобы полностью задействовать GPU, не превышая ограничения памяти. Пример команды:

    model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])
  • Если в журналах обучения значение «device» отображается как «null», обычно это означает, что процесс обучения настроен на автоматический выбор доступного GPU. Чтобы явно назначить конкретный GPU, передай аргумент device при запуске обучения, например yolo train data=path/to/data.yaml device=0 для первого GPU. Выполни команду nvidia-smi, чтобы проверить настройки CUDA.

  • Отслеживать и визуализировать прогресс обучения удобно с помощью таких инструментов, как TensorBoard, Comet и Ultralytics Platform. Эти инструменты позволяют регистрировать и визуализировать такие метрики, как loss, точность, полнота и mAP. Раннюю остановку на основе этих метрик также можно использовать для улучшения результатов обучения.

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

Комментарии