Перейти к содержимому

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

YOLO Изображение общих проблем

Введение

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



Смотри: Ultralytics YOLOv8 Общие проблемы | Ошибки при установке, проблемы с обучением модели

Общие вопросы

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

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

  • Ты используешь Python 3.8 или более позднюю версию, как и рекомендуется.

  • Убедись, что у тебя установлена правильная версия PyTorch (1.8 или более поздняя).

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

  • Следуй официальному руководству по установке шаг за шагом.

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

  • Ошибки импорта или проблемы с зависимостями - Если ты получаешь ошибки при импорте YOLOv8 или у тебя возникают проблемы, связанные с зависимостями, рассмотри следующие шаги по устранению неполадок:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Убедись, что путь к твоему .yaml файл конфигурации правильный.
  • Убедись, что ты передал путь к своему .yaml файл как data аргумент при вызове model.train(), как показано ниже:
model.train(data="/path/to/your/data.yaml", batch=4)

Ускорение обучения с помощью нескольких графических процессоров

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

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

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

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

  • Увеличь размер партии соответственно, чтобы полностью задействовать несколько 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, multi_scale=True)

Параметры непрерывного контроля

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

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

  • Точность
  • Отзыв
  • Средняя точность (mAP)

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

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

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

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

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

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

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

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

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

device: 0

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

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

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

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

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

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

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

Конвергенция моделей

  • Важность: Достижение сходимости модели гарантирует, что модель в достаточной степени обучилась на тренировочных данных.

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

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

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

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

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

  • Важность: Распределение классов в твоем наборе данных может повлиять на склонность модели к предсказаниям.

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

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

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

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

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

Получение предсказаний по границам с помощью твоей пользовательской модели YOLOv8

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

Решение:

  • Coordinate Format: YOLOv8 provides bounding box coordinates in absolute pixel values. To convert these to relative coordinates (ranging from 0 to 1), you need to divide by the image dimensions. For example, let's say your image size is 640x640. Then you would do the following:
# 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
  • Имя файла: Чтобы получить имя файла изображения, по которому ты предсказываешь, обратись к пути к файлу изображения прямо из объекта результата в цикле предсказания.

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

Проблема: Столкнулся с проблемой, как отфильтровать и отобразить только определенные объекты в результатах предсказания при запуске YOLOv8 с использованием библиотеки Ultralytics .

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

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

Понимание точных показателей в YOLOv8

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

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

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

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

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

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO("yolov8n.pt")

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

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

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

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

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

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

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

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

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

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

GitHub Issues: The YOLOv8 repository on GitHub has an Issues tab where you can ask questions, report bugs, and suggest new features. The community and maintainers are active here, and it's a great place to get help with specific problems.

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

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

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

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

Заключение

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

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

Счастливого устранения неполадок!



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (5), RizwanMunawar (1)

Комментарии