Computer vision что это

Осваиваем компьютерное зрение — 8 основных шагов

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

Минимальные знания, необходимые для освоения компьютерного зрения

Шаг 1 — Базовые методики работы с изображениями

Этот шаг посвящен техническим основам.

Прочтите — третью главу книги Ричарда Шелиски «Компьютерное зрение: Алгоритмы и приложения».

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Закрепите знания — попробуйте себя в преобразовании изображений с помощью OpenCV. На сайте есть много пошаговых электронных пособий, руководствуясь которыми можно во всём разобраться.

Шаг 2 — Отслеживание движения и анализ оптического потока

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

Пройдите курс — курс по компьютерному зрению на Udacity, в особенности урок 6.
Посмотрите — 8-ое видео в YouTube-списке и лекцию об оптическом потоке и трекинге.

Прочтите — разделы 10.5 и 8.4 учебника Шелиски.

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

В качестве учебного проекта разберитесь с тем, как с помощью OpenCV отслеживать объект в видеофрейме.

Шаг 3 — Базовая сегментация

В компьютерном зрении, сегментация — это процесс разделения цифрового изображения на несколько сегментов (суперпиксели). Цель сегментации заключается в упрощении и/или изменении представления изображения, чтобы его было проще и легче анализировать.

Так, преобразование Хафа позволяет найти круги и линии.

Источник

Как устроено компьютерное зрение?

Мы запускаем камеру на смартфоне, наводим на объект и видим маленькую иконку внизу. Смартфон понимает — что именно мы снимаем. Вы когда-нибудь задумывались, как это работает?

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

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

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

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

Этап 1. Получение изображения

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

В нашем пылесосе есть целых две камеры, они находятся спереди. А вот, например, для ориентации в трехмерном пространстве понадобятся дополнительные сенсоры. В частности 3D-сенсор. Тут он тоже есть и расположен сверху. Но что это за сенсор?

LiDAR

Вообще с названиями 3D-сенсоров есть небольшая путаница, одно и тоже часто называют разными словами.

Эта штука сверху — называется LDS или лазерный датчик расстояния, по-английски — Laser Distance Sensor. Подобные датчики вы наверняка могли заметить на крышах беспилотных беспилотных автомобилей. Это не мигалка, это лазерный датчик расстояния, такой же как на роботе пылесосе.

Вот только в мире беспилотников такой сенсор принято называть лидаром — LIDAR — Light Detection and Ranging. Да-да, как в новых iPhone и iPad Pro.

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

А вот в Android-смартфонах вместо лидаров используется термин ToF-камера: ToF — Time-of-flight.

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

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Кстати, лидары использует не только в задачах навигации. Благодаря лидарам сейчас происходит настоящая революция в археологии. Археологи сканируют территорию с самолета при помощи лидара, после чего очищают данные ландшафта от деревьев. И это позволяет находить древние города, скрытые от глаз человека!

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Лидар в пылесосе

Окей, тут лидар используется для построения карты помещения и это не новая история. Такую технологию мы видели еще года 3-4 назад.

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

Но внутри пылесоса стоит, на секундочку, восьмиядерный Qualcomm Snapdragon 625 (Qualcomm APQ8053), поэтому у него хватает мозгов не только построить карту, но и ориентироваться по ней.

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Также каждую из 4 карт можно поделить на 10 специальных зон. Для которых можно настроить свои параметры уборки: мощность всасывания (до 2500 Па), количество проходов и прочее. А куда-то можно вообще запретить ездить. Можно даже выбирать сухую и влажную уборку для разных зон. Правда для этого не нужно подключать/отключать отдельный резервуар с водой. И всё это стало возможно благодаря лидару.

Тем не менее у технологии есть некоторые недостатки — очень разреженные данные. Пространство сканируется линиями. В больших автомобильных радарах разрешение — от 64 до 128 линий. Плюс ко всему у лидар есть мертвая зона. Если лидар стоит на крыше — то он не видит, что творится в достаточно большом радиусе вокруг него.

