Первая версия от 14 марта 2017 г.

Нейронная сеть со сверточными фильтрами очень точно идентифицирует объект или человека на фотографии. Как насчет декомпозиции сцены, состоящей не из одного объекта, а из нескольких? Это проблема сегментации изображения.

В этом посте обсуждается:

  • Нейронная сеть сегментации
  • Матрицы с повышающей дискретизацией со слоями «DeConvolution»
  • Keras реализация непоследовательной нейронной сети
  • Влияние метода обучения на точность сегментации
  • Влияние разрешения изображения на задачу сегментации

Архитектура нейронной сети: FCN-8s

Неудивительно, что повторное использование модели классификатора с одним объектом может очень помочь решить проблему с несколькими объектами. Это подход, который мы представляем здесь. В частности, мы видим, как архитектура VGG «1 фото =› 1 класс »может быть развернута обратно к пиксельной сегментации. Это модель FCN-Xs.

Основная проблема при превращении VGG в пиксельную сегментацию заключается в том, что локализация информации теряется после каждого блока свертки + объединения. На диаграмме модели это представлено нисходящей тенденцией: каждый блок объединения «P» уменьшает разрешение на 2. В частности, функции объединения группируют ячейки матриц по 2x2 тайла и заменяют их одной ячейкой, содержащей максимальное значение из 4 исходных. .

Модель FCN-Xs U блокирует повышающую дискретизацию до более высокого разрешения с использованием псевдонима DeConvolution Convolution Transpose псевдонима Fractional Convolution. Вы могли ожидать, что операция un-pooling будет играть роль, противоположную операции pooling. Однако un-pooling не требует параметров, и с помощью Deep Learning мы надеемся обучить очень выразительные функции из больших наборов данных. Авторы модели FCN-Xs (см. Статью) сделали выбор в пользу слоев DeConvolution, поскольку она имеет обучаемое ядро.

Примечание. Последний блок повышающей дискретизации должен увеличить разрешение на 2 ^ 3 = 8, поэтому эталонная модель FCN-8s

Реализация с Keras

Исходный код и тестовая записная книжка доступны здесь на GitHub.

Чтобы обсудить реализацию, я использую более простую версию модели, FCN-16s.

Обратите внимание, что модель является последовательной до конца первого блока U p-выборки. Эта последовательность операций называется FCN-32 в следующих фрагментах кода. Реализация FCN-32 в основном такая же, как и модель VGG16, обсуждаемая здесь.

На схеме новинка заключается в:

  • Красная стрелка из узла CB4 ›P: она превращает стек фильтров свертки« N »в 21 категориальный фильтр (« score_pool4 »в коде).
  • Блок СУММ реализован с функцией «слияния».
  • 2 ^ 4 = 16 дек-свертка с повышающей дискретизацией («upsample_new» в коде).

Вес модели

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

  • Классы визуальных объектов PASCAL: VOC
  • Общий объект Microsoft в контексте: COCO

К счастью, нам не нужно тренировать FCN-8, так как лучшие в своем классе тренированные веса доступны здесь на сайте MatConvNet. Чтобы преобразовать файл из MatConvNet в Keras, нужно потрудиться, как описано в этом прецедентном посте.

Интересно, что сайт MatConvNet предоставляет 2 различных набора обученных весов для архитектуры FCN-8s:

  • Один исходит от команды, создавшей оригинальную модель. Эта версия была обучена исключительно на наборе данных PASCAL VOC 2011.
  • Другой - от доработанной модели, обученной с помощью этапа постобработки. Эта версия была обучена с использованием наборов данных PASCAL VOC 2011 и Microsoft COCO.

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

Тесты / Результаты

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

  • фон: правильный
  • человек: правильно
  • велосипед: правильно
  • мотоцикл: неправильно, заднее колесо велосипеда справа

Самая грубая конфигурация

  • FCN-16 обучены работе с ЛОС.
  • Применяется к изображению 512x512.

Промежуточная конфигурация

  • FCN-8 обучены работе с ЛОС.
  • Применяется к изображению размером 512 x 512 пикселей.

Наблюдение: при использовании одного и того же метода обучения для этого тестового изображения конфигурации FCN-16 и FCN-8 работают примерно одинаково.

Лучшая конфигурация

  • FCN-8 обучены работе с VOC + COCO с использованием RCF.
  • Применяется к изображению 512x512.

Наблюдение: улучшение метода обучения FCN-8 значительно повысило его точность для этого тестового изображения.

Влияние размера входного изображения

  • FCN-8 обучены VOC + COCO с использованием RCF.
  • Применяется к изображениям шириной 256, 384 и 512.

Ссылки и исходный код

1 последнее слово

Если вам понравилось читать эту статью, вы можете улучшить ее видимость с помощью маленькой зеленой кнопки в виде сердечка ниже. Спасибо!