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

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

Проблемы с компьютерным зрением

  • Вход может стать очень большим
  • Изображение размером 64 * 64 = 64 * 64 * 3 (каналы RGB) = 12288 = Размер входных характеристик X для стандартной нейронной сети.
  • 1000 * 1000 изображений = 1 мегапиксель = 1000 * 1000 * 3 (каналы RGB) = 3 млн входных характеристик.
  • Если в 1-м скрытом слое у нас 1000 единиц, то размер матрицы параметров W составляет (1000, 3M) = 3 миллиарда параметров.

Сверточная операция

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

Обнаружение вертикального края: сверточная операция

Ключевые строительные блоки для сверточной операции.

Фильтр

1-й строительный блок CNN. Давайте рассмотрим представление 2D-изображения в оттенках серого. На рисунке выше показано изображение в оттенках серого 6x6. У него нет 3 каналов RGB. Чтобы выполнить операцию свертки, мы используем фильтр f x f. Этот конкретный фильтр имеет такие значения, что он обнаруживает вертикальные края изображения. Вы берете фильтр и перемещаетесь по матрице входного изображения, патч за патчем, чтобы выполнить сверточную операцию. Выходной сигнал 4x4 является результатом сверточной операции между входным изображением и фильтром.

Немного о значениях в фильтре: 1 представляет яркий пиксель, а -1 представляет темный пиксель. Сверточная операция над большим изображением, в отличие от изображения 6x6, тогда поможет найти вертикальные края из-за способа составления матрицы.

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

Заполнение

2-й строительный блок CNN. Padding используется для решения 2 задач.

  1. Если мы не используем отступы, информация по краям изображения будет представлена ​​меньше по сравнению с другими частями. Чтобы сбалансировать это, мы вводим padding p.
  2. Другой причиной использования заполнения является сохранение выходной матрицы от свертки того же размера, что и входная. Если у нас есть сотни слоев в CNN, где на каждом слое мы выполняем свертку, в противном случае мы теряем информацию на каждом слое.

Строгая свертка

3-й строительный блок CNN. Вместо того чтобы перемещать матрицу свертки по одному шагу за раз, вы можете перемещать ее с шагом s. Если полная матрица свертки не соответствует входной матрице, вы игнорируете выходные данные. Технически матрица свертки представляет собой матрицу взаимной корреляции. Настоящая свертка берет матрицу fxf, а затем переворачивает ее по горизонтали и вертикали. Однако в литературе CNN взаимная корреляция называется сверткой.

Свертка по объему

Пока мы сосредоточились только на изображении в градациях серого. Давайте теперь посмотрим, как мы делаем свертку по изображению RGB. Поскольку изображение RGB имеет 3 канала, оно выполняет свертку по объему. Это означает, что теперь наш фильтр также должен быть n-мерным. Каждый канал обнаруживает край / образец в соответствующем канале. Мы также можем применять несколько фильтров одновременно к изображению, каждый фильтр обнаруживает разные шаблоны. Например. горизонтальный или вертикальный край против полос и т. д.

Далее: давайте добавим слои в сверточную сеть. Подробнее здесь.