Устранение распространённых проблем с YOLO#
В этом руководстве собраны наиболее распространённые проблемы, с которыми ты можешь столкнуться при работе с Ultralytics YOLO26. Они сгруппированы по этапам: установка, обучение модели, предсказание и развёртывание. Перейди к разделу, соответствующему твоей ошибке, или просмотри раздел часто задаваемых вопросов, чтобы быстро найти ответ. В каждой записи описана проблема и приведён конкретный способ её устранения.
Смотри: Типичные проблемы Ultralytics YOLO26 | Ошибки установки, проблемы с обучением модели
Распространённые проблемы#
Ошибки установки#
Ошибки установки могут возникать по разным причинам, например из-за несовместимых версий, отсутствующих зависимостей или неправильной настройки среды. Для начала проверь следующее:
- Используй Python 3.8 или новее, как и рекомендуется.
- Убедись, что у тебя установлена правильная версия PyTorch (1.8 или новее).
- Используй виртуальные среды, чтобы избежать конфликтов.
- Шаг за шагом следуй официальному руководству по установке.
Кроме того, ниже приведены решения распространённых проблем с установкой.
Многие ошибки импорта, GPU и экспорта можно исправить простым обновлением. Запусти pip install -U ultralytics и перед углублённой отладкой убедись, что версии PyTorch и CUDA совместимы.
Ошибки импорта и проблемы с зависимостями#
Если при импорте YOLO26 возникают ошибки или появляются конфликты зависимостей, попробуй выполнить следующие действия:
- Чистая установка: чистая установка может устранить неожиданные проблемы, особенно после обновлений, меняющих структуру или функциональность пакета.
- Регулярные обновления: используй последнюю версию библиотеки, так как старые выпуски могут быть несовместимы с недавними обновлениями.
- Проверь зависимости: убедись, что все необходимые зависимости установлены правильно и имеют совместимые версии.
- Изучи изменения: если ты установил старую версию, обратись к официальной документации или журналу изменений, чтобы разобраться в существенных изменениях структуры.
Запуск YOLO26 на GPU#
Если у тебя возникли проблемы с запуском YOLO26 на GPU, попробуй выполнить следующие действия:
- Проверь совместимость с CUDA и её установку: убедись, что твой GPU совместим с CUDA и CUDA установлена правильно. Используй команду
nvidia-smi, чтобы проверить состояние GPU NVIDIA и версию CUDA. - Проверь совместную работу PyTorch и CUDA: убедись, что PyTorch может использовать CUDA, запустив
import torch; print(torch.cuda.is_available())в терминале Python. Если команда возвращает 'True', значит PyTorch настроен для работы с CUDA. - Активация среды: убедись, что находишься в нужной среде, где установлены все необходимые пакеты.
- Обнови пакеты: устаревшие пакеты могут быть несовместимы с твоим GPU. Поддерживай их в актуальном состоянии.
- Настройка программы: проверь, запрашивает ли код использование GPU. При запуске обучения или предсказания можно задать аргумент
device(например,device=0).
Поддержка архитектур GPU старше Turing — с вычислительной возможностью (SM) ниже 7.5, например 1080 Ti, — была удалена в cuDNN 9.11.0. Для старого GPU может понадобиться сборка PyTorch, скомпилированная с более ранней версией CUDA/cuDNN. Проверь конфигурацию с помощью:
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}")Проблемы при обучении модели#
Ниже описаны распространённые проблемы при обучении и способы их устранения.
Проверка параметров конфигурации#
Проблема: ты не уверен, что параметры конфигурации в файле .yaml правильно применяются при обучении модели.
Решение: параметры набора данных и параметры обучения хранятся в разных файлах .yaml и передаются через разные аргументы model.train(). Чтобы убедиться, что параметры применяются правильно, выполни следующие действия:
-
Убедись, что пути к файлам
.yamlуказаны правильно. -
Передай
.yamlнабора данных (пути, названия классов, разделение на выборки) как аргументdata, а пользовательские параметры обучения.yaml(например,epochsилиlr0) — как аргументcfg. Аргументы, непосредственно переданные вmodel.train(), имеют приоритет над обоими:model.train(data="/path/to/your/data.yaml", cfg="/path/to/your/cfg.yaml", batch=4)
Ускорение обучения с помощью нескольких GPU#
Проблема: обучение на одном GPU идёт медленно, и ты хочешь ускорить процесс, используя несколько GPU.
Решение: увеличение размера батча может ускорить обучение, но важно учитывать объём памяти GPU. Чтобы ускорить обучение с помощью нескольких GPU, выполни следующие действия:
-
Убедись, что у тебя доступны несколько GPU.
-
Задай аргумент
deviceкак список индексов GPU, напримерdevice=[0,1,2,3]. -
Соответственно увеличь размер батча, чтобы эффективно использовать несколько GPU и не превышать ограничения памяти.
-
Измени команду обучения, чтобы использовать несколько GPU:
# При необходимости настрой размер батча и другие параметры, чтобы оптимизировать скорость обучения model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])
Параметры для постоянного мониторинга#
Проблема: ты хочешь знать, за какими параметрами, помимо функции потерь, следует постоянно следить во время обучения.
Решение: функция потерь — важная метрика для мониторинга, но для оптимизации производительности модели также необходимо отслеживать и другие метрики. Вот некоторые ключевые метрики, за которыми стоит следить во время обучения:
- Точность
- Полнота
- Средняя точность (mAP)
Эти метрики можно найти в логах обучения или визуализировать с помощью таких инструментов, как TensorBoard или Weights & Biases. Ранняя остановка на основе этих метрик может помочь добиться лучших результатов.
Инструменты для отслеживания хода обучения#
Проблема: ты ищешь рекомендации по инструментам для отслеживания хода обучения.
Решение: для отслеживания и визуализации хода обучения можно использовать следующие инструменты:
- TensorBoard: TensorBoard — популярный инструмент для визуализации метрик обучения, включая функцию потерь, точность и другие показатели. Его можно интегрировать в процесс обучения YOLO26.
- Comet: Comet предоставляет широкий набор инструментов для отслеживания и сравнения экспериментов. С его помощью можно отслеживать метрики, гиперпараметры и даже веса модели. Интеграция с моделями YOLO также проста и позволяет получить полное представление о цикле эксперимента.
- Платформа Ultralytics: Ultralytics Platform — специализированная среда для отслеживания моделей YOLO, единая платформа для управления метриками, наборами данных и совместной работы с командой. Благодаря ориентации на YOLO платформа предлагает более гибкие возможности отслеживания.
Как проверить, выполняется ли обучение на GPU#
Проблема: значение 'device' в логах обучения равно 'null', и ты не уверен, выполняется ли обучение на GPU.
Решение: значение 'device' 'null' обычно означает, что процесс обучения автоматически выбирает доступный GPU. Это поведение используется по умолчанию. Чтобы обучать модель на определённом GPU, задай аргумент device при запуске обучения. device — это аргумент обучения, поэтому его настройка в .yaml набора данных не даст эффекта:
from ultralytics import YOLO
# Загрузить модель
model = YOLO("yolo26n.pt")
# Используй GPU 0; device=[0, 1] для нескольких GPU, device="cpu" для CPU
model.train(data="path/to/data.yaml", device=0)Следи за папкой 'runs' — в ней находятся логи и метрики, которые помогут эффективно отслеживать ход обучения.
Ключевые условия эффективного обучения модели#
Если у тебя возникли проблемы с обучением модели, учти следующие моменты.
Формат набора данных и разметка
- Важность: качество и формат данных, на которых обучается модель, лежат в основе любого решения для машинного обучения.
- Рекомендация: убедись, что пользовательский набор данных и связанные с ним метки соответствуют ожидаемому формату. Важно проверить точность и высокое качество аннотаций. Неверные или некачественные аннотации могут нарушить процесс обучения модели и привести к непредсказуемым результатам.
Сходимость модели
- Важность: достижение сходимости означает, что модель в достаточной мере обучилась на обучающих данных.
- Рекомендация: при обучении модели «с нуля» важно добиться удовлетворительного уровня сходимости. Для этого может потребоваться обучать модель дольше и использовать больше эпох, чем при дообучении уже существующей модели.
Скорость обучения и размер батча
- Важность: эти гиперпараметры играют ключевую роль в том, как модель обновляет веса во время обучения.
- Рекомендация: регулярно проверяй, оптимальны ли выбранные скорость обучения и размер батча для конкретного набора данных. Параметры, не соответствующие характеристикам набора данных, могут ухудшить производительность модели.
Распределение классов
- Важность: распределение классов в наборе данных может влиять на предпочтения модели при предсказаниях.
- Рекомендация: регулярно проверяй распределение классов в наборе данных. Если классы несбалансированы, модель может сместиться в сторону более распространённого класса. Это смещение может проявляться в матрице ошибок: модель будет преимущественно предсказывать класс, представленный большинством примеров.
Сверка с предобученными весами
- Важность: использование предварительно обученных весов может стать надежной отправной точкой для обучения модели, особенно если данных мало.
- Рекомендация: в качестве диагностического шага попробуй обучить модель на тех же данных, но инициализировать ее предварительно обученными весами. Если такой подход даст корректную матрицу ошибок, это может указывать на то, что модель, обучаемая «с нуля», требует дополнительного обучения или настройки.
Проблемы, связанные с предсказаниями модели#
Ниже описаны распространенные проблемы, возникающие при предсказании с помощью модели, и способы их решения.
Получение предсказаний ограничивающих рамок с помощью собственной модели YOLO26#
Проблема: при выполнении предсказаний с помощью собственной модели YOLO26 возникают сложности с форматом и визуализацией координат ограничивающих рамок.
Решение:
-
Формат координат: YOLO26 возвращает координаты ограничивающих рамок в абсолютных значениях пикселей. Чтобы преобразовать их в относительные координаты (от 0 до 1), раздели их на размеры изображения. Например, если размер изображения — 640x640, нужно сделать следующее:
# Преобразуй абсолютные координаты в относительные координаты x1 = x1 / 640 # Раздели координаты x на ширину изображения x2 = x2 / 640 y1 = y1 / 640 # Раздели координаты y на высоту изображения y2 = y2 / 640 -
Имя файла: чтобы получить имя файла изображения, для которого выполняется предсказание, считай путь к файлу изображения из атрибута
pathкаждого объекта результата (например,result.path) внутри цикла предсказания.
Фильтрация объектов в предсказаниях YOLO26#
Проблема: при запуске YOLO26 с библиотекой Ultralytics возникают сложности с фильтрацией и отображением только определенных объектов в результатах предсказания.
Решение: чтобы обнаруживать определенные классы, используй аргумент classes и укажи классы, которые нужно включить в выходные данные. Например, чтобы обнаруживать только автомобили (предполагая, что индекс класса «автомобили» — 2):
yolo segment predict model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2Метрики точности в YOLO26#
Проблема: непонятно, чем отличаются точность ограничивающих рамок, точность масок и точность матрицы ошибок в YOLO26.
Решение: точность ограничивающих рамок измеряет, насколько предсказанные ограничивающие рамки совпадают с истинными рамками, используя IoU (пересечение по объединению) в качестве метрики. Точность масок оценивает попиксельное соответствие предсказанных масок сегментации истинным маскам при классификации объектов. Точность матрицы ошибок, в свою очередь, отражает общую точность классификации по всем классам и не учитывает геометрическую точность предсказаний. Важно отметить, что ограничивающая рамка может быть геометрически точной (истинно положительный результат), даже если класс предсказан неверно, из-за чего точность ограничивающих рамок и точность матрицы ошибок могут различаться. Эти метрики оценивают разные аспекты работы модели и показывают, почему для разных задач нужны разные метрики оценки.
Извлечение размеров объектов в 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, попробуй перезапустить ее после существенных изменений или установки пакетов. Иногда чистый запуск помогает устранить скрытые проблемы.
- Официальная документация: всегда сверяйся с официальной документацией инструмента или библиотеки, которые используешь для преобразования. В ней часто содержатся конкретные рекомендации и проверенные практики экспорта моделей.
- Поддержка сообщества: проверь официальный репозиторий библиотеки или фреймворка на наличие похожих проблем, о которых сообщали другие пользователи. Разработчики или участники сообщества могли предложить решения или обходные пути в обсуждениях.
- Регулярное обновление: убедись, что используешь последнюю версию инструмента или библиотеки. Разработчики часто выпускают обновления, исправляющие известные ошибки и улучшающие функциональность.
- Постепенное тестирование: прежде чем выполнять полное преобразование, проверь процесс на небольшой модели или наборе данных, чтобы заранее выявить потенциальные проблемы.
Сообщество и поддержка#
Получи помощь и поделись решениями в этих каналах и ресурсах.
Форумы и каналы для получения помощи#
Проблемы на GitHub: В репозитории Ultralytics на GitHub есть вкладка Issues, где ты можешь задавать вопросы, сообщать об ошибках и предлагать новые функции. Участники сообщества и сопровождающие проекта активно общаются там, поэтому это отличное место, чтобы получить помощь с конкретными проблемами.
Сервер Ultralytics в Discord: У Ultralytics есть сервер в Discord, где ты можешь общаться с другими пользователями и разработчиками.
Официальная документация и ресурсы#
Документация Ultralytics YOLO26: официальная документация содержит подробный обзор YOLO26, а также руководства по установке, использованию и устранению неполадок.
Заключение#
Большинство проблем с YOLO26 связано с несколькими распространенными причинами: несовпадением версий, форматом набора данных и настройкой GPU. Если здесь нет ответа на твою ошибку, поищи решение во вкладке GitHub Issues или спроси на сервере Discord — скорее всего, кто-то уже решил эту проблему. Если у тебя возникли более сложные проблемы с обучением, ознакомься с руководством Советы по обучению моделей: в нем собраны практические рекомендации, которые помогут добиться лучших результатов в проектах компьютерного зрения.
Часто задаваемые вопросы#
Ошибки установки часто связаны с проблемами совместимости или отсутствующими зависимостями. Убедись, что используешь Python 3.8 или новее и установил PyTorch 1.8 или новее. Чтобы избежать конфликтов, лучше использовать виртуальные окружения. Пошаговые инструкции приведены в нашем официальном руководстве по установке. Если возникают ошибки импорта, попробуй выполнить чистую установку или обновить библиотеку до последней версии.
Обучение на одном GPU может идти медленно из-за слишком большого размера пакета или нехватки памяти. Чтобы ускорить обучение, используй несколько GPU. Убедись, что в системе доступно несколько GPU, и укажи аргумент
device, напримерdevice=[0,1,2,3]. Увеличь размер пакета, чтобы максимально эффективно задействовать GPU и не превысить лимиты памяти. Пример команды:model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])Если в журнале обучения значение «device» отображается как «null», обычно это означает, что процесс обучения настроен на автоматический выбор доступного GPU. Чтобы явно назначить конкретный GPU, передай аргумент
deviceпри запуске обучения, напримерyolo train data=path/to/data.yaml device=0для первого GPU. Выполни командуnvidia-smi, чтобы проверить настройку CUDA.Для эффективного отслеживания и визуализации хода обучения можно использовать такие инструменты, как TensorBoard, Comet и Ultralytics Platform. Эти инструменты позволяют записывать и визуализировать метрики, например потери, точность, полноту и mAP. Также можно настроить раннюю остановку на основе этих метрик, чтобы улучшить результаты обучения.
Убедись, что набор данных и метки соответствуют ожидаемому формату. Проверь точность и качество аннотаций. Если возникнут проблемы, ознакомься с руководством Сбор и аннотирование данных, чтобы узнать о проверенных практиках. Дополнительные рекомендации по наборам данных смотри в разделе Наборы данных документации.