знакомство с Mask R-CNN

1656616704 znakomstvo s mask r cnn

Введение

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

В любом случае, в этой публикации мы погрузимся в некоторые из последних разработок компьютерного зрения с глубоким обучением и в конечном счете разработаем модель под названием «Mask R-CNN». Эта публикация должна быть достаточно интуитивно понятна, но я ожидаю, что вы знаете некоторые из основных моделей компьютерного зрения. Если вы думаете, что готовы, начнём.

Выявление объектов против семантической сегментации и сегментации экземпляров

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

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

К примеру, вместо того, чтобы просто рассказывать нам, что изображено на изображении, мы можем научить наш CNN рассказывать нам, какая часть изображения убедила его принять это решение. Чтобы понять, почему это полезно, обязательно просмотрите этот доклад Теда. Это можно сделать, попросив CNN нарисовать квадрат вокруг объекта, как на рисунке ниже:

1*RokhyqAOGI4x6oryPZqZmg
Источник: https://i.ytimg.com/vi/EhcpGpFHCrw/maxresdefault.jpg

В языке глубокого обучения эта задача называется обнаружением объектов, и ее действительно достаточно легко реализовать. Во-первых, при подготовке данных необходимо использовать инструмент, чтобы нарисовать рамки вокруг изображений. Это достаточно просто с помощью бесплатных онлайн-инструментов. Затем мы изменяем конечный/исходящий слой CNN на слой softmax, который имеет 4 + k выходов — координату ограничительной рамки x, координату y ограничительной рамки, высоту ограничительной рамки, ширину ограничительной рамки и оценки вероятности классов для k классов.

Первое, что вы можете спросить, это почему мы выбираем для изучения такие удивительные вещи, как координаты x, y, высота, ширина. Нельзя ли просто узнать координаты (x, y) каждого угла коробки? Что ж, мы можем – однако, если мы изучим 4 пары переменных, нам нужно изучить 8, чтобы представить коробку. Однако если мы используем эту технику, нам нужно использовать только 4.

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

1*NJkAS8w4P5QWKUL6EYpmtA
Источник: http://adas.cvc.uab.es/elektra/wp-content/uploads/sites/13/2016/05/CVC10_Frame3.png

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

1*1F5Ryd72qdJeVDiLltbBFQ
Источник: https://cdn-media-1.freecodecamp.org/images/1*wRkj6lsQ5ckExB5BoYkrZg.png

Таким образом, FCN научится (с помощью мистического темного искусства глубокого обучения) отображение входного изображения в его «раскрашенную» версию, подчеркивающую разные классы на изображении.

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

Хорошо, на самом деле все было не так плохо, не правда ли? Срок вполне ясен. Наша цель – сегментировать или отделять каждый «экземпляр» класса на изображении. Это поможет вам представить, чего мы пытаемся добиться:

1*L2hjU8Eb6SnN--rzLwixBw
Источник: https://cdn-media-1.freecodecamp.org/images/1*lMEd6AcDmpH0mDzBHyiERw.png

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

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

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

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

Эта модель называется Mask R-CNN (сокращение от «региональная свертка нейронная сеть»), и она была создана исследовательской группой Facebook AI (FAIR) в апреле 2017 года.

Принцип работы Mask R-CNN опять-таки достаточно прост. Все, что они (исследователи) сделали, это сшили 2 ранее существующие современные модели вместе и поиграли с линейной алгеброй (кратко исследование глубокого обучения). Модель можно грубо разделить на 2 части – сеть предложений региона (RPN) и классификатор бинарных масок.

Первый шаг состоит в том, чтобы получить набор ограничительных прямоугольников, которые могли бы содержать релевантный объект. Изысканное слово дня здесь – RoI Align. Сеть RoI Align работает на принципах обнаружения объектов (вы уже забыли, о чем говорилось выше!), но она выводит несколько Возможно ограничительные рамки, а не одну определенную. Эти блоки уточняются с помощью другой модели регрессии, которую мы здесь не будем обсуждать. Более подробную информацию о сети RoI Align можно найти здесь.

Второй этап – это собственно делать окрас. В отличие от того, что можно подумать, этот шаг тоже достаточно легок! Все, что вам нужно сделать это применить существующую современную модель для семантической сегментации к каждой ограничительной рамке. Прекрасная часть состоит в том, что, поскольку мы гарантированно будем иметь не более 1 класса в каждой коробке, мы просто тренируем нашу модель семантической сегментации как бинарный классификатор, то есть нам нужно лишь изучить отображение входных пикселей до 1/0. 1 означает наличие объекта, а 0 – фон. Затем, для дополнительной привлекательности, мы могли бы раскрасить каждый из пикселей, отображаемых в 1, чтобы получить эффектные результаты, которые выглядят так:

1*ByJ4h3U6KGoCcd3z6_Bg9Q
Источник: https://cdn-media-1.freecodecamp.org/images/1*E_5qBTrotLzclyaxsekBmQ.png

Вывод

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

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

Проще говоря, думайте о DensePose как о дешевом kinect. По сути, он может делать все, что может сделать усовершенствованная система захвата движения за частичную долю стоимости. Теоретически вы можете запустить эту модель на устройстве за 10 долларов, как на Raspberry Pi!

С теоретической точки зрения (он же более «холодный»), эта технология может быть распространена на другие типы нейронных сетей (кроме CNN и FCN). Основная идея здесь состоит в том, чтобы взять наиболее элементарную часть некоторых данных (в этом случае пиксель) и решить, как они вносятся в общую структуру.

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

На более серьезной ноте мы могли бы использовать ту же технику для более важных данных. Например, мы могли бы научить модель Mask R-CNN выделять которую точный области МРТ-сканирования коррелируют с определенными поведенческими/психологическими моделями или подпоследовательности ДНК соответствуют некоторым особым признакам, что потенциально может привести к прорывам в медицинском ИИ.

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

0*1sJ2YoLd6akGeewj

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

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