CNN Notes 1: операция свертки
Всем привет! Пока моя работа со специализацией MLOps продолжается, я также планирую вспомнить свои старые заметки о CNN и RNN из специализации Deep Learning. Эта серия статей в основном посвящена курсу 4 специализации Convolutional Neural Networks . Надеюсь, вам понравятся эти заметки, и вы прокомментируете области улучшения!
При создании модели распознавания изображений с использованием стандартной NN до сих пор мы использовали изображения только небольшого размера, т.е. (64X64, 24X24 и т. д.). Но в реальной жизни размеры изображения, которые мы обычно хотим использовать, будут (~ 1000 x ~ 1000). т. е. каждое изображение будет вектором (~3 миллиона, 1). а габариты весов будут еще больше. С этими параметрами высокой размерности нам нужны достаточно большие данные, чтобы предотвратить переобучение, а также очень высокие вычислительные требования. Это крайне неэффективно.
Чтобы решить эту проблему, мы используем операцию свертки , которая является одним из основных строительных блоков CNN, и мы проиллюстрируем свертки на примере обнаружения краев.
Операция свертки:
Мы используем эту операцию, чтобы обеспечить пространственное отношение между пикселями, изучая признаки изображения, используя маленькие квадраты входных данных ., т. е. мы берем набор пикселей, изучаем их отношение, определенное фильтром, и сохраняем вывод, который указывает на пространственное отношение между пикселями. пикселей.
Что же это за «пространственные отношения»?
Чтобы понять это, рассмотрим книгу, лежащую на столе. Как определить, что книга отличается от таблицы? Мы, люди, можем инстинктивно знать, что книга отличается от стола, поскольку мы можем видеть трехмерное изображение книги, анализировать и обрабатывать ее, т. е. мы видим тени, отбрасываемые книгой, ее высоту и многие другие особенности.
Точно так же в компьютерном зрении нам сначала нужно отличить объект от его окружения, что делается путем сравнения пикселя с его окружением. В стандартной NN мы изучали каждый пиксель и пытались сопоставить весь набор пикселей с выходом с помощью функции. Теперь, в CNN, мы изучаем различия между пикселем и его окружением, чтобы извлечь признаки. Это не что иное, как вышеупомянутое «пространственное отношение».
Операция, которую мы делаем, на самом деле называется кросс-корреляцией в математике. Но в литературе по глубокому обучению мы называем это операцией свертки.
Чтобы получить больше ясности в процессе свертки, давайте возьмем простой пример матрицы 5x5 (в данном случае изображения) и фильтра 3x3:
На приведенном выше GIF-изображении мы видим, что вся матрица 5x5 преобразуется в матрицу 3x3 с помощью фильтра 3x3. Этот вывод 3x3 содержит пространственное отношение пикселей в середине матрицы 5x5 [т. е. начиная со значения в позиции (2,2) до (4,4)]. Из-за чего мы теряем информацию о границах матрицы. Мы увидим шаги по борьбе с этой потерей информации позже, когда будем обсуждать заполнение .
Пример: Обнаружение края
Обнаружение краев — это самое простое приложение, использующее операцию свертки, поскольку значения пикселей сильно различаются по краям. Когда мы наблюдаем пиксели на краю или границе между двумя разными объектами, скажем, лицом и его фоном, край лица будет окружен пикселями лица, которые обозначают цвет кожи с одной стороны и цвет фона с другой. с другой стороны.
Мы также можем вернуться к предыдущему примеру с книгой на столе и увидеть, что текстура и цвет книги отличаются от стола, на котором она стоит.
Теперь давайте рассмотрим гораздо более простой пример, чтобы понять суть только что прочитанного.
В этом примере видно, что граница находится у 3-й и 4-й колонок, где одна сторона светлая, а другая темная. Который при пропускании через фильтр мы получаем яркие столбцы посередине, указывающие на то, что край находится посередине рассматриваемых пикселей. Теперь, если входное изображение перевернуто по горизонтали, мы получим противоположный результат, как показано ниже:
Значение -30 указывает на переход слева направо от более темной области изображения к более яркой области , а значение +30 указывает на переход от более яркой области к более темной области .
Можно заметить, что фильтр, который мы использовали, является вертикальным фильтром, который пытается обнаружить края, начиная с левой части экрана. Если нам нужен фильтр для обнаружения горизонтальных краев, мы можем просто транспонировать фильтр, который мы используем. Информация, которую мы получаем с помощью вышеуказанного фильтра, очень минимальна. Чтобы получить больше информации, мы используем множество сложных фильтров. Существует множество предопределенных фильтров, которые являются известными фильтрами для обнаружения границ, например, фильтр Собеля или фильтр Шарра и т. д.
Несмотря на то, что эти фильтры работают, есть лучший способ сделать это. То есть использовать обратное распространение, чтобы научить фильтр обнаруживать. Мы поговорим об этом очень скоро в сериале. Так что следите за обновлениями на моей странице и не стесняйтесь проверить другие мои статьи в то же время!
Спасибо, что зашли! Я позабочусь о том, чтобы следующая статья вышла в соответствии с планом и по определенному графику. Так что следите за этим! А пока вы можете прочитать мои статьи о моем проекте по анализу данных или о том, как популярная специализация глубокого обучения сравнивается с наностепенью глубокого обучения Udacity. Или вы также можете ознакомиться с моими последними заметками о специализации MLOps здесь .
Mlearning.ai Предложения по представлению
![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