Также в роботе-пылесосе лидар тут сканирует пространство всего одним лучом. Поэтому, всё что он видит — это тонкая линия на высоте где-то 9-10 сантиметров от пола. Это позволяет определять где стены и мебель, но он не видит того, что валяется на полу.

Две камеры

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Поэтому, чтобы исправить этот недочет лидаров. как в автомобили, так и в пылесосы ставят дополнительные камеры. Тут камеры сразу две, и они обеспечивают стереоскопическое зрение. Да-да, у пылесоса всё как у людей — два глаза.

Две камеры, во-первых, позволяют убрать мертвую зону впереди пылесоса. А во вторых позволяют достаточно точно определять расстояние до валяющихся на полу предметов.

Это позволяет пылесосу обнаруживать предметы размером не менее 5 см в ширину и 3 см в высоту и объезжать их.

Этап 2. Обработка

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

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

Как получить стерео с двух камер тоже понятно — высчитывается разница между изображениями снятыми чуть под разным углом и так строится карта глубины. Это несложно.

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Но вот совместить данные с разных сенсоров — это нетривиальная задача.

Например, пылесос на полу обнаружил какой-то предмет. Дальше ему нужно понять где именно он находится на карте построенной при помощи лидара. А также нужно предположить какие у него габариты по проекции с одной стороны. То есть нам нужно поместить предмет в некий объёмный куб правильного размера.

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Эту задачу можно решить разными способами. Один из способов называется “усеченная пирамида”. Сначала на камере обнаруживаются предметы. Потом эти предметы помещаются в конус, а объем этого конуса вычисляется нейросетью.

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

А раз мы заговорили про нейросети, значит мы уже немного зашли на 3-й этап компьютерного зрения — анализ.

Этап 3. Анализ

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

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

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

Что-то похожее происходит с нейронными связями в человеческом мозге. Когда мы чему-то учимся или запоминаем, мы повторяем одно и то же действие несколько раз. Нейронные связи в мозге постепенно укрепляются и потом нам это легко даётся!

Например, в данном пылесосе за работу нейросети отвечает встроенный NPU-модуль. Всё-таки внутри Snapdragon, пылесос может себе такое позволить.

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

Распознавание предметов происходит при помощи гугловской библиотеке Tensorflow. Алгоритм самообучается и умнеет от уборки к уборке.

Практика

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

В нашем роботе-пылесосе технология распознавания называется Reactive AI. Мы протестировали насколько она хорошо работает на практике.

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

Проследить за тем, что видит пылесос всегда можно через фирменное приложение или Mi Home от Xiaomi. Можно даже просто кататься по дому управляя пылесосом слать на него голосовые сообщения. Управлять пылесосом можно также через Google Ассистента или Алису. Всё на русском языке.

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

Внутри кстати стоит батарейка на 5200 мАч, которая способна выдержать до 3 часов уборки.

Итоги

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Ребят, ну вы сами всё видели. Правда, стоит обратить внимание, что пока корректное распознавание предметов работает только если запускать пылесос через специальное приложение. И это нюанс, поскольку оно пока недоступно в Play Market Россия. Но в течение нескольких месяцев оно появится.

Источник

Компьютерное зрение. Лекция для Малого ШАДа Яндекса

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

Лекция рассчитана на старшеклассников – студентов Малого ШАДа, но и взрослые смогут почерпнуть из нее много полезного.

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

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

Разница между зрением человека и компьютера

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

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

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

Мальчик или девочка?

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

Машинное обучение

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

Изображение в цифрах

Чаще всего для хранения цифровых изображений используется цветовое пространство RGB. В нем каждой из трех осей (каналов) присваивается свой цвет: красный, зеленый и синий. На каждый канал выделяется по 8 бит информации, соответственно, интенсивность цвета на каждой оси может принимать значения в диапазоне от 0 до 255. Все цвета в цифровом пространстве RGB получаются путем смешивания трех основных цветов.

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

Но существуют и другие цветовые пространства. Весьма интересно в нашем контексте пространство HSV (Hue, Saturation, Value). В нем присутствует ось Value, обозначающая количество света. На него выделен отдельный канал, в отличие от RGB, где это значение нужно вычислять каждый раз. Фактически, это черно-белая версия изображения, с которой уже можно работать. Hue представляется в виде угла и отвечает за основной тон. От значения Saturation (расстояние от центра к краю) зависит насыщенность цвета.

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

Цвет и свет

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

Локальные и глобальные признаки

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

Детектирование и сегментация

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Дескрипторы и визуальные слова

Существует много разных подходов к распознаванию.

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

Один из наиболее распространенных способов называется Difference of Gaussians (DoG). Размывая картинку с разным радиусом и сравнивая получившиеся результаты, можно находить наиболее контрастные фрагменты. Области вокруг этих фрагментов и являются наиболее интересными.

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

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

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

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

Распознавание и классификация

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

Источник

ComputerVision и с чем его едят

Как научить машину видеть?

Машинное зрение относится к Machine Learning, куда входят и семантические анализаторы, и распознаватели звуков, и прочее. Это сложная предметная область, и она требует глубоких знаний математики (в том числе, бррррр, тензорной математики). Существует множество алгоритмов, которые применяются при распознавании образов: VGG16, VGG32, VGG29, ResNet, DenseNet, Inception (V1, V2, V3, V… их сотни!). Наиболее популярными считаются VGG16 и Inception V3 и V4. Самый простой, популярный и больше всего подходящий для быстрого старта — VGG16, поэтому выбираем и ковыряем его. Начнем с названия VGG16 и выясним, что же в нём сакрального и как оно расшифровывается. И тут К.О. подсказывает, что всё просто: VGG — это Visual Geometry Group c факультета инженерных наук Оксфордского университета. Ну а 16 откуда? Тут чуть сложнее и уже напрямую связано с алгоритмом. 16 — число слоёв нейронной сети, которое используется для распознавания образов (наконец-то приступили к интересному, а то всё вокруг да около). И уже пора врубаться в самую суть матана. Сами они используют от 16 до 19 слоев и фильтры 3х3 на каждом уровне нейронной сети. Собственно, причин несколько: наибольшая производительность именно при таком количестве слоёв, точность распознавания (вполне достаточно и этого, ссылки на статьи, раз и два). Следует отметить, что нейронная сеть используется не простая, а улучшенная свёрточная нейронная сеть (Convolutional Neural Network (CNN) и Convolutional Neural Network with Refinement (CNN-R)).

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Вот эта замечательная хаски станет нашим ассистентом, над ней мы и будем ставить эксперименты. Она уже светится от счастья и желает поскорее вникнуть в детали.
Итак, простыми словами: свёрточная нейронная сеть работает с двумя «командами» (сильно утрирую, но так будет понятнее). Первая — выдели фрагмент, вторая — попытайся найти объект целиком. Почему целиком? Имея в наличии набор мельчайших паттернов с контурами целых объектов, нейросети проще в дальнейшем получать характерные признаки и сравнивать их с изображением, которое требуется распознать. И тут нам поможет изображение алгоритма в конечном виде. Кто хочет изучить подробно, с тоннами матана — вот пруфлинк. А мы идём дальше.
Объяснить следующий алгоритм не так сложно. Это полный алгоритм работы свёрточной нейронной сети с модулем улучшения (вот тот самый, который обведён пунктиром и присутствует после каждого шага свёртки).

Первый шаг: пилим изображением пополам (с хаски проделано, но не так эффектно выглядит, как со слонами на рисунке). Потом ещё пополам, потом ещё и ещё, и так доходим до тараканов, в смысле до блока 14х14 и меньше (минимальный размер, как уже было сказано, 3х3). Между шагами — основная магия. А именно — получение маски целого объекта и вероятности нахождения целого объекта на отпиленном куске. После всех этих манипуляций получаем набор кусочков и набор масок к ним. Что теперь с ними делать? Ответ прост: при уменьшении изображения мы получаем деградацию соседних пикселей, что упростит построение маски в упрощённом виде и даст возможность увеличить вероятность различения переходов между объектами.

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

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

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

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

И вот теперь настал момент спросить: а зачем нам этот «модуль-улучшайзер» вообще нужен, если вроде как всё и так неплохо?

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

В чём отличие классической свёрточной нейронной сети и улучшенной свёрточной нейронной сети?

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Эффектно. Это называется DeepMask — грубые границы объектов на изображении. Попробуем разобраться, почему так. Начнём с простого — с носа. При деградации изображения контраст очевиден, поэтому нос и выделен как самостоятельный объект. То же самое и с ноздрями: на определённых уровнях свёртки они стали самостоятельными объектами за счёт того, что находились полностью на фрагменте. Кроме того, отдельно обведена морда второй собаки (как, не видите? Да вот же она, прямо перед вами!). Кусок руки был признан фоном. Ну что поделать? С основной частью фона по цвету не контрастирует. Зато переход «рука-футболка» выделен. И погрешность в виде пятна «рука-сетка», и большое пятно, захватывающее фон и голову хаски.

Что ж, результат интересный! Как же можно помочь алгоритму справиться с задачей лучше? Только если поиздеваться над нашим помощником. Для начала попробуем сделать его в градациях серого. Мда… Фото хуже, чем в паспорте. После этого лаборанту уже нечего терять, я только включил один фильтр, и всё завертелось… Сепия, а за ней соляризация, накладывание и вычитание слоёв, размытие фона со сложением изображений — в общем, что видел, то и применял; главное, чтобы объекты становились заметнее на изображении. Как говорится, картинка в фотошопе всё стерпит. Поиздевались, пора бы и посмотреть, как теперь будет распознано изображение.

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Нейросеть сказала: «Здесь нет того, кого можно хоть как-то классифицировать». Логично, контрастные только нос и глаза. Не слишком характерно при небольшом наборе для обучения.

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Ух, жуть какая (прости, друг)! Но здесь мы серьёзно прибавили контраста объектам на изображении. Как? Берём и дублируем изображение (можно несколько раз). На одном выкручиваем контраст, на другом — яркость, на третьем — пережигаем цвета (делаем их неестественно яркими) и потом всё это складываем. И напоследок попробуем запихнуть многострадальную хаски в обработку.

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Надо сказать, что стало лучше. Не прям «ух, как круто», но получше. Уменьшилось число неполных объектов, появился контраст между объектами. Дальнейшие эксперименты с предварительной обработкой дадут больший контраст: объект — объект, объект — фон. Получим 4 сегмента вместо 8. С точки зрения обработки большого потока картинок (150 изображений в минуту) лучше вообще не заморачиваться с предварительной обработкой. Она — так, поиграться на домашнем компьютере.

Идём дальше. SharpMask практически отличаться не будет. А SharpMask — это построение уточнённой маски объектов. Алгоритм с улучшением тот же.

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

Computer vision что это. Смотреть фото Computer vision что это. Смотреть картинку Computer vision что это. Картинка про Computer vision что это. Фото Computer vision что это

Запускаем быстро собранное демо и получаем результат — целых 70%, что это собака. Неплохо.

Но как машина поняла, что это собака? Вот мы напилили кусков, получили красивые маски, матрицы к ним и наборы признаков. Что дальше-то? А дальше всё просто: у нас есть обученная сеть, у которой есть эталонные наборы признаков, масок и прочее, прочее, прочее. Ну, есть они, и что дальше-то? Вот наша хаски с набором признаков, вот эталонная сферическая собака в вакууме с набором признаков. Тупое сравнение в лоб делать нельзя, потому как недостаток признаков у изображения, которое мы распознаём, приведёт к ошибке. И что же делать? Для этого придумали такой замечательный параметр, как dropout, или рандомный сброс параметров сети. Это значит следующее: берутся оба набора и из каждого из них рандомно удаляются признаки (проще говоря, есть наборы по 10 признаков, dropout = 0.1; по одному признаку отбрасываем, далее сравниваем). А в результате? А в результате — PROFIT.

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

Вместо выводов

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *