Сегментация и обнаружение объектов - Часть 1

Основы сегментации

Навигация

Это конспекты лекции FAU Глубокое обучение на YouTube. Это полный текст лекции и соответствующие слайды. Надеемся, вам понравится это не меньше, чем видео. Конечно, эта стенограмма была создана с помощью методов глубокого обучения в значительной степени автоматически, и были внесены лишь незначительные изменения вручную. "Попробуй сам!" Если вы заметили ошибки, сообщите нам об этом!

использованная литература

Предыдущая лекция / Посмотрите это видео / Верхний уровень / Следующая лекция

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

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

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

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

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

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

Конечно, если мы хотим это сделать, нам нужно немного поговорить об оценочных показателях. Мы должны каким-то образом измерить полезность алгоритма сегментации. Это зависит от нескольких факторов, таких как время выполнения, объем памяти и качество. Качество метода нам нужно оценивать с помощью разных метрик. Основная проблема здесь в том, что очень часто классы распределяются неравномерно. Итак, мы должны как-то это объяснить. Мы можем сделать это, также увеличив количество классов с помощью фонового класса. Затем мы можем определить, например, вероятность того, что пиксель класса i будет выведен как принадлежащий классу j. Например, индекс p i, i тогда будет представлять количество истинных положительных результатов.

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

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

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

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

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

Итак, с другой стороны, нам нужен декодер. Затем этот декодер снова используется для повышения дискретизации информации. На самом деле существует несколько подходов к тому, как это сделать. Одна из первых - это полностью сверточная сеть Лонга и др. [13]. Также существует SegNet [1], и я думаю, что наиболее популярным является U-net [21]. Это также статья, на которую я намекнул, и на нее есть много ссылок. Итак, U-net действительно популярен, и вы можете видеть, что вы можете проверять количество цитирований каждый день.

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

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

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

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

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

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

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

Если вам понравился этот пост, вы можете найти больше эссе здесь, больше образовательных материалов по машинному обучению здесь или взглянуть на нашу Лекцию Глубокое обучение. Я также был бы признателен за подписку на YouTube, Twitter, Facebook или LinkedIn, если вы хотите получать информацию о новых эссе, видео и исследованиях в будущем. Эта статья выпущена под лицензией Creative Commons 4.0 Attribution License и может быть перепечатана и изменена при наличии ссылки. Если вас интересует создание стенограмм видеолекций, попробуйте Автоблог.

[1] Виджай Бадринараянан, Алекс Кендалл и Роберто Чиполла. «Segnet: архитектура глубокого сверточного кодера-декодера для сегментации изображений». В: препринт arXiv arXiv: 1511.00561 (2015). arXiv: 1311.2524.
[2] Сяо Бянь, Сер Нам Лим и Нин Чжоу. «Мультимасштабная полностью сверточная сеть для применения в промышленном контроле». В: Приложения компьютерного зрения (WACV), Зимняя конференция IEEE 2016 г. IEEE. 2016, стр. 1–8.
[3] Лян-Чие Чен, Джордж Папандреу, Ясонас Коккинос и др. «Сегментация семантического изображения с помощью глубоких сверточных сетей и полностью связанных CRF». В: CoRR abs / 1412.7062 (2014). arXiv: 1412.7062.
[4] Лян-Чие Чен, Джордж Папандреу, Ясонас Коккинос и др. «Deeplab: семантическая сегментация изображений с помощью глубоких сверточных сетей, жесткой свертки и полностью связанных crfs». В: препринт arXiv arXiv: 1606.00915 (2016).
[5] С. Рен, К. Хе, Р. Гиршик и др. «Более быстрый R-CNN: на пути к обнаружению объектов в реальном времени с помощью региональных сетей». В: т. 39. 6. июнь 2017, стр. 1137–1149.
[6] Р. Гиршик. «Быстрый R-CNN». В: Международная конференция IEEE по компьютерному зрению (ICCV), 2015 г. Декабрь 2015 г., стр. 1440–1448.
[7] Цунг-И Лин, Прия Гоял, Росс Гиршик и др. «Потеря фокуса при обнаружении плотных объектов». В: препринт arXiv arXiv: 1708.02002 (2017).
[8] Альберто Гарсиа-Гарсия, Серджио Ортс-Эсколано, Серджиу Опреа и др. «Обзор методов глубокого обучения, применяемых к семантической сегментации». В: препринт arXiv arXiv: 1704.06857 (2017).
[9] Бхарат Харихаран, Пабло Арбелаес, Росс Гиршик и др. «Одновременное обнаружение и сегментация». В: Европейская конференция по компьютерному зрению. Springer. 2014, стр. 297–312.
[10] Кайминг Хе, Джорджия Гкиоксари, Петр Доллар и др. «Маска R-CNN». В: CoRR abs / 1703.06870 (2017). arXiv: 1703.06870.
[11] Н. Далал и Б. Триггс. «Гистограммы ориентированных градиентов для обнаружения человека». В: 2005 Конференция компьютерного общества IEEE по компьютерному зрению и распознаванию образов Vol. 1. июнь 2005 г., 886–893 т. 1.
[12] Джонатан Хуанг, Вивек Ратод, Чен Сун и др. «Компромисс между скоростью и точностью для современных детекторов сверточных объектов». В: CoRR abs / 1611.10012 (2016). arXiv: 1611.10012.
[13] Джонатан Лонг, Эван Шелхамер и Тревор Даррелл. «Полностью сверточные сети для семантической сегментации». В: Материалы конференции IEEE по компьютерному зрению и распознаванию образов. 2015, стр. 3431–3440.
[14] Полин Люк, Камилла Купри, Сумит Чинтала и др. «Семантическая сегментация с использованием состязательных сетей». В: препринт arXiv arXiv: 1611.08408 (2016).
[15] Кристиан Сегеди, Скотт Э. Рид, Думитру Эрхан и др. «Масштабируемое высококачественное обнаружение объектов». В: CoRR abs / 1412.1441 (2014). arXiv: 1412.1441.
[16] Хён У Но, Сын Хун Хон и Бохён Хан. «Обучающаяся деконволюционная сеть для семантической сегментации». В: Материалы Международной конференции IEEE по компьютерному зрению. 2015, стр. 1520–1528.
[17] Адам Пашке, Абхишек Чауразия, Сангпил Ким и др. «Enet: архитектура глубокой нейронной сети для семантической сегментации в реальном времени». В: препринт arXiv arXiv: 1606.02147 (2016).
[18] Педро О Пиньейру, Ронан Коллобер и Петр Доллар. «Учимся сегментировать кандидатов в объекты». В кн .: Достижения в системах обработки нейронной информации. 2015, стр. 1990–1998.
[19] Педро О Пиньейро, Цунг-И Лин, Ронан Коллобер и др. «Учимся уточнять сегменты объекта». В: Европейская конференция по компьютерному зрению. Springer. 2016, с. 75–91.
[20] Росс Б. Гиршик, Джефф Донахью, Тревор Даррелл и др. «Богатые иерархии функций для точного обнаружения объектов и семантической сегментации». В: CoRR abs / 1311.2524 (2013). arXiv: 1311.2524.
[21] Олаф Роннебергер, Филипп Фишер и Томас Брокс. «U-net: сверточные сети для сегментации биомедицинских изображений». В: MICCAI. Springer. 2015, с. 234–241.
[22] Каймин Хэ, Сяньюй Чжан, Шаоцин Рен и др. «Объединение пространственных пирамид в глубоких сверточных сетях для визуального распознавания». В: Компьютерное зрение - ECCV 2014. Чам: Springer International Publishing, 2014, стр. 346–361.
[23] Дж. Р. Р. Уиджлингс, К. Э. А. ван де Санде, Т. Геверс и др. «Выборочный поиск для распознавания объектов». В: Международный журнал компьютерного зрения 104.2 (сентябрь 2013 г.), стр. 154–171.
[24] Вэй Лю, Драгомир Ангуелов, Думитру Эрхан и др. «SSD: детектор MultiBox Single Shot». В: Computer Vision - ECCV 2016. Cham: Springer International Publishing, 2016, pp. 21–37.
[25] П. Виола и М. Джонс. «Быстрое обнаружение объектов с помощью усиленного каскада простых функций». В: Proceedings of the 2001 IEEE Computer Society Conference on Computer Vision Vol. 1. 2001, pp. 511–518.
[26] Дж. Редмон, С. Диввала, Р. Гиршик и др. «Вы только посмотрите один раз: унифицированное обнаружение объектов в реальном времени». В: Конференция IEEE по компьютерному зрению и распознаванию образов (CVPR), 2016 г. Июнь 2016 г., стр. 779–788.
[27] Джозеф Редмон и Али Фархади. «YOLO9000: лучше, быстрее, сильнее». В: CoRR abs / 1612.08242 (2016). arXiv: 1612.08242.
[28] Фишер Ю. и Владлен Колтун. «Многомасштабная агрегация контекста с помощью расширенных сверток». В: препринт arXiv arXiv: 1511.07122 (2015).
[29] Шуай Чжэн, Садип Джаясумана, Бернардино Ромера-Паредес и др. «Условные случайные поля как рекуррентные нейронные сети». В: CoRR abs / 1502.03240 (2015). arXiv: 1502.03240.
[30] Алехандро Ньюэлл, Кайю Ян и Цзя Дэн. «Сложенные сети песочных часов для оценки позы человека». В кн .: Европейская конференция по компьютерному зрению. Springer. 2016. С. 483–499.

Сегментация и обнаружение объектов - Часть 1