Ultralytics YOLO27:

Основные этапы проекта в области компьютерного зрения#

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

Компьютерное зрение — это подраздел искусственного интеллекта (AI), который помогает компьютерам видеть и понимать мир подобно людям. Оно обрабатывает и анализирует изображения или видео, чтобы извлекать информацию, распознавать закономерности и принимать решения на основе этих данных.



Watch: How to Do Computer Vision Projects | A Step-by-Step Guide

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

Обзор проекта в области компьютерного зрения#

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

Computer Vision Project Steps Overview

Теперь, когда мы знаем, чего ожидать, давай сразу перейдем к этапам и начнем продвигать твой проект.

Этап 1: определение целей проекта#

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

Ниже приведены примеры целей проекта и задач компьютерного зрения, которые можно использовать для их достижения:

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

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

    • Задача компьютерного зрения: Сегментация изображений подходит для анализа медицинских изображений, поскольку предоставляет точные и подробные границы опухолей, необходимые для оценки их размера и формы, а также планирования лечения.
  • Цель: Создать цифровую систему, которая классифицирует различные документы (например, счета, чеки и юридические документы), чтобы повысить эффективность организации и поиска документов.

    • Задача компьютерного зрения: Классификация изображений идеально подходит для этой задачи, поскольку обрабатывает по одному документу за раз и не требует учитывать положение документа на изображении. Такой подход упрощает и ускоряет процесс сортировки.

Выбор подходящей модели и подхода к обучению#

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

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

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

Training From Scratch Vs. Using Transfer Learning

Учитывай развертывание при выборе модели

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

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

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

  • Четко определи проблему, которую пытаешься решить.
  • Определи конечную цель проекта.
  • Определи конкретную необходимую задачу компьютерного зрения (например, обнаружение объектов, классификацию изображений или сегментацию изображений).
  • Реши, будешь ли ты обучать модель с нуля или использовать трансферное обучение.
  • Выбери подходящую модель для своей задачи и требований к развертыванию.

Этап 2: сбор и аннотирование данных#

Качество моделей компьютерного зрения зависит от качества набора данных. Ты можешь собирать изображения в интернете, делать собственные снимки или использовать готовые наборы данных. Вот несколько отличных ресурсов для загрузки высококачественных наборов данных: Google Dataset Search Engine, UC Irvine Machine Learning Repository и Kaggle Datasets.

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

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

  • Классификация изображений: Ты помечаешь все изображение как один класс.
  • Обнаружение объектов: Ты рисуешь ограничивающие рамки вокруг каждого объекта на изображении и присваиваешь метку каждой рамке.
  • Сегментация изображений: Ты помечаешь каждый пиксель изображения в соответствии с объектом, которому он принадлежит, создавая подробные границы объектов.

Bounding box, polygon, and keypoint annotations

Сбор и аннотирование данных могут быть трудоемкой ручной работой. Специализированный инструмент аннотирования ускоряет процесс: Ultralytics Platform предоставляет встроенный редактор аннотаций с интеллектуальным аннотированием на основе SAM для данных обнаружения, сегментации и OBB, сохраняя метки непосредственно в формате YOLO.

Этап 3: дополнение данных и разбиение набора данных#

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

Вот как разделить данные:

  • Обучающая выборка: Самая большая часть данных, обычно 70–80% от общего объема, используемая для обучения модели.
  • Валидационная выборка: Обычно около 10–15% данных; эта выборка используется для настройки гиперпараметров и валидации модели во время обучения, помогая предотвратить переобучение.
  • Тестовая выборка: Оставшиеся 10–15% данных выделяются в тестовую выборку. Она используется для оценки производительности модели на ранее не встречавшихся данных после завершения обучения.

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

Data augmentation examples

Библиотеки, такие как OpenCV, Albumentations и TensorFlow, предлагают гибкие функции дополнения данных. Кроме того, некоторые библиотеки, например Ultralytics, имеют встроенные настройки дополнения данных непосредственно в функции обучения модели, что упрощает процесс.

Чтобы лучше понять свои данные, можно использовать такие инструменты, как Matplotlib или Seaborn, для визуализации изображений и анализа их распределения и характеристик. Визуализация данных помогает выявлять закономерности, аномалии и эффективность методов дополнения. На вкладке Charts Ultralytics Platform многие из этих сведений доступны без написания кода: платформа автоматически создает распределение разбиения, подсчеты классов, гистограммы размеров изображений и тепловые карты позиций аннотаций для каждого загруженного набора данных.

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

Этап 4: обучение модели#

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

Сначала нужно убедиться, что окружение настроено правильно. Обычно это включает следующее:

  • Установка необходимых библиотек и фреймворков, таких как TensorFlow, PyTorch или Ultralytics.
  • Если ты используешь GPU, установка таких библиотек, как CUDA и cuDNN, поможет включить ускорение на GPU и ускорить процесс обучения.

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

Библиотеки, такие как Ultralytics, упрощают процесс обучения. Можно начать обучение, передав данные в модель с минимальным количеством кода. Эти библиотеки автоматически выполняют корректировку весов, обратное распространение ошибки и валидацию. Они также предлагают инструменты для удобного отслеживания прогресса и настройки гиперпараметров. После обучения сохрани модель и ее веса с помощью нескольких команд.

Важно помнить, что правильное управление наборами данных жизненно важно для эффективного обучения. Используй контроль версий для наборов данных, чтобы отслеживать изменения и обеспечивать воспроизводимость. Такие инструменты, как DVC (DVC), помогают управлять большими наборами данных.

Этап 5: оценка модели и тонкая настройка#

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

  • Метрики производительности: Используй такие метрики, как точность, precision, полнота и F1-мера, чтобы оценить производительность модели. Эти метрики показывают, насколько хорошо модель выполняет предсказания.
  • Настройка гиперпараметров: Настраивай гиперпараметры для оптимизации производительности модели. Такие методы, как поиск по сетке или случайный поиск, помогают найти оптимальные значения гиперпараметров.
  • Тонкая настройка: Внеси небольшие изменения в архитектуру модели или процесс обучения, чтобы повысить производительность. Это может включать настройку скоростей обучения, размеров пакета или других параметров модели.

Чтобы глубже разобраться в методах оценки модели и тонкой настройки, ознакомься с нашим руководством по анализу оценки модели.

Этап 6: тестирование модели#

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

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

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

Этап 7: развертывание модели#

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

  • Настройка окружения: Настрой необходимую инфраструктуру для выбранного варианта развертывания — в облаке (AWS, Google Cloud, Azure) или на периферийных устройствах (локальные устройства, IoT).
  • Экспорт модели: Экспортируй модель в подходящий формат (например, ONNX, TensorRT или CoreML для YOLO26), чтобы обеспечить совместимость с платформой развертывания.
  • Развертывание модели: Разверни модель, настроив API или конечные точки и интегрировав ее с приложением.
  • Обеспечение масштабируемости: Реализуй балансировщики нагрузки, группы автоматического масштабирования и инструменты мониторинга для управления ресурсами и обработки растущего объема данных и запросов пользователей.

Более подробные рекомендации по стратегиям развертывания и лучшим практикам приведены в нашем руководстве по практикам развертывания моделей. Ultralytics Platform также предоставляет управляемые конечные точки развертывания с автоматическим масштабированием в 42 регионах по всему миру и автоматически берет на себя настройку инфраструктуры.

Этап 8: мониторинг, сопровождение и документирование#

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

Инструменты мониторинга помогают отслеживать ключевые показатели эффективности (KPI) и обнаруживать аномалии или падение точности. Отслеживая модель, ты можешь выявить дрейф модели — снижение ее производительности со временем из-за изменений во входных данных. Периодически переобучай модель на обновленных данных, чтобы сохранять ее точность и актуальность.

Model monitoring and maintenance lifecycle

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

Взаимодействие с сообществом#

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

Ресурсы сообщества#

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

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

  • Документация Ultralytics по YOLO26: Изучи официальную документацию по YOLO26, где представлены подробные руководства с полезными советами по различным задачам и проектам компьютерного зрения.

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

Следующие шаги#

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

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

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

  • Аннотирование данных необходимо для обучения модели распознаванию закономерностей. Тип аннотирования зависит от задачи:

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

    Встроенный редактор аннотаций в Ultralytics Platform может помочь в этом процессе. Дополнительные сведения приведены в нашем руководстве по сбору и аннотированию данных.

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

    • Обучающая выборка: 70–80% данных.
    • Валидационная выборка: 10–15% для настройки гиперпараметров.
    • Тестовая выборка: оставшиеся 10–15% для финальной оценки.

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

  • Экспортируй обученную модель с помощью метода export, выбрав формат, соответствующий целевой среде развёртывания. Ultralytics поддерживает несколько форматов, включая ONNX, TensorRT и CoreML. Чтобы экспортировать модель YOLO26, выполни следующие шаги:

    • Используй метод export с параметром нужного формата.
    • Убедись, что экспортированная модель соответствует требованиям среды развёртывания (например, периферийных устройств или облака).

    Подробнее см. в руководстве по экспорту моделей.

  • Непрерывные мониторинг и обслуживание необходимы для долгосрочного успеха модели. Внедри инструменты для отслеживания ключевых показателей эффективности (KPIs) и обнаружения аномалий. Регулярно переобучай модель на обновлённых данных, чтобы компенсировать дрейф модели. Документируй весь процесс, включая архитектуру модели, гиперпараметры и изменения, чтобы обеспечить воспроизводимость и упростить будущие обновления. Подробнее см. в нашем руководстве по мониторингу и обслуживанию.

Комментарии