Первая версия от 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» в коде).
Вес модели
Обычно используемый обучающий набор данных для задач сегментации изображений:
К счастью, нам не нужно тренировать 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: Полностью сверточные модели для семантической сегментации, Джонатан Лонг, Эван Шелхамер и Тревор Даррелл, CVPR, 2015.
- Документ 2: Условные случайные поля как рекуррентные нейронные сети, Шуай Чжэн, Садип Джаясумана, Бернардино Ромера-Паредес, Вибхав Винит, Чжичжун Су, Далонг Ду, Чанг Хуанг и Филип Х.С. Торр, ICCV 2015.
- Исходный код доступен в этом проекте GitHub.
1 последнее слово
Если вам понравилось читать эту статью, вы можете улучшить ее видимость с помощью маленькой зеленой кнопки в виде сердечка ниже. Спасибо!