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

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

YOLO проблемы обучения и развертывания YOLO

Введение

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



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

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

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

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

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

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

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

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

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

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

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

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

  • Запуск 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: Support for GPU architectures earlier than Turing and compute capability (SM) < 7.5 was abandoned since cuDNN 9.11.0. So if you have an older GPU - like 1080Ti - you may have to use a version of PyTorch built against an older version of CUDA/cuDNN. You can check this by running 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}")

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

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

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

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

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

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

Проблема: Вы не уверены, верны ли настройки конфигурации в .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)
    

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

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

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

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

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

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

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

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

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

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

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

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

device: 0

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

Следите за папкой '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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

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

Как устранить ошибки установки с YOLO26?

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

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

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

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

Как убедиться, что моя модель YOLO26 обучается на GPU?

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

device: 0

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

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

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

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

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



📅 Создано 2 лет назад ✏️ Обновлено 5 дней назад
glenn-jocherRizwanMunawarUltralyticsAssistantartest08pderrengerakdanzY-T-Gwillie.maddox@gmail.comLaughing-q

Комментарии