Link to this sectionУстранение распространенных проблем YOLO#
Link to this sectionВведение#
Это руководство служит всеобъемлющим помощником по устранению распространенных проблем, возникающих при работе с YOLO26 в твоих проектах Ultralytics. С правильными рекомендациями ты легко справишься с этими трудностями, гарантируя, что твои проекты не выбьются из графика из-за ненужных задержек.
Watch: Ultralytics YOLO26 Common Issues | Installation Errors, Model Training Issues
Link to this sectionРаспространенные проблемы#
Link to this sectionОшибки установки#
Ошибки установки могут возникать по разным причинам, таким как несовместимые версии, отсутствующие зависимости или неправильная настройка окружения. Сначала убедись, что ты выполняешь следующее:
- Ты используешь Python 3.8 или более позднюю версию, как рекомендуется.
- Убедись, что у тебя установлена правильная версия PyTorch (1.8 или новее).
- Подумай об использовании виртуальных окружений, чтобы избежать конфликтов.
- Следуй официальному руководству по установке шаг за шагом.
Кроме того, вот некоторые распространенные проблемы при установке, с которыми сталкивались пользователи, вместе с их решениями:
-
Ошибки импорта или проблемы с зависимостями - Если ты получаешь ошибки при импорте YOLO26 или у тебя проблемы, связанные с зависимостями, рассмотри следующие шаги по устранению неполадок:
-
Чистая установка: Иногда начало с чистой установки помогает решить непредвиденные проблемы. Особенно с такими библиотеками, как Ultralytics, где обновления могут привносить изменения в структуру дерева файлов или функциональность.
-
Регулярное обновление: Убедись, что ты используешь последнюю версию библиотеки. Более старые версии могут быть несовместимы с недавними обновлениями, что ведет к потенциальным конфликтам или ошибкам.
-
Проверка зависимостей: Проверь, что все необходимые зависимости установлены правильно и имеют совместимые версии.
-
Обзор изменений: Если ты изначально клонировал или установил более старую версию, имей в виду, что значительные обновления могут повлиять на структуру или функциональность библиотеки. Всегда обращайся к официальной документации или списку изменений (changelog), чтобы понять основные новшества.
-
Помни, что поддержание актуальности библиотек и зависимостей критически важно для плавной работы без ошибок.
-
-
Запуск 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 старше Turing и вычислительной возможности (SM) < 7.5 была прекращена начиная с cuDNN 9.11.0. Поэтому, если у тебя старый GPU — например, 1080Ti — тебе, возможно, придется использовать версию 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}") -
Активация окружения: Убедись, что ты находишься в правильном окружении, где установлены все необходимые пакеты.
-
Обновление пакетов: Устаревшие пакеты могут быть несовместимы с твоим GPU. Поддерживай их в актуальном состоянии.
-
Конфигурация программы: Проверь, указано ли в программе или коде использование GPU. В YOLO26 это может быть в настройках или конфигурации.
-
Link to this sectionПроблемы при обучении модели#
В этом разделе будут рассмотрены распространенные проблемы, с которыми сталкиваются при обучении, а также их объяснения и решения.
Link to this sectionПроверка параметров конфигурации#
Проблема: Ты не уверен, правильно ли применяются настройки конфигурации в файле .yaml во время обучения модели.
Решение: Настройки конфигурации в файле .yaml должны применяться при использовании функции model.train(). Чтобы убедиться, что эти настройки применены правильно, выполни следующие действия:
-
Подтверди, что путь к твоему файлу конфигурации
.yamlуказан верно. -
Убедись, что ты передаешь путь к твоему файлу
.yamlв качестве аргументаdataпри вызовеmodel.train(), как показано ниже:model.train(data="/path/to/your/data.yaml", batch=4)
Link to this sectionУскорение обучения с помощью нескольких GPU#
Проблема: Обучение идет медленно на одном GPU, и ты хочешь ускорить процесс, используя несколько GPU.
Решение: Увеличение размера пакета (batch size) может ускорить обучение, но важно учитывать объем памяти GPU. Чтобы ускорить обучение с помощью нескольких GPU, следуй этим шагам:
-
Убедись, что у тебя доступно несколько GPU.
-
Установи аргумент
deviceкак список индексов GPU, например,device=[0,1,2,3]. -
Увеличь размер пакета соответствующим образом, чтобы полностью задействовать несколько 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, device=[0, 1, 2, 3])
Link to this sectionПараметры постоянного мониторинга#
Проблема: Ты хочешь знать, какие параметры следует постоянно отслеживать во время обучения, помимо функции потерь (loss).
Решение: Хотя loss является важной метрикой для отслеживания, также необходимо следить за другими метриками для оптимизации производительности модели. Некоторые ключевые метрики для мониторинга во время обучения включают:
- Precision
- Recall
- Средняя точность (Mean Average Precision) (mAP)
Ты можешь получить доступ к этим метрикам из логов обучения или используя такие инструменты, как TensorBoard или wandb для визуализации. Внедрение ранней остановки (early stopping) на основе этих метрик может помочь тебе достичь лучших результатов.
Link to this sectionИнструменты для отслеживания прогресса обучения#
Проблема: Ты ищешь рекомендации по инструментам для отслеживания прогресса обучения.
Решение: Чтобы отслеживать и визуализировать прогресс обучения, ты можешь рассмотреть использование следующих инструментов:
- TensorBoard: TensorBoard — популярный выбор для визуализации метрик обучения, включая loss, точность (accuracy) и другие. Ты можешь интегрировать его в свой процесс обучения YOLO26.
- Comet: Comet предоставляет обширный набор инструментов для отслеживания экспериментов и их сравнения. Он позволяет отслеживать метрики, гиперпараметры и даже веса модели. Интеграция с моделями YOLO также очень проста, предоставляя тебе полный обзор цикла эксперимента.
- Ultralytics Platform: Ultralytics Platform предлагает специализированную среду для отслеживания моделей YOLO, предоставляя тебе единую платформу для управления метриками, наборами данных и даже для совместной работы с твоей командой. Учитывая ее узкую направленность на YOLO, она предлагает более специализированные варианты отслеживания.
Каждый из этих инструментов имеет свой набор преимуществ, поэтому при выборе стоит учитывать специфические потребности твоего проекта.
Link to this sectionКак проверить, происходит ли обучение на GPU#
Проблема: Значение 'device' в логах обучения равно 'null', и ты не уверен, происходит ли обучение на GPU.
Решение: Значение 'device', равное 'null', обычно означает, что процесс обучения настроен на автоматическое использование доступного GPU, что является поведением по умолчанию. Чтобы гарантировать, что обучение происходит на конкретном GPU, ты можешь вручную установить значение 'device' в индекс GPU (например, '0' для первого GPU) в своем файле конфигурации .yaml:
device: 0Это явно назначит процесс обучения на указанный GPU. Если ты хочешь обучать на CPU, установи 'device' в 'cpu'.
Следи за папкой 'runs' для просмотра логов и метрик, чтобы эффективно контролировать прогресс обучения.
Link to this sectionКлючевые соображения для эффективного обучения модели#
Вот некоторые вещи, о которых стоит помнить, если ты столкнулся с проблемами, связанными с обучением модели.
Формат набора данных и метки
- Важность: Основа любой модели машинного обучения заключается в качестве и формате данных, на которых она обучается.
- Рекомендация: Убедись, что твой пользовательский набор данных и связанные с ним метки соответствуют ожидаемому формату. Критически важно проверить, что аннотации точны и высокого качества. Неправильные или низкокачественные аннотации могут сорвать процесс обучения модели, приводя к непредсказуемым результатам.
Сходимость модели
- Важность: Достижение сходимости модели гарантирует, что модель достаточно обучилась на обучающих данных.
- Рекомендация: При обучении модели 'с нуля' важно убедиться, что модель достигает удовлетворительного уровня сходимости. Это может потребовать более длительного обучения с большим количеством эпох (epochs), по сравнению с дообучением существующей модели.
Скорость обучения (Learning Rate) и размер пакета (batch size)
- Важность: Эти гиперпараметры играют ключевую роль в определении того, как модель обновляет свои веса во время обучения.
- Рекомендация: Регулярно оценивай, являются ли выбранные скорость обучения и размер пакета оптимальными для твоего конкретного набора данных. Параметры, которые не согласуются с характеристиками набора данных, могут ухудшить производительность модели.
Распределение классов
- Важность: Распределение классов в твоем наборе данных может влиять на тенденции прогнозирования модели.
- Рекомендация: Регулярно оценивай распределение классов в своем наборе данных. Если существует дисбаланс классов, есть риск, что модель приобретет предвзятость к более представленному классу. Эта предвзятость может быть очевидна в матрице путаницы (confusion matrix), где модель может преимущественно предсказывать мажоритарный класс.
Перекрестная проверка с предварительно обученными весами
- Важность: Использование предварительно обученных весов может стать надежной отправной точкой для обучения модели, особенно когда данных недостаточно.
- Рекомендация: В качестве диагностического шага рассмотри возможность обучения своей модели с использованием тех же данных, но инициализируя ее предварительно обученными весами. Если этот подход дает хорошо сформированную матрицу путаницы, это может указывать на то, что модель, обучаемая 'с нуля', может потребовать дополнительного обучения или настроек.
Link to this sectionПроблемы, связанные с прогнозированием модели#
В этом разделе будут рассмотрены распространенные проблемы, возникающие при прогнозировании модели.
Link to this sectionПолучение предсказаний ограничивающих рамок (bounding box) с твоей пользовательской моделью 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 -
Имя файла: Чтобы получить имя файла изображения, для которого ты делаешь предсказание, получи доступ к пути к файлу изображения напрямую из объекта результата внутри твоего цикла предсказаний.
Link to this sectionФильтрация объектов в предсказаниях YOLO26#
Проблема: Столкнулся с вопросом, как фильтровать и отображать только определенные объекты в результатах предсказаний при запуске YOLO26 с использованием библиотеки Ultralytics.
Решение: Чтобы обнаруживать конкретные классы, используй аргумент classes, чтобы указать классы, которые ты хочешь включить в вывод. Например, чтобы обнаруживать только автомобили (предполагая, что 'автомобили' имеют индекс класса 2):
yolo task=segment mode=predict model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2Link to this sectionПонимание метрик точности в YOLO26#
Проблема: Путаница относительно различий между точностью рамок (box precision), точностью масок (mask precision) и точностью матрицы путаницы (confusion matrix) в YOLO26.
Решение: Точность рамок измеряет точность предсказанных ограничивающих рамок по сравнению с фактическими правильными рамками (ground truth), используя IoU (Intersection over Union) в качестве метрики. Точность масок оценивает соответствие между предсказанными масками сегментации и правильными масками на пиксельном уровне классификации объектов. Точность матрицы путаницы, с другой стороны, фокусируется на общей точности классификации по всем классам и не учитывает геометрическую точность предсказаний. Важно отметить, что ограничивающая рамка (bounding box) может быть геометрически точной (true positive), даже если предсказание класса неверно, что приводит к различиям между точностью рамок и точностью матрицы путаницы. Эти метрики оценивают различные аспекты производительности модели, отражая необходимость в различных метриках оценки для разных задач.
Link to this sectionИзвлечение размеров объектов в 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}")Link to this sectionПроблемы развертывания#
Link to this sectionПроблемы развертывания на GPU#
Проблема: Развертывание моделей в среде с несколькими GPU иногда может приводить к неожиданному поведению, такому как непредвиденное использование памяти, несогласованные результаты на разных GPU и т.д.
Решение: Проверь инициализацию GPU по умолчанию. Некоторые фреймворки, такие как PyTorch, могут инициализировать операции CUDA на GPU по умолчанию перед переходом к назначенным GPU. Чтобы избежать непредвиденных инициализаций по умолчанию, указывай GPU напрямую при развертывании и прогнозировании. Затем используй инструменты для мониторинга использования GPU и памяти, чтобы выявлять любые аномалии в режиме реального времени. Также убедись, что ты используешь последнюю версию фреймворка или библиотеки.
Link to this sectionПроблемы преобразования/экспорта модели#
Проблема: В процессе преобразования или экспорта моделей машинного обучения в различные форматы или платформы пользователи могут сталкиваться с ошибками или неожиданным поведением.
Решение:
- Проверка совместимости: Убедись, что ты используешь версии библиотек и фреймворков, которые совместимы друг с другом. Несоответствие версий может привести к неожиданным ошибкам во время преобразования.
- Сброс окружения: Если ты используешь интерактивную среду, такую как Jupyter или Colab, попробуй перезапустить окружение после внесения существенных изменений или установок. Свежий старт иногда может решить основные проблемы.
- Официальная документация: Всегда обращайся к официальной документации инструмента или библиотеки, которую ты используешь для преобразования. Она часто содержит конкретные рекомендации и лучшие практики для экспорта моделей.
- Поддержка сообщества: Проверь официальный репозиторий библиотеки или фреймворка на наличие похожих проблем, о которых сообщали другие пользователи. Сопровождающие или сообщество могли предоставить решения или обходные пути в ветках обсуждений.
- Регулярное обновление: Убедись, что ты используешь последнюю версию инструмента или библиотеки. Разработчики часто выпускают обновления, которые исправляют известные ошибки или улучшают функциональность.
- Инкрементальное тестирование: Перед выполнением полного преобразования протестируй процесс с меньшей моделью или набором данных, чтобы выявить потенциальные проблемы на ранней стадии.
Link to this sectionСообщество и поддержка#
Взаимодействие с сообществом единомышленников может значительно улучшить твой опыт и успехи в работе с YOLO26. Ниже приведены некоторые каналы и ресурсы, которые могут быть тебе полезны.
Link to this sectionФорумы и каналы для получения помощи#
GitHub Issues: В репозитории YOLO26 на GitHub есть вкладка Issues, где ты можешь задавать вопросы, сообщать об ошибках и предлагать новые функции. Сообщество и разработчики здесь очень активны, и это отличное место для получения помощи с конкретными проблемами.
Сервер Ultralytics в Discord: У Ultralytics есть сервер в Discord, где ты можешь пообщаться с другими пользователями и разработчиками.
Link to this sectionОфициальная документация и ресурсы#
Документация Ultralytics YOLO26: В официальной документации представлен полный обзор YOLO26, а также руководства по установке, использованию и устранению неполадок.
Эти ресурсы станут прочной основой для устранения неполадок и улучшения твоих проектов YOLO26, а также помогут наладить связь с другими участниками сообщества YOLO26.
Link to this sectionЗаключение#
Устранение неполадок — неотъемлемая часть любого процесса разработки, и обладание нужными знаниями может значительно сократить время и усилия, затрачиваемые на решение проблем. Это руководство призвано помочь тебе справиться с наиболее распространенными трудностями, с которыми сталкиваются пользователи модели YOLO26 в экосистеме Ultralytics. Понимая и решая эти типичные проблемы, ты сможешь обеспечить более плавный ход проекта и достичь лучших результатов в своих задачах по computer vision.
Помни, что сообщество Ultralytics — ценный ресурс. Взаимодействие с другими разработчиками и экспертами может дать дополнительные идеи и решения, которые не всегда описаны в стандартной документации. Продолжай учиться, экспериментировать и делиться своим опытом, чтобы вносить вклад в коллективные знания сообщества.
Link to this sectionFAQ#
Link to this sectionКак решить ошибки при установке YOLO26?#
Ошибки при установке часто возникают из-за проблем совместимости или отсутствия зависимостей. Убедись, что используешь Python 3.8 или новее и установил PyTorch 1.8 или новее. Полезно использовать виртуальные окружения, чтобы избежать конфликтов. Пошаговое руководство по установке можно найти в нашем официальном руководстве по установке. Если возникли ошибки импорта, попробуй выполнить чистую установку или обновить библиотеку до последней версии.
Link to this sectionПочему обучение моей модели YOLO26 идет медленно на одном GPU?#
Обучение на одном GPU может быть медленным из-за больших размеров пакетов (batch size) или нехватки памяти. Чтобы ускорить обучение, используй несколько GPU. Убедись, что в твоей системе доступно несколько GPU, и укажи аргумент device, например, device=[0,1,2,3]. Соответствующим образом увеличь размер пакета, чтобы полностью задействовать GPU, не превышая лимиты памяти. Пример команды:
model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])Link to this sectionКак убедиться, что моя модель YOLO26 обучается на GPU?#
Если значение 'device' в логах обучения отображается как 'null', это обычно означает, что процесс обучения автоматически настроен на использование доступного GPU. Чтобы явно назначить конкретный GPU, установи значение 'device' в своем конфигурационном файле .yaml. Например:
device: 0Это переключает процесс обучения на первый GPU. Используй команду nvidia-smi для проверки своей настройки CUDA.
Link to this sectionКак отслеживать прогресс обучения моей модели YOLO26?#
Отслеживание и визуализацию процесса обучения можно эффективно настроить с помощью таких инструментов, как TensorBoard, Comet и Ultralytics Platform. Эти инструменты позволяют записывать и визуализировать метрики, такие как функция потерь (loss), precision, recall и mAP. Использование early stopping на основе этих метрик также поможет добиться лучших результатов обучения.
Link to this sectionЧто делать, если YOLO26 не распознает формат моего датасета?#
Убедись, что твой датасет и метки соответствуют ожидаемому формату. Проверь, что аннотации точны и качественны. Если возникли проблемы, обратись к руководству по Data Collection and Annotation для ознакомления с лучшими практиками. Для получения дополнительных рекомендаций по работе с датасетами загляни в раздел Datasets в документации.