Как сверточные нейросети находят границы объектов?

DeepLearning.AI 335 тыс. 11 мин 2 мин 07.11.2017
Главное

Операция свертки (convolution) является фундаментальным строительным блоком сверточных нейронных сетей (CNN). На примере детекции границ объектов становится понятно, как именно нейронные сети «видят» изображения на ранних этапах обработки, выделяя контуры, чтобы в дальнейшем распознавать сложные структуры, такие как лица или предметы.

Основы процесса свертки 1:25

Для компьютерного зрения распознавание объектов начинается с анализа базовых линий и границ. Представим входное изображение в виде матрицы интенсивности пикселей.

Процесс вычисления выходной матрицы 4x4 происходит пошагово:

  1. Фильтр накладывается на верхний левый блок 3x3 исходного изображения.
  2. Выполняется поэлементное умножение: каждое число фильтра умножается на соответствующее значение пикселя.
  3. Девять полученных результатов суммируются, формируя первый элемент результирующей матрицы.
  4. Фильтр сдвигается на один шаг вправо, и операция повторяется для следующей области.

Этот процесс последовательного сдвига (stride) и вычисления продолжается до тех пор, пока не будет заполнена вся выходная матрица.

Программная реализация операции 7:10

Хотя в математической нотации для свертки часто используется символ *, в программировании это обозначение может быть неоднозначным из-за перегруженности оператора (например, он может означать обычное умножение).

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

Детекция границ: как это работает 8:02

Чтобы понять, почему именно такая матрица выполняет роль детектора, рассмотрим простой пример. Представим изображение, где левая половина состоит из «ярких» пикселей (интенсивность 10), а правая — из «темных» (интенсивность 0).

Используя фильтр с положительными значениями слева и отрицательными справа:

Этот метод позволяет выделить вертикальные линии: яркая область в центре выходной матрицы является сигналом о наличии сильного вертикального перехода в исходном изображении. Хотя на примере 6x6 граница кажется толстой, при использовании изображений высокого разрешения (например, 1000x1000 пикселей) этот подход показывает высокую эффективность в поиске контуров.

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

💬 Цитаты

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

«Вертикальная граница — это 3x3 регион, где есть яркие пиксели слева и темные справа.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Свертка (Convolution)
Математическая операция наложения фильтра на изображение для извлечения определенных характеристик.
Фильтр (Kernel)
Матрица небольшого размера, которая при наложении на изображение выделяет специфические признаки, например границы.
Сверточная нейронная сеть (CNN)
Архитектура нейросетей, специально разработанная для эффективной обработки изображений.
Stride
Шаг, с которым фильтр перемещается по входному изображению.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Convolutional Neural Network Edge Detection TensorFlow Keras