Семантическая сегментация изображений с использованием трансформаторов плотного предсказания

Использование трансформаторов плотного предсказания для семантической сегментации изображений

Введение

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

Цели обучения

  • Сравнение DPT с традиционным пониманием удаленных связей.
  • Реализация семантической сегментации с использованием DPT на языке Python.
  • Исследование конструкций DPT и понимание их уникальных особенностей.

Эта статья была опубликована в рамках Data Science Blogathon.

Что такое семантическая сегментация изображения?

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

Сверточные нейронные сети (СНС)

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

Что такое плотные трансформеры для предсказания (DPT)?

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

Инструментарий архитектуры DPT

У DPT есть разные типы, каждый со своими «кодирующими» и «декодирующими» слоями. Давайте рассмотрим две популярных:

  • DPT-Swin-Transformer: Представьте себе мегатрансформер с 10 слоями кодировщика и 5 слоями декодировщика. Он отлично справляется с пониманием взаимосвязей между элементами на разных уровнях на изображении.
  • DPT-ResNet: Этот похож на умного детектива с 18 слоями кодировщика и 5 слоями декодировщика. Он отлично находит соединения между далекими объектами, сохраняя пространственную структуру изображения.

Основные особенности

Давайте ближе рассмотрим, как работают DPT, используя некоторые ключевые особенности:

  • Иерархическое извлечение признаков: Как и традиционные сверточные нейронные сети (СНС), DPT извлекает признаки из исходного изображения. Однако они следуют иерархическому подходу, где изображение разделяется на разные уровни детализации. Именно эта иерархия помогает улавливать как локальный, так и глобальный контекст, позволяя модели понимать взаимосвязи между объектами на разных масштабах.
  • Механизм самовнимания: Это основа DPT, вдохновленная первоначальной архитектурой трансформеров, позволяющая модели улавливать дальние зависимости внутри изображения и изучать сложные взаимосвязи между пикселями. Каждый пиксель учитывает информацию от всех других пикселей, что дает модели глобальное понимание изображения.

Демонстрация семантической сегментации изображения с использованием DPTs на Python

Ниже мы увидим реализацию DPTs. Во-первых, настроим среду, установив библиотеки, которые не предустановлены в Colab. Код для этого можно найти здесь или по адресу https://github.com/inuwamobarak/semantic-segmentation

Сначала установим и настроим нашу среду.

!pip install -q git+https://github.com/huggingface/transformers.git

Далее мы подготовим модель, на которой планируем обучаться.

## Определите модель# Импортируйте DPTForSemanticSegmentation из библиотеки Transformersfrom transformers import DPTForSemanticSegmentation# Создайте модель DPTForSemanticSegmentation и загрузите предварительно обученные веса# Модель "Intel/dpt-large-ade" является масштабной моделью, обученной на наборе данных ADE20Kmodel = DPTForSemanticSegmentation.from_pretrained("Intel/dpt-large-ade")

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

# Импортируйте класс Image из модуля PIL (Python Imaging Library)from PIL import Imageimport requests# URL изображения, которое нужно скачатьurl = 'https://img.freepik.com/free-photo/happy-lady-hugging-her-white-friendly-dog-while-walking-park_171337-19281.jpg?w=740&t=st=1689214254~exp=1689214854~hmac=a8de6eb251268aec16ed61da3f0ffb02a6137935a571a4a0eabfc959536b03dd'# Параметр `stream=True` гарантирует, что ответ не будет загружен немедленно, а будет храниться в памятиresponse = requests.get(url, stream=True)# Создайте объект класса Imageimage = Image.open(response.raw)# Отобразить изображениеimage

from torchvision.transforms import Compose, Resize, ToTensor, Normalize# Задайте желаемую высоту и ширину для входного изображенияnet_h = net_w = 480# Определите серию преобразований изображенияtransform = Compose([        # Изменить размер изображения        Resize((net_h, net_w)),        # Преобразовать изображение в тензор PyTorch        ToTensor(),        # Нормализовать изображение        Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),    ])

Следующим шагом будет применение некоторых преобразований к изображению.

# Преобразовать входное изображениеpixel_values = transform(image)pixel_values = pixel_values.unsqueeze(0)

Далее выполняется прямое распространение.

import torch# Отключить вычисление градиентовwith torch.no_grad():    # Выполнить прямое распространение через модель    outputs = model(pixel_values)    # Получить логиты (сырые предсказания) из вывода    logits = outputs.logits

Теперь мы выводим изображение в виде массива. Затем мы преобразуем его в изображение с семантическим предсказанием.

import torch# Интерполировать логиты до исходного размера изображенияprediction = torch.nn.functional.interpolate(    logits,    size=image.size[::-1],  # Обратить размер исходного изображения (ширина, высота)    mode="bicubic",    align_corners=False)# Преобразовать логиты в классовые предсказанияprediction = torch.argmax(prediction, dim=1) + 1# Сжать тензор предсказания для удаления измеренийprediction = prediction.squeeze()# Переместить тензор предсказания на CPU и преобразовать в массив numpyprediction = prediction.cpu().numpy()

Теперь мы выполняем семантическое предсказание.

from PIL import Image# Преобразовать массив предсказания в изображениеpredicted_seg = Image.fromarray(prediction.squeeze().astype('uint8'))# Применить цветовую карту к изображению с предсказанной сегментациейpredicted_seg.putpalette(adepallete)# Смешать исходное изображение и изображение с предсказанной сегментациейout = Image.blend(image, predicted_seg.convert("RGB"), alpha=0.5)

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

Оценка производительности DPT

DPT был протестирован в различных исследовательских работах и статьях, и использовался на различных наборах изображений, таких как Cityscapes, PASCAL VOC и ADE20K. Они показывают себя лучше, чем традиционные модели CNN. Ссылки на этот набор данных и научную статью будут указаны ниже в разделе ссылок.

На наборе данных Cityscapes модель DPT-Swin-Transformer набрала 79,1% по метрике среднего пересечения по объединению (mIoU). На PASCAL VOC модель DPT-ResNet достигла mIoU в 82,8%, установив новый показатель. Эти результаты свидетельствуют о способности DPT понимать изображения в глубину.

Будущее DPT и что нас ожидает

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

Точная оценка глубины

Одним из самых значительных вкладов DPT является предсказание глубинной информации по изображениям. Этот прогресс имеет применения, такие как реконструкция 3D-сцены, дополненная реальность и манипулирование объектами. Это обеспечит критическое понимание пространственного расположения объектов в сцене.

Одновременная семантическая сегментация и предсказание глубины

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

Снижение затрат на сбор данных

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

Понимание сцены

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

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

Заключение

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

Основные выводы

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

Часто задаваемые вопросы

Ссылки:

Средства массовой информации, показанные в этой статье, не принадлежат Analytics Vidhya и используются по усмотрению автора.