Интуиция за матрицами обнаружения краев в свёрточной нейронной сети - PullRequest
0 голосов
/ 07 декабря 2018

Я новичок в области глубокого изучения и пытаюсь понять, как CNN выполняет классификацию изображений

Я также просмотрел несколько видео на YouTube, несколько блогов и статей.И все они упоминают примерно одно и то же:

  1. добавить фильтры для получения карт объектов
  2. выполнить объединение
  3. удалить линейность с помощью RELU
  4. отправитьполностью подключенная сеть.

Хотя все это прекрасно, но я не совсем понимаю, как свертка работает в сущности.Как например.Обнаружение края.

как например: [[-1, 1], [-1,1]] обнаруживает вертикальный край.

Как?Зачем?откуда мы точно знаем, что это обнаружит вертикальный край.

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

могу ли я просто поверить людям на слово?

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

1 Ответ

0 голосов
/ 09 декабря 2018

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

Краткий обзор: С точки зрения изображения, высокая частотаизображение - это то, где интенсивность пикселей изменяется в значительной степени, в то время как низкочастотное изображение - это то, где интенсивность почти одинакова.Изображение имеет как высокочастотные, так и низкочастотные компоненты.Высокочастотные компоненты соответствуют краям объекта, потому что на краях скорость изменения интенсивности значений пикселей высока.

Фильтры верхних частот используются для повышениячастотные части изображения.

Давайте рассмотрим пример , что часть вашего изображения имеет значения пикселей как [[10, 10, 0], [10, 10, 0], [10, 10, 0]], указывающие, что значения пикселей изображения уменьшаются вправо, то есть изображение изменяется от светлого слева к темному справа.Здесь используется фильтр [[1, 0, -1], [1, 0, -1], [1, 0, -1]].

Теперь мы возьмем сверточность этих двух матрицкоторые дают выход [[10, 0, 0], [10, 0, 0], [10, 0, 0]].Наконец, эти значения суммируются, чтобы дать значение пикселя 30, что дает изменение значений пикселей при перемещении слева направо .Точно так же мы находим последующие значения пикселей.

vertical edge detection

Здесь вы заметите, что скорость изменения значений пикселей сильно меняется слева направо, таким образом, вертикальный край был обнаружен.Если бы вы использовали фильтр [[1, 1, 1], [0, 0, 0], [-1, -1, -1]], вы бы получили сверточный вывод, состоящий только из 0, т. Е. Горизонтальный край отсутствует.Аналогичным образом, [[-1, 1], [-1, 1]] обнаруживает вертикальный край.

Вы можете проверить больше здесь в лекции Эндрю Нг.

Редактировать: Обычно фильтр обнаружения вертикальных краев имеет яркие пиксели слева и темные пиксели справа (или наоборот).Сумма значений фильтра должна быть равна 0, иначе результирующее изображение станет ярче или темнее.Кроме того, в сверточных нейронных сетях фильтры изучены так же, как и гиперпараметры путем обратного распространения в процессе обучения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...