Создание базы изображений или видео Разметка и предобработка собранных данных Развертывание алгоритма на целевой платформе Выбор и разработка алгоритма Быстрая проверка концепции и оценка реализуемости проекта

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

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

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

Быстрая проверка концепции и оценка реализуемости проекта

Основные шаги:

  • Быстрое прототипирование алгоритма в MATLAB
  • Оценка технических требований проекта 
  • Проработка архитектуры системы и плана развития проекта


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

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

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

Создание базы изображений или видео

Основные шаги

  • Выработка требований к базе изображений
  • Автоматизация сбора данных
  • Сбор базы изображений

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

Основные требования к базе изображений:

  • Качество изображений должно позволять различать на них характерные признаки свойственные для каждого класса объектов; 
  • Сбалансированность (примерно одинаковое количество изображений на каждый класс); 
  • Достаточность (количество изображений должно быть достаточным для обучения и тестирования алгоритма).

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

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

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

Разметка и предобработка собранных данных

Основные шаги:

  • Предобработка и разметка данных
  • Автоматизация процесса разметки
  • Выстраивание рабочего процесса для разметчиков данных

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

Проведение разметки в ручном режиме является утомительным и трудоемким процессом, следовательно автоматизация этих работ является важной задачей. С помощью автоматизаций в MATLAB мы поможем вам радикально повысить скорость и точность разметки изображений и видео, лидарных облаков точек или медицинских 3D МРТ снимков.

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

Выбор и разработка алгоритма

Классы решаемых задач:

  • Анализ и обработка изображений (фильтрация, удаление шума, искажений)
  • Нахождение и извлечение ключевых признаков изображения 
  • Распознавание объектов и образов (сегментация, детектирование и классификация объектов) 
  • Слежение и трекинг за объектами между кадрами
  • Стереозрение, калибровка камер, восстановление 3D-сцены
  • Работа с облаком точек лидара, совмещение данных лидара и камер

Определить заранее наиболее эффективный набор алгоритмов компьютерного зрения, как правило, невозможно без быстрого прототипирования и проверки концепций. MATLAB - идеальная среда быстрого прототипирования, в которой мы можем быстро попробовать как классические методы работы с изображениями и видео, так и алгоритмы, основанные на глубоком и машинном обучении для сегментации изображений, детектирования и классификации объектов. С помощью предобученных нейронных сетей и техники “переноса обучения” быстро проверяются и и сравниваются разные архитектуры сетей на данных проекта: это помогает обоснованно выбрать оптимальные архитектуры для дальнейшего тюнинга и разработки. На выбор алгоритма в проекте влияет множество факторов, начиная от требований по скорости и точности распознавания, заканчивая целевой платформой для запуска алгоритма.

Развертывание алгоритма на целевой платформе

Основные платформы:

  • Клиент-cерверные реализации
  • Запуск на встраиваемых платформах
  • GPU/ MCU/ FPGA/ SoC

Целевая платформа для запуска алгоритма зависит от специфики задачи. Если применение AI ориентировано на широкие массы пользователей, то вероятно лучшее решение - это клиент-серверная реализация, для масштабирования и устойчивости которого хорошо подходит MATLAB Production Server в качестве ключевого компонента развёрнутого в собственном или публичном облаке. Этот сервер позволяет надежно исполнять алгоритмы MATLAB и Python по одновременным параллельным запросам внешних приложений. Ростом нагрузки масштабирование как в своём, так и в публичном облаке решается простым добавлением вычислительных ресурсов под управление MATLAB Production Server. При этом не требуется переписывать изначально созданные алгоритмы для работы под нагрузкой. Ещё одним преимуществом является то, что новые версии AI алгоритмов в развернутый MATLAB Production Server загружаются автоматизировано без необходимости их перепрограммирования под продакшн среду, что позволяет быстрее выводить в работу новые бизнес-идеи.

Для задач автомобильной отрасли, военного применения и иных промышленных задач с повышенными требованиями к надежности и отклику системы чаще всего AI алгоритмы разворачивают на встраиваемых системах. При использовании МОП подхода в разработке, переход от алгоритма в MATLAB или Simulink к его аппаратной реализации на целевой платформе возможен с минимальными рисками и трудозатратами. Процесс МОП предполагает использование автоматических генераторов кода из AI подсистем, описанных с помощью MATLAB или Simulink под целевые платформы GPU (Cuda), MCU (C\C++), FPGA (Verilog, VHDL). При этом возможно получение как платформонезависимого кода для самостоятельной встройки в проект, так и оптимизированного платформозависимого кода с полной сборкой проекта автоматизированно. В наших проектах мы стараемся выбирать максимальную автоматизацию, поскольку через этап синтеза кода в проекте может потребоваться проходить много раз по причине смены требований или оптимизаций на уровне алгоритмов или всей системы и смежных алгоритмов.