Сегментация изображений - это мощный метод определения местоположения объектов или границ в изображениях на уровне пикселей. В этом блоге мы кратко рассмотрим, как работают U-Nets, и узнаем, как они строятся на стандартных CNN.
Обработка изображений на основе глубокого обучения (DL) сейчас используется во многих отраслях. В частности, такие методы, как классификация изображений (т. Е. Определение того, что представляет собой изображение) и обнаружение объекта (т. Е. Идентификация объекта и его местоположения на изображении), применяются в различных сценариях использования, начиная с приложений компьютерного зрения (например, для автономного вождения). для идентификации людей в видео безопасности.
Еще один мощный метод - семантическая сегментация изображения, также называемая классификацией на уровне пикселей или плотным прогнозированием, который позволяет нам классифицировать части изображения, которые принадлежат к тому же классу объектов на уровне пикселей. Например, на изображении выше показано, как можно использовать сегментацию для выделения пикселей, принадлежащих мотоциклу и его водителю, путем анализа полноцветного изображения. И сегментация экземпляров идет дальше, идентифицируя все экземпляры объектов, принадлежащих к одному классу (например, мотоцикл 1, мотоцикл 2).
Семантическая сегментация изображения может быть достигнута с помощью U-Net, особого типа сверточной нейронной сети (CNN). U-Net добавляет расширяющийся путь для генерации классификации пикселей, принадлежащих компоненту (-ам) или объекту (-ам), найденному в исходном изображении. Другими словами, он расширяет вывод до определенного размера изображения и формирует последнюю часть U в сети. U-Net позволяет нам выйти за рамки обычной классификации изображений и обнаружения объектов, чтобы классифицировать пиксели этих объектов по их точной форме.
Давайте подробнее рассмотрим, как это работает.
Обзор CNN
Чтобы понять U-Nets, давайте кратко рассмотрим, как работает их основа, стандартный CNN.
Мы подчеркиваем стандарт, потому что существует ряд вариаций, включая LeNet, AlexNet и другие CNN, которые все работают по одному и тому же общему принципу использования изображения в качестве входных данных и сворачивания он использует фильтры (также известные как ядра) для извлечения одной или нескольких карт функций, процесс, известный как извлечение функций . Затем эти карты функций подвергаются понижающей дискретизации посредством объединения и передаются на следующий уровень для дальнейшей свертки и объединения. Карта функций, создаваемая на каждом последующем этапе свертки / объединения, извлекает функции более высокого уровня. Конечная карта характеристик с пониженной дискретизацией (объединенная) затем сглаживается и используется в качестве входных данных для полносвязной нейронной сети для классификации, как показано на рисунке 1:
В зависимости от того, как вы спроектируете сеть, вы можете изменить способ работы этапа извлечения признаков и добавить столько слоев, сколько требуется для вашего приложения. Например, R-CNN, показанный на рисунке 2 ниже, выполняет обнаружение объекта путем классификации областей изображения:
Рассмотрим в качестве примера изображение гонщика на мотоцикле. Первая карта характеристик R-CNN, анализирующая это изображение, может состоять из групп пикселей, представляющих основные формы, обнаруженные на изображении (например, кривые, прямые сегменты и т. Д.). Следующий слой может извлекать группы фигур, которые составляют определенные особенности этих объектов (например, шлем, колеса и т. Д.) И т. Д.
Окончательный результат включает классификацию, показывающую, какие объекты были обнаружены в областях изображения, как вы можете видеть на рисунке 3:
CNN стали популярными для задач обработки изображений, потому что они могут работать с пространственными и временными отклонениями, сокращая (понижая выборку) промежуточных изображений в модели с помощью объединения для увеличения скорости обработки. На самом деле, CNN настолько полезны для обработки изображений, что вы увидите, что о них много раз упоминали в нашем блоге Пять основных способов использования машинного обучения для обработки изображений и компьютерного зрения.
Если вы хотите еще больше укрепить свое понимание того, как работают CNN, ознакомьтесь с этим очень крутым интерактивным инструментом 3D-визуализации CNN:
Для получения дополнительной информации о построении карт функций обязательно ознакомьтесь с нашим описанием сверточного слоя в нашем блоге: Четыре распространенных типа слоев нейронной сети (и когда их использовать).
Расширение до U-Nets
Архитектура CNN, описанная до сих пор, состоит из контрактного пути (также известного как кодировщик), который итеративно строит карты характеристик с использованием данных с непрерывной понижающей дискретизацией.
U-Net дополняет стандартную архитектуру CNN, добавляя соответствующий расширяющий путь (также известный как декодер) с целью создания семантического предсказания с полным разрешением. Другими словами, для создания изображений сегментации, которые выделяют определенные особенности и объекты, обнаруженные на изображении. Эти выделения выполняются на уровне пикселей с использованием определенных значений цвета, а выходные изображения обычно имеют, по крайней мере, тот же размер (размеры), что и исходное изображение.
Возьмите изображение нашего мотоцикла сверху. Используя U-Net для сегментации изображений, мы могли бы классифицировать объекты на гораздо более детальном уровне, чем при обнаружении объектов, которое ограничивается ограничивающими рамками. Как показано на рисунке 5 ниже, выходные данные (справа) классифицируют объекты исходного изображения (слева) на попиксельной основе:
Расширяющий путь U-Net работает за счет увеличения выборки различных карт функций из контрактного пути с помощью транспонирования сверток, процесса, иногда называемого деконволюцией. Расширяющий путь также имеет некоторые связи с сокращающимся путем, известные как пропустить соединения. Используя пропускаемые соединения и обычные соединения, расширяющийся путь объединяет информацию об объектах (увеличивается во время сужающегося пути) вместе с пространственной информацией (уменьшается во время сужающегося пути).
Практики DL часто изображают сужающиеся и расширяющиеся пути и их пропускные соединения в форме буквы U, как показано на рисунке 6, отсюда и название U-Net:
При проектировании U-Net для трансферного обучения выбор основы модели становится важным. По сути, это означает выбор базовой CNN (например, VGG, ResNet и т. Д.), На которой будет основана U-Net. Выбор определяет конфигурацию слоев как в контрактирующем, так и в соответствующем расширяющем тракте.
PerceptiLabs упрощает работу с U-Nets
PerceptiLabs позволяет легко настроить U-Net и экспериментировать с различными параметрами и магистралями. Просто выберите и вставьте компонент U-Net в свою модель, подключите его к входу и цели, а затем настройте его параметры. Компонент U-Net абстрагирует все свои сужающие и расширяющие уровни, поэтому вы можете сосредоточиться на том, как он преобразует свои входные данные, как показано на рисунке 7 ниже:
Вы можете легко опробовать различные магистральные сети, выбрав их в параметре Магистраль компонента. Можно также легко поэкспериментировать с другими настройками, такими как Активация, Активация вывода, Объединение и Отмена пула. аналогичным образом. Оттуда остается просто просмотреть результаты обучения и проверки в Статистическом представлении Perceptilabs, пока вы экспериментируете с различными значениями, как показано на рисунке 8:
В статистическом представлении в реальном времени отображаются метрики, включая прогнозируемую сегментацию, наложенную на достоверные данные (вверху слева) и Пересечение над объединением (IoU) (в центре справа) для проверки и обучения по эпохам.
IoU - отличный метод оценки точности модели. Он выходит за рамки точности пикселей (которая может быть несбалансированной из-за того, что у них больше фона, чем пикселей на уровне объекта), путем сравнения того, насколько объекты на выходе перекрывают те, что в действительности. Вы также можете просмотреть это для тестовых данных модели в Test View PerceptiLabs, как показано на рисунке 9:
Кроме того, вы можете создать U-Nets с нуля в PerceptiLabs. На рисунке 10 показано, как сужающийся путь может быть создан с использованием серии компонентов свертки, в то время как расширяющийся путь может быть построен с помощью комбинации слияния и компонентов свертки:
Хотя создание этого метода требует немного больше работы, он обеспечивает дополнительную визуализацию того, как каждый слой преобразует данные.
Заключение
U-Nets - это мощный тип CNN для эффективной сегментации изображений. Первоначально они были разработаны для биомедицинской сегментации², но с тех пор стали играть роль в других сферах, включая военную промышленность, робототехнику, Интернет вещей, городское планирование и другие области, где требуется подробный анализ изображений.
Компонент U-Net от PerceptiLabs инкапсулирует все, что вам нужно для создания и обучения U-Nets, а также дает вам возможность создавать их с нуля. Наряду с Model Hub, где вы можете систематизировать свои модели, а также представлениями Статистика и Обучение, где вы можете просматривать результаты обучения в режиме реального времени, экспериментировать с U-Nets еще никогда не было проще и быстрее.
Готовы попробовать U-Nets? Запустите PerceptiLabs и попробуйте уже сегодня!
Для получения дополнительной информации мы рекомендуем ознакомиться со следующими замечательными статьями:
- UNet - Построчное объяснение
- Обзор семантической сегментации изображений
- Понимание семантической сегментации с помощью UNET
¹ Ronneberge et al.