DeepLearning.AI: «Сверточная реализация метода скользящего окна»

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

Эффективное обнаружение объектов: сверточная реализация метода скользящего окна 🚀 0:00

Алгоритм обнаружения объектов на основе скользящего окна, описанный в классических подходах, зачастую страдает от низкой скорости из-за избыточности вычислений. В данном видео, основанном на методах из статьи «OverFeat» (авторы Пьер Сермане, Дэвид Эган, Сяоцзян Ма, Мэтью Зейлер и Ян Лекун), демонстрируется, как преобразовать полносвязные слои нейронной сети в сверточные, что позволяет значительно ускорить выполнение алгоритма за счет совместного использования вычислений для разных фрагментов изображения.

Трансформация полносвязных слоев в сверточные 🧠 0:13

Чтобы понять, как работает сверточная реализация, необходимо сначала рассмотреть, как заменить стандартные полносвязные (fully connected) слои на сверточные операции.

Сверточная реализация метода скользящего окна 🖼️ 4:09

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

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

  1. Объединение вычислений: Вместо четырех независимых проходов для четырех участков изображения $14 \times 14$, алгоритм подает всё входное изображение (например, $16 \times 16 \times 3$) на вход сети один раз.
  2. Обработка объема: Вся сеть работает как сверточная, сохраняя структуру данных на каждом этапе. Вместо $1 \times 1$ на выходе, мы получаем объем, например, $2 \times 2 \times 4$.
  3. Соответствие результатов: Каждая ячейка выходного объема $1 \times 1 \times 4$ (например, верхний левый элемент) соответствует результату классификации для конкретного окна в исходном изображении.
  4. Масштабирование: При подаче большего изображения (например, $28 \times 28 \times 3$) алгоритм выдает результат $8 \times 8 \times 4$, что эквивалентно выполнению скользящего окна с шагом 2 по всему пространству.

Преимущества и ограничения ⚡ 10:00

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

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

💬 Цитаты

«Вместо того чтобы принуждать вас выполнять прямое распространение для четырех подмножеств входного изображения независимо, это объединяет все четыре в одно вычисление.»

«Это делает все дело намного эффективнее.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Скользящее окно
Метод обнаружения объектов, при котором модель классифицирует каждый отдельный фрагмент (окно) изображения.
Полносвязный слой
Тип слоя в нейронной сети, где каждый нейрон связан с каждым нейроном предыдущего слоя.
Свертка 1x1
Тип свертки, используемый для изменения количества каналов (глубины) без изменения пространственных размеров изображения.
Softmax
Функция активации, преобразующая вектор чисел в вероятности классов.
Max pooling
Операция уменьшения размерности, выбирающая максимальное значение в окне фильтра.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Convolutional Neural Networks Sliding Windows DeepLearning.AI OverFeat