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

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

YOLO Common Issues Image

Введение

Это руководство служит всесторонней помощью в устранении распространенных проблем, возникающих при работе с 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.

Решение: Увеличение размера пакета может ускорить обучение, но важно учитывать объем памяти 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)
    

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

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

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

Вы можете получить доступ к этим метрикам из журналов обучения или с помощью таких инструментов, как 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'.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Получение прогнозов ограничивающей рамки с помощью вашей пользовательской модели 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, чтобы указать классы, которые вы хотите включить в вывод. Например, чтобы обнаруживать только автомобили (предполагая, что 'cars' имеют индекс класса 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 Issues: В репозитории 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 может быть медленным из-за большого размера пакета или недостаточного объема памяти. Чтобы ускорить обучение, используйте несколько GPU. Убедитесь, что в вашей системе есть несколько доступных GPU, и настройте ваш .yaml файл конфигурации для указания количества GPU, например: 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 год назад ✏️ Обновлено 2 месяца назад

Комментарии