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

В первой части статьи основное внимание будет уделено следующему:

  • Описание поставленной задачи.
  • Как глубокое обучение оказалось хорошим выбором для этой задачи.
  • Краткое введение в глубокую нейронную сеть.
  • Обзор выбранной нами архитектуры модели очистки фона.

Вступление

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

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

Глубокое обучение на помощь.

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

Поскольку не существует единого способа определить цвет одежды, которую будет носить человек, этот подход также не помог в области выделения одежды этого человека. Из-за неудач, возникших при использовании принципа пороговой обработки, мы обратились к глубокому обучению.

Глубокое обучение нашло множество применений в различных аспектах компьютерного зрения и обработки изображений, некоторые из которых включают: Классификация изображений, восстановление цвета изображения, восстановление пикселей, оценка позы, описания фотографий, обнаружение объектов и сегментация объектов в изображениях .

Мы воспользовались концепцией сегментации объектов для дальнейшей реализации модели искусственного интеллекта с удалением фона, которая помогает отличать передний план человека от фона и, в конечном итоге, накладывает на него белый фон.

Простое и интуитивно понятное понимание глубокого обучения

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

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

Ниже представлена ​​простая функция машинного обучения;

Обычно X и Y - это обучающие данные и метка прогноза соответственно, а a и b - обучаемые ценности. После некоторого обучения с разными значениями обучающих данных, представленными как X и Y, a и b достигают оптимальные значения, такие, что для любого нового X, который принадлежит распределению обучающих данных, функция делает прогноз Y, который считается актуальным для этого X value.
Зачастую такой подход к обучению функции дает невероятные результаты, и его применение используется в таких сервисах, как службы рекомендаций, прогнозирование фондового рынка и т. д.

Эта основа - это то, что далее расширяется до того, что мы называем глубоким обучением.

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

Обзор компонентов глубокого обучения, лежащих в основе модели очистки фона

Было проведено много исследований по разработке различных архитектур для многих приложений нейронной сети. Что касается удаления фона, мы сосредоточились на построении архитектуры для сегментации объектов. Сегментация объектов включает в себя идею извлечения и определения местоположения объектов на цифровом изображении с целью упрощения представления изображения до чего-то более значимого путем прогнозирования класса каждого пикселя изображения.

По сути, существует две группы этого подхода: Сегментация экземпляра и Семантическая сегментация. Наше приложение для удаления фона использует семантическую сегментацию для прогнозирования пикселей изображений на фоне или переднего плана / изображений человека. Существует ряд примеров архитектур для семантической сегментации, они включают - U-Net, SegNet, полностью подключенную сеть с CRF и т. Д.

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

  1. Глубокая сверточная нейронная сеть
    Интуитивно понятно, Стандартная глубокая сверточная нейронная сеть представляет собой несколько уровней функции свертки, которая использует фильтры (N x N-мерный массив) для запуска через пиксели изображения, которое часто представляется в виде многомерного массива, поскольку они должны генерировать результаты, которые представляют собой пользовательские функции, характеризующие такие изображения. Путем наложения нескольких функций свертки в иерархическом формате он показал создание сложных функций, которые могут адекватно классифицировать пиксель как фон или передний план.
  2. Atrous Convolution
    Atrous convolution - это разновидность S стандартной сверточной нейронной сети, также известной как Dilated Convolutions. Atrous Convolution представляет скорость расширения, при которой ядро ​​намеренно разносится при взаимодействии с массивами изображений, так что ядро ​​захватывает больше полей зрения при генерации сложных функций, которые представляют изображение.
  3. Объединение пространственных пирамид Atrous
    Этот слой в основном расширяет Atrous Convolution, применяя серию многослойных Atrous Convolutions с разной степенью расширения на карте объектов и объединяя результат. Его основная цель - запечатлеть на изображении одни и те же объекты разного масштаба.
  4. Нейронная сеть декодера
    Последний уровень, который был добавлен в гораздо более позднюю версию нашей архитектуры, - это уровень декодирования, который часто является уровнем повышающей дискретизации. Слой повышающей дискретизации - это слой, который преобразует изображение с низким разрешением в изображение с высоким разрешением, при этом пытаясь сохранить как можно больше информации из низкого разрешения. Он используется для преобразования результата Atrous Spatial Pyramid Pooling в размер входных данных, а также для попытки уточнить края переднего плана - конкретный используемый подход с повышающей дискретизацией - это билинейная повышающая дискретизация.

Важно также упомянуть, что для обучения выбранной нами архитектуры можно использовать несколько базовых моделей. Рекомендуемые базовые модели включают Xception, ResNet-101 и модель Mobilenet для мобильных устройств. В Mobilenet были внесены архитектурные манипуляции, которые сделали его точность почти сопоставимой с другими моделями, несмотря на то, что у нее меньше обучаемых параметров, основой для которых является мобильная модель.

В заключение этого раздела статьи важно рассмотреть конвейер, задействованный в любом проекте машинного обучения, который также распространяется на обучение глубокой нейронной сети. Типичный конвейер машинного обучения включает следующее:

Получение набора данных (как самого набора данных - X, так и соответствующих меток - Y), на котором ваша сеть или модель будет учиться; предварительная обработка данных; построение сети или модели; запускать обучение на этих данных; оценка модели; развертывание модели; и отслеживание модели

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

Вы гуру машинного обучения и хотите поделиться своими идеями? или дилетант, желающий узнать больше? оставьте свои комментарии ниже, и я буду более чем счастлив ответить. Спасибо.