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

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

Через несколько лет после своего развития CNN уже выиграла свой первый конкурс распознавания изображений (2011), а в следующем, 2012 году, четыре победителя конкурса распознавания изображений использовали CNN в качестве базовой архитектуры! И даже сейчас CNN по-прежнему является королевой компьютерного зрения!

Давайте начнем это объяснение с:

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

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

Как извлечь черты из изображений?

Скажем, вы хотите удалить морщины, как мы можем найти морщины (не очевидно вручную) на изображении? Ну а морщинки (рис.1) примерно так выглядят (рис.2).

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

Здесь фильтр представляет собой матрицу 3x3, которая имеет значение 1 по диагонали и 0 в другом месте. Таким образом, этот фильтр будет использоваться как маска для областей в форме креста или полностью темных областей. Вывод высокого значения после умножения матрицы по элементам означает, что форма фильтра и анализируемая область совпадают. Обратите внимание, что матрицы для фильтрации не всегда должны иметь значение 0 и 1, они также могут иметь значение -1, чтобы наложить строгий поиск формы. Действуя аналогично для морщин, мы можем использовать следующие фильтры (рис.4).

Мы можем применить эти фильтры к исходному изображению и просто оставить более высокие значения, чтобы показать, что форма была обнаружена. Таким образом, мы узнаем, где и какие особенности были извлечены из оригинала. (Примечание: этот шаг более известен как этап сверточного слоя, но мы не будем слишком любопытствовать на нем, так как будет еще одна статья, подробно объясняющая слои CNN)

Фильтры? но какие фильтры мне вообще следует использовать?

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

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