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

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

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

Введение

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



Смотри: Ultralytics YOLO11 Common Issues | Installation Errors, Model Training Issues

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

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

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

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

  • Ensure that you have the correct version of PyTorch (1.8 or later) installed.

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

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

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

  • Ошибки импорта или проблемы с зависимостями - Если ты получаешь ошибки при импорте 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. Следи за их обновлением.

    • Program Configuration: Check if the program or code specifies GPU usage. In YOLO11, this might be in the settings or configuration.

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

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

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

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

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

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

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

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

Solution: Increasing the batch size can accelerate training, but it's essential to consider GPU memory capacity. To speed up training with multiple GPUs, follow these steps:

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

  • Измени свой конфигурационный файл .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)

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

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

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

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

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

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

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

  • TensorBoard: TensorBoard is a popular choice for visualizing training metrics, including loss, accuracy, and more. You can integrate it with your YOLO11 training process.
  • 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', чтобы найти журналы и метрики для эффективного контроля прогресса в тренировках.

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

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

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

  • Importance: The foundation of any machine learning model lies in the quality and format of the data it is trained on.

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

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

  • Importance: Achieving model convergence ensures that the model has sufficiently learned from the training data.

  • Recommendation: When training a model 'from scratch', it's vital to ensure that the model reaches a satisfactory level of convergence. This might necessitate a longer training duration, with more epochs, compared to when you're fine-tuning an existing model.

Learning Rate and Batch Size

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

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

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

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

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

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

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

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

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

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

Issue: When running predictions with a custom YOLO11 model, there are challenges with the format and visualization of the bounding box coordinates.

Решение:

  • Формат координат: YOLO11 предоставляет координаты ограничительной рамки в абсолютных значениях пикселей. Чтобы преобразовать их в относительные координаты (в диапазоне от 0 до 1), нужно разделить на размеры изображения. Например, допустим, размер твоего изображения 640х640. Тогда ты сделаешь следующее:
# 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

Issue: Facing issues with how to filter and display only specific objects in the prediction results when running YOLO11 using the Ultralytics library.

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

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

Понимание показателей точности в YOLO11

Issue: Confusion regarding the difference between box precision, mask precision, and confusion matrix precision in YOLO11.

Solution: Box precision measures the accuracy of predicted bounding boxes compared to the actual ground truth boxes using IoU (Intersection over Union) as the metric. Mask precision assesses the agreement between predicted segmentation masks and ground truth masks in pixel-wise object classification. Confusion matrix precision, on the other hand, focuses on overall classification accuracy across all classes and does not consider the geometric accuracy of predictions. It's important to note that a bounding box can be geometrically accurate (true positive) even if the class prediction is wrong, leading to differences between box precision and confusion matrix precision. These metrics evaluate distinct aspects of a model's performance, reflecting the need for different evaluation metrics in various tasks.

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

Issue: Difficulty in retrieving the length and height of detected objects in YOLO11, especially when multiple objects are detected in an image.

Solution: To retrieve the bounding box dimensions, first use the Ultralytics YOLO11 model to predict objects in an image. Then, extract the width and height information of bounding boxes from the prediction results.

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 Docs: The official documentation provides a comprehensive overview of YOLO11, along with guides on installation, usage, and troubleshooting.

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

Заключение

Troubleshooting is an integral part of any development process, and being equipped with the right knowledge can significantly reduce the time and effort spent in resolving issues. This guide aimed to address the most common challenges faced by users of the YOLO11 model within the Ultralytics ecosystem. By understanding and addressing these common issues, you can ensure smoother project progress and achieve better results with your computer vision tasks.

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

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

ВОПРОСЫ И ОТВЕТЫ

Как решить проблемы с установкой YOLO11?

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

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

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

Tracking and visualizing training progress can be efficiently managed through tools like TensorBoard, Comet, and Ultralytics HUB. These tools allow you to log and visualize metrics such as loss, precision, recall, and mAP. Implementing early stopping based on these metrics can also help achieve better training outcomes.

Что делать, если YOLO11 не распознает мой формат датасета?

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

📅 Создано 1 год назад ✏️ Обновлено 1 месяц назад

Комментарии