Перейти к содержанию

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

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

Введение

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



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

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

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

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

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

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

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

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

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

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

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

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

  • Запуск YOLO11 на GPU - Если у вас возникли проблемы с запуском YOLO11 на 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 . В YOLO11 это может быть в настройках или конфигурации.

Вопросы обучения моделей

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

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

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

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

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

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

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

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

  • Убедитесь, что у вас есть несколько графических процессоров.
  • Измените конфигурационный файл .yaml, чтобы указать количество используемых графических процессоров, например, gpus: 4.
  • Увеличьте размер пакета соответственно, чтобы полностью задействовать несколько графических процессоров, не превышая лимит памяти.
  • Измените команду обучения, чтобы задействовать несколько графических процессоров:
# 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)

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

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

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

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

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

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

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

  • TensorBoard: TensorBoard - популярный инструмент для визуализации показателей обучения, включая потери, точность и многое другое. Вы можете интегрировать его с процессом обучения на сайте YOLO11 .
  • 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. Если вы хотите тренироваться на CPU, установите 'device' в 'cpu'.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Решение:

  • Формат координат: YOLO11 предоставляет координаты ограничительной рамки в абсолютных значениях пикселей. Чтобы преобразовать их в относительные координаты (в диапазоне от 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
  • Имя файла: Чтобы получить имя файла изображения, по которому выполняется предсказание, обратитесь к пути к файлу изображения непосредственно из объекта результата в цикле предсказания.

Фильтрация объектов в прогнозах YOLO11

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

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

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

Понимание точности измерений в YOLO11

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

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

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

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

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

from ultralytics import YOLO

# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.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, после внесения значительных изменений или установки следует перезапустить среду. Новый старт иногда помогает решить основные проблемы.
  • Официальная документация: Всегда обращайтесь к официальной документации инструмента или библиотеки, которую вы используете для конвертации. В ней часто содержатся специальные рекомендации и лучшие практики экспорта моделей.
  • Поддержка сообщества: Проверьте официальный репозиторий библиотеки или фреймворка на предмет аналогичных проблем, о которых сообщали другие пользователи. Возможно, сопровождающие или сообщество предоставили решения или обходные пути в ветках обсуждений.
  • Регулярно обновляйте: Убедитесь, что вы используете последнюю версию инструмента или библиотеки. Разработчики часто выпускают обновления, исправляющие известные ошибки или улучшающие функциональность.
  • Тестируйте постепенно: Прежде чем проводить полную конверсию, протестируйте процесс на меньшей модели или наборе данных, чтобы выявить потенциальные проблемы на ранней стадии.

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

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

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

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

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

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

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

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

Заключение

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

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

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

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Как устранить ошибки установки с помощью YOLO11?

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

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

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

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

Как обеспечить обучение модели YOLO11 на сайте GPU?

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

device: 0

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

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

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

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

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

📅 Создано 1 год назад ✏️ Обновлено 6 дней назад

Комментарии