Meet YOLO26: next-gen vision AI.

Link to this sectionПонимание ключевых этапов проекта компьютерного зрения#

Link to this sectionВведение#

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



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

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

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

Link to this sectionОбзор проекта компьютерного зрения#

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

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

Computer Vision Project Steps Overview

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

Link to this sectionШаг 1: Определение целей твоего проекта#

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

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

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

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

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

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

Link to this sectionШаг 1.5: Выбор подходящей модели и подхода к обучению#

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

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

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

Training From Scratch Vs. Using Transfer Learning

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

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

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

Link to this sectionШаг 2: Сбор данных и разметка данных#

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

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

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

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

Bounding box, polygon, and keypoint annotations

Сбор и разметка данных могут быть трудоемким ручным процессом. Инструменты для разметки могут помочь сделать этот процесс проще. Вот несколько полезных инструментов с открытым исходным кодом: Label Studio, CVAT и Labelme.

Link to this sectionШаг 3: Аугментация данных и разделение набора данных#

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

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

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

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

Data augmentation examples

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

To understand your data better, you can use tools like Matplotlib or Seaborn to visualize the images and analyze their distribution and characteristics. Visualizing your data helps identify patterns, anomalies, and the effectiveness of your augmentation techniques. The Ultralytics Platform Charts tab can surface many of these insights without any code by automatically generating split distribution, class counts, image-dimension histograms, and annotation-position heatmaps for every uploaded dataset.

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

Link to this sectionШаг 4: Обучение модели#

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

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

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

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

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

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

Link to this sectionШаг 5: Оценка модели и дообучение (Fine-tuning)#

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

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

Для более глубокого понимания оценки модели и методов дообучения ознакомься с нашим руководством по аналитике оценки моделей.

Link to this sectionШаг 6: Тестирование модели#

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

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

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

Link to this sectionШаг 7: Развертывание модели#

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

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

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

Link to this sectionШаг 8: Мониторинг, обслуживание и документация#

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

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

Model monitoring and maintenance lifecycle

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

Link to this sectionВзаимодействие с сообществом#

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

Link to this sectionРесурсы сообщества#

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

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

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

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

Link to this sectionСледующие шаги#

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

Link to this sectionFAQ#

Link to this sectionКак выбрать подходящую задачу компьютерного зрения для моего проекта?#

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

Link to this sectionПочему разметка данных важна в проектах компьютерного зрения?#

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

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

Инструменты вроде Label Studio, CVAT и Labelme могут помочь в этом процессе. Для получения подробностей обратись к нашему руководству по сбору и разметке данных.

Link to this sectionКаким шагам нужно следовать для эффективной аугментации и разделения набора данных?#

Разделение данных до аугментации помогает проверить производительность модели на исходных, неизмененных данных. Следуй этим шагам:

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

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

Link to this sectionКак мне экспортировать обученную модель компьютерного зрения для развертывания?#

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

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

Для получения дополнительной информации ознакомься с руководством по экспорту моделей.

Link to this sectionКаковы лучшие практики мониторинга и сопровождения развернутой модели компьютерного зрения?#

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

Комментарии