Для чего нужна свертка

Наглядно о том, как работает свёрточная нейронная сеть

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

Начинаем сначала

Свёрточная нейронная сеть (ConvNet/CNN) — это алгоритм глубокого обучения, который может принимать входное изображение, присваивать важность (изучаемые веса и смещения) аспектам или объектам изображении и отличать одно от другого. При этом изображения в сравнении с другими алгоритмами требуют гораздо меньше предварительной обработки. В примитивных методах фильтры разрабатываются вручную, но достаточно обученные сети CNN учатся применять эти фильтры/характеристики.

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

Почему слои свёртки расположены над сетью с прямой связью

Изображение — не что иное, как матрица значений пикселей, верно? Так почему бы не сделать его плоским (например, матрицу 3×3 сделать вектором 9×1) и скормить этот вектор многослойному перцептрону, чтобы тот выполнил классификацию? Хм… всё не так просто.

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

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

Входное изображение

На рисунке мы видим разделённое на три цветовых плоскости (красную, зелёную и синюю) RGB-изображение, которое можно описать в разных цветовых пространствах — в оттенках серого (Grayscale), RGB, HSV, CMYK и т. д.

Можно представить, насколько интенсивными будут вычисления, когда изображения достигнут размеров, например, 8 K (76804320). Роль CNN заключается в том, чтобы привести изображения в форму, которую легче обрабатывать, без потери признаков, имеющих решающее значение в получении хорошего прогноза. Это важно при разработке архитектуры, которая не только хорошо изучает функции, но и масштабируется для массивных наборов данных.

Слой свёртки — ядро

1 — количество каналов, например, RGB.

В демонстрации выше зелёная секция напоминает наше входное изображение 5×5×1. Элемент, участвующий в выполнении операции свёртки в первой части слоя свёртки, называется ядром/фильтром K, он представлен жёлтым цветом. Пусть K будет матрицей 3×3×1:

Ядро смещается 9 раз из-за длины шага в единицу (то есть шага нет), каждый раз выполняя операцию умножения матрицы K на матрицу P, над которой находится ядро.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна сверткаПеремещение ядра

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

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна сверткаОперация свёртки на матрице изображения M×N×3 с ядром 3×3×3

В случае изображений с несколькими каналами (например, RGB) ядро имеет ту же глубину, что и у входного изображения. Матричное умножение выполняется между стеками Kn и In ([K1, I1]; [K2, I2]; [K3, I3]), все результаты суммируются со смещением, чтобы получить уплощённый канал вывода свёрнутых признаков с глубиной в 1.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна сверткаОперация свёртки с длиной шага, равной 2

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

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

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна сверткаНулевое заполнение: для создания изображения 6×6×1 изображение 5×5×1 дополняется нулями

Увеличивая изображение 5×5×1 до 6×6×1, а затем проходя над ним ядром 3×3×1, мы обнаружим, что свёрнутая матрица будет обладать разрешением 5×5×1. Отсюда и название — нулевое заполнение. С другой стороны, проделав то же самое без заполнения, мы обнаружим матрицу с размерами самого ядра (3×3×1); эта операция называется допустимым заполнением.

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

Слой объединения

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

Есть два типа объединения: максимальное и среднее. Первое возвращает максимальное значение из покрытой ядром части изображения. А среднее объединение возвращает среднее значение из всех значений покрытой ядром части.

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

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна сверткаТипы объединения

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

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

Классификация — полносвязный слой

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

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

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

Репозиторий с проектом по распознаванию цифр.

CNN имеет огромное количество практических приложений; и если вам интересны эксперименты и поиски в области ИИ, обратите внимание на наш курс о машинном и глубоком обучении или прокачайтесь в работе с данными или освойте перспективную специальность с помощью нашего флагманского курса о Data Science.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Источник

Копируем человеческий мозг: операция «Свертка»

Чему уже научились сверточные искусственные нейронные сети (ИНС) и как они устроены?

1. Предисловие

Такие статьи принято начинать с экскурса в историю, дабы описать кто придумал первые ИНС, как они устроены и налить прочую, бесполезную, по большей части, воду. Скучно. Опустим это. Скорее всего вы представляете, хотя бы образно, как устроены простейшие ИНС. Давайте договоримся рассматривать классические нейронные сети (типа перцептрона), в которых есть только нейроны и связи, как черный ящик, у которого есть вход и выход, и который можно натренировать воспроизводить результат некой функции. Нам не важна архитектура этого ящика, она может быть очень разной для разных случаев. Задачи, которые они решают — это регрессия и классификация.

2. Прорыв

Что же такого произошло в последние годы, что вызвало бурное развитие ИНС? Ответ очевиден — это технический прогресс и доступность вычислительных мощностей.

Приведу простой и очень наглядный пример:

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Earth Simulator – один из самых быстрых в мире вычислительных комплексов. Он был построен в 2002 году. До 2004 года эта машина оставалась самым мощным вычислительным устройством в мире.

2015:
Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка
NVIDIA Tesla M40/M4: GPU для нейронных сетей

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

3. Операция свертки.

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

Что же это такое? Попробуем разложить всё по полочкам:

Котики

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка
Экспериментируя на животных, David Hubel и Torsten Wiesel выяснили, что одинаковые фрагменты изображения, простейшие формы, активируют одинаковые участки мозга. Другими словами, когда котик видит кружочек, то у него активируется зона “А”, когда квадратик, то “Б”. И это сподвигло ученых написать работу, в которой они изложили свои идеи по принципам работы зрения, а затем они это подтвердили опытами:

Вывод был примерно такой:

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

Математика

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

Если мы рассмотрим картинку как двумерный массив точек, каждую точку — как набор значений RGB, а каждое значение — это просто 8-ми битовое число, то получим вполне себе классическую матрицу. Теперь возьмем и придумаем свою, назовем её Kernel, матрицу, и будет она такой:

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Вот что мы получим:

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Взглянув на секцию Edge Detection мы увидим, что результатом являются грани, т.е. мы легко можем подобрать такие Kernel, которые на выходе будут определять линии и дуги разной направленности. И это именно то что нам нужно — фичи изображения первого уровня. Соответственно, можно предположить, что применив те же действия еще раз, мы получим комбинации фич первого уровня — фичи второго уровня (кривые, окружности и т.п.) и это можно было бы повторять очень много раз, если бы мы не были ограничены в ресурсах.

Вот пример наборов Kernel матриц:

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка
Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Сначала разработчики пытались сами подобрать Kernel, но вскоре выяснилось, что его можно получить обучением, и это намного эффективнее.

Подводные камни

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

На помощь вновь пришли математики и придумали операцию объединения (pooling). Суть ее проста — если в определенной области присутствует фича высокого уровня, то можно откинуть другие.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Такая операция не только помогает экономить память, но и избавляет от мусора и шумов на изображении.

На практике чередуют слои свертки и объединения несколько раз.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Финальная архитектура

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

Вот примеры нескольких схем реальных фича-экстракторов:

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка
Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка
Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

Это видео просто шикарно демонстрирует как работают фича-экстракторы:

4. Кто всем заправляет?

1. Tensorflow

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

Пример того, что дает Inception-v3 (классификатор изображений от Google, построенный на Tensorflow) и натренированный на ImageNet наборе изображений:

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

2. MS Cognitive Services (The Microsoft Cognitive Toolkit)

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

Можно, конечно, использовать MSCT так же как и TF, там даже синтаксис и идея очень похожи, оба описывают графы с заглушками, но ведь зачем тратить время, когда можно использовать уже обученные модели?

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

3. Caffe (Caffe2)

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

Яркий пример применения Caffe:
Rober Bond, используя натренированную на распознавание котов сеть, соорудил автоматизированную прогонялку котов с его газона, которая при обнаружении кота на видео, поливает его водой.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Существует еще много разных, популярных в свое время библиотек, оберток, надстроек: BidMach, Brainstorm, Kaldi, MatConvNet, MaxDNN, Deeplearning4j, Keras, Lasagne(Theano), Leaf, но лидером считается Tensorflow, в силу своего бурного роста за последние два года.

5. Области применения (вместо заключения)

В конце статьи хочу поделиться некоторыми яркими примерами использования сверточных сетей:

Источник

Руководство для начинающих по сверточным нейронным сетям (CNNs)

Дата публикации Feb 15, 2019

Что такое свертка?

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

Обратите внимание, что изображение является двухмерным с шириной и высотой. Если изображение цветное, считается, что оно имеет еще одно измерение для цвета RGB. По этой причине 2D-свертки обычно используются для черно-белых изображений, а 3D-свертки используются для цветных изображений.

Свертка в 2D

Давайте начнем с (4 x 4) входного изображения без заполнения, и мы используем (3 x 3) сверточный фильтр для получения выходного изображения.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Математически это (2 * 1) + (0 * 0) + (1 * 1) + (0 * 0) + (1 * 0) + (0 * 0) + (0 * 0) + (0 * 1) + (1 * 0) = 3

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

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Обратите внимание, что вы переместили фильтр только на один столбец. Размер шага, когда фильтр скользит по изображению, называетсяшаг, Здесь шаг равен 1. Эта же операция повторяется, чтобы получить третий вывод. Размер шага больше 1 всегда уменьшает размер изображения. Если размер равен 1, размер изображения останется прежним.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Наконец, вы получаете окончательный результат.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

Свертка в 3D

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

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Обычно ширина вывода уменьшается, как и размер вывода в 2D-случае.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Мы можем применить больше отступов!

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Как только вы закончите, вот как будет выглядеть результат:

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Выходной канал сверток называетсякарта объектов, Он кодирует наличие или отсутствие и степень присутствия обнаруживаемой функции. Обратите внимание, что, в отличие от 2D-фильтров, каждый фильтр подключается ккаждыйвходной канал. (вопрос? что означает, что каждый фильтр подключается к каждому входному каналу в отличие от 2D?) Это означает, что они могут вычислять сложные функции. Первоначально, глядя на каналы R, G, B, а затем, глядя на комбинации изученных особенностей, таких как различные ребра, формы, текстуры и семантические особенности.

Перевод-инвариантная

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

Здесь рассматривается 1D свертка, потому что она обычно недостаточно объяснена, но имеет значительные преимущества.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

объединение

Max-Pooling

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

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Средний-Pooling

Это то же самое, что и max-pooling, за исключением того, что оно усредняет окна, а не выбирает максимальное значение.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Общая настройка

Для реализации CNN наиболее успешная архитектура использует один или несколько стеков уровней свертки + пул с повторной активацией, за которыми следует плоский слой, а затем один или два плотных слоя.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

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

Вот пример типичной сети CNN в Керасе.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Вот результат, когда вы делаете model.summary ()

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Давайте разберем эти слои и посмотрим, как мы получим эти номера параметров.

Conv2d_1

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Размер фильтра (3 x 3) * глубина ввода (1) * количество фильтров (32) + смещение 1 / фильтр (32) = 320. Здесь глубина ввода равна 1, поскольку она используется для черно-белых данных MNIST. Обратите внимание, что по умолчанию в тензорном потоке к каждому слою свертки добавлено смещение.

Max_pooling2d_1

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Слои пула не имеют параметров

Conv2d_2

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Размер фильтра (3 x 3) * глубина ввода (32) * количество фильтров (64) + смещение, 1 на фильтр (64) = 18496

Flatten_1

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Размещает том над ним в массив.

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Dense_1

Для чего нужна свертка. Смотреть фото Для чего нужна свертка. Смотреть картинку Для чего нужна свертка. Картинка про Для чего нужна свертка. Фото Для чего нужна свертка

Входной размер (128) * Выходной размер (10) + Одно смещение на выходной нейрон (10) = 1290

Резюме

источники

Этот учебник основан на лекциях из курса прикладного глубокого обучения в Колумбийском университетеДжошуа Гордон, Потрясающие 3d изображения изМартин Горнер,

Источник

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

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