YOLO Vision 2026:

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

YOLO common training and deployment issues

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



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

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

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

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

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

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

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

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

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

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

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

Запуск YOLO26 на GPU#

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

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

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

  • Убедись, что у тебя доступно несколько 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])

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

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

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

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

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

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

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

  • TensorBoard: TensorBoard — популярный выбор для визуализации метрик обучения, включая потери, accuracy и многое другое. Ты можешь интегрировать его в свой процесс обучения YOLO26.
  • Comet: Comet предоставляет обширный набор инструментов для отслеживания и сравнения экспериментов. Он позволяет отслеживать метрики, гиперпараметры и даже веса моделей. Интеграция с моделями YOLO также происходит просто, предоставляя тебе полный обзор цикла экспериментов.
  • Ultralytics Platform: Платформа Ultralytics предлагает специализированную среду для отслеживания моделей 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' для просмотра логов и метрик, чтобы эффективно контролировать прогресс обучения.

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

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

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

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

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

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

Learning Rate и Batch Size

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

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

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

Перекрестная проверка с предварительно обученными весами

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

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

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

Получение предсказаний ограничивающих рамок (bounding box) с твоей пользовательской моделью 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 task=segment mode=predict model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2

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

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

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

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

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

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

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 и памяти, чтобы выявлять любые аномалии в режиме реального времени. Также убедись, что ты используешь последнюю версию фреймворка или библиотеки.

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

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

Решение: Ознакомься с поддерживаемыми форматами и опциями для каждого формата в документации по Export mode, а затем выполни следующие проверки:

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

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

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

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

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

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

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

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

Заключение#

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

FAQ#

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

  • Обучение на одном GPU может идти медленно из-за больших размеров батча (batch sizes) или недостатка памяти. Чтобы ускорить обучение, используй несколько 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. Эти инструменты позволяют логировать и визуализировать такие метрики, как потери, precision, recall и mAP. Внедрение early stopping на основе этих метрик также может помочь достичь лучших результатов обучения.

  • Убедись, что твой датасет и метки соответствуют ожидаемому формату. Проверь, что аннотации точны и имеют высокое качество. Если у тебя возникли какие-либо проблемы, обратись к руководству Data Collection and Annotation за рекомендациями по лучшим практикам. Для получения дополнительных инструкций по конкретным наборам данных загляни в раздел Datasets в документации.

Комментарии