Оценка глубины изображения с использованием преобразователей предсказания глубины (DPT)

Оценка глубины изображения с использованием преобразователей предсказания глубины (DPT)

Исходный узел: 2183273

Введение

Оценка глубины изображения заключается в определении того, насколько далеко находятся объекты на изображении. Это важная проблема компьютерного зрения, потому что она помогает в таких вещах, как создание 3D-моделей, дополненная реальность и беспилотные автомобили. В прошлом люди использовали такие методы, как стереозрение или специальные датчики для оценки глубины. Но теперь появился новый метод под названием «Преобразователи предсказания глубины» (DPT), который использует глубокое обучение.

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

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

  • Концепция преобразователей плотного предсказания (DPT) и их роль в оценке глубины изображения.
  • Изучите архитектуру DPT, включая комбинацию преобразователей машинного зрения и платформ кодировщик-декодер.
  • Реализуйте задачу DPT с помощью Обнимая лицо библиотека трансформаторов.
  • Признать потенциальные применения DPT в различных областях.

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

Содержание

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

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

Архитектура преобразователей предсказания глубины

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

Архитектура преобразователей предсказания глубины | Трансформаторы предсказания глубины

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

Реализация DPT с использованием Hugging Face Transformer

Мы увидим практическую реализацию DPT с использованием конвейера Huggin Face. Найдите весь код здесь.

Шаг 1: Установка зависимостей

Начнем с установки трансформеры package из репозитория GitHub с помощью следующей команды:

!pip install -q git+https://github.com/huggingface/transformers.git # Install the transformers package from the Hugging Face GitHub repository

Выполните команду !pip install в Jupyter Notebook или ячейке JupyterLab, чтобы установить пакеты непосредственно в среде ноутбука.

Шаг 2: Определение модели оценки глубины

Предоставленный код определяет модель оценки глубины с использованием архитектуры DPT из библиотеки Hugging Face Transformers.

from transformers import DPTFeatureExtractor, DPTForDepthEstimation # Create a DPT feature extractor
feature_extractor = DPTFeatureExtractor.from_pretrained("Intel/dpt-large") # Create a DPT depth estimation model
model = DPTForDepthEstimation.from_pretrained("Intel/dpt-large")

Код импортирует необходимые классы из библиотеки Transformers, т.е. DPTFeatureExtractor и ДПТфорГлубина Эстиматион. Затем мы создали экземпляр экстрактора функций DPT, вызвав DPTFeatureExtractor.from_pretrained() и загрузка предварительно обученных весов из «Intel/dpt-большоймодель. Аналогичным образом они создают экземпляр модели оценки глубины DPT с помощью DPTForDepthEstimation.from_pretrained() и загружают предварительно обученные веса из той же модели «Intel/dpt-large».

Шаг 3: Загрузка изображения

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

from PIL import Image
import requests # Specify the URL of the image to download
url = 'https://img.freepik.com/free-photo/full-length-shot-pretty-healthy-young-lady-walking-morning-park-with-dog_171337-18880.jpg?w=360&t=st=1689213531~exp=1689214131~hmac=67dea8e3a9c9f847575bb27e690c36c3fec45b056e90a04b68a00d5b4ba8990e' # Download and open the image using PIL
image = Image.open(requests.get(url, stream=True).raw)
Загрузка изображения | Трансформаторы предсказания глубины

Мы импортировали необходимые модули (изображение из PIL и запросы) для обработки изображений и HTTP-запросов соответственно. Он указывает URL-адрес изображения для загрузки, а затем использует запросы.получить() для получения данных изображения. Изображение.открыть() используется для открытия загруженных данных изображения как объекта изображения PIL.

Шаг 4: Проход вперед

import torch # Use torch.no_grad() to disable gradient computation
with torch.no_grad(): # Pass the pixel values through the model outputs = model(pixel_values) # Access the predicted depth values from the outputs predicted_depth = outputs.predicted_depth 

Приведенный выше код выполняет прямой проход модели для получения прогнозируемых значений глубины для входного изображения. Мы используем факел.no_grad() в качестве менеджера контекста, чтобы отключить вычисление градиента, что помогает уменьшить использование памяти во время логического вывода. Они передают тензор значений пикселей, pixel_values, через модель, используя model(pixel_values), и сохраняют полученные выходные данные в переменной outputs. Затем они получают доступ к предсказанным значениям глубины из outputs.predicted_depth и присваивают их переменной предсказания_глубины.

Шаг 5: Интерполяция и визуализация

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

import numpy as np # Interpolate the predicted depth values to the original size
prediction = torch.nn.functional.interpolate( predicted_depth.unsqueeze(1), size=image.size[::-1], mode="bicubic", align_corners=False,
).squeeze() # Convert the interpolated depth values to a numpy array
output = prediction.cpu().numpy() # Scale and format the depth values for visualization
formatted = (output * 255 / np.max(output)).astype('uint8') # Create an image from the formatted depth values
depth = Image.fromarray(formatted)
depth
Интерполяция и визуализация

МЫ ИСПОЛЬЗУЕМ torch.nn.functional.interpolate() для интерполяции предсказанных значений глубины к исходному размеру входного изображения. Затем интерполированные значения глубины преобразуются в NumPy массив с использованием .процессор().numpy(). Затем значения глубины масштабируются и форматируются в диапазоне [0, 255] для визуализации. Наконец, изображение создается из отформатированных значений глубины, используя Изображение.из массива().

После выполнения этого кода переменная `depth` будет содержать изображение глубины, которое мы отображаем как глубину изображения.

Преимущества и преимущества

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

  • Лучшее внимание к деталям: DPT используют специальную часть, называемую кодировщиком, для захвата очень мелких деталей и повышения точности прогнозов.
  • Понимание общей картины: DPT хорошо понимают, как связаны разные части изображения. Это помогает им понять всю сцену и точно оценить глубину.
  • Различные области применения: Используйте DPT во множестве различных задач, таких как создание 3D-моделей, добавление вещей в реальный мир в дополненной реальности и помощь роботам в понимании их окружения.
  • Легкость интеграции: Комбинируйте DPT с другими инструментами компьютерного зрения, такими как выделение объектов или разделение изображения на разные части. Это делает оценку глубины еще лучше и точнее.

Потенциальные применения

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

  • Автономная навигация: Оценка глубины важна для беспилотных автомобилей, чтобы понимать свое окружение и безопасно ориентироваться на дороге.
  • Дополненная реальность: Оценка глубины помогает накладывать виртуальные объекты на реальный мир в приложениях дополненной реальности, благодаря чему они выглядят реалистично и правильно взаимодействуют с окружающей средой.
  • 3D-реконструкция: Оценка глубины необходима для создания 3D-моделей объектов или сцен из обычных 2D-изображений, что позволяет нам визуализировать их в трехмерном пространстве.
  • Робототехника: Оценка глубины важна для роботов при выполнении таких задач, как подбор объектов, обход препятствий и понимание расположения окружающей среды.

Заключение

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

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

  • Оценка глубины изображения с использованием преобразователей предсказания глубины (DPT) — это мощный и точный подход к предсказанию глубины по 2D-изображениям.
  • DPT используют архитектуру преобразователя и структуру кодера-декодера для захвата мелких деталей, моделирования долгосрочных зависимостей и создания точных прогнозов глубины.
  • DPT могут применяться в автономной навигации, дополненной реальности, трехмерной реконструкции и робототехнике, открывая новые возможности в различных областях.
  • По мере развития компьютерного зрения преобразователи предсказания глубины будут продолжать играть важную роль в достижении точной и надежной оценки глубины, способствуя развитию многочисленных приложений.

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

Q1. Что такое преобразователи прогноза глубины (DPT)?

A. Преобразователи предсказания глубины (DPT) используют передовые методы для оценки расстояния или глубины объектов на изображениях. Разработайте их так, чтобы они очень точно предсказывали глубину, анализируя детали и отношения между различными частями изображения.

Q2. Чем DPT отличается от традиционных методов?

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

Q3. Для чего можно использовать DPT?

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

Q4. Могут ли DPT работать вместе с другими технологиями компьютерного зрения?

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

Q5. Как DPT способствуют развитию компьютерного зрения?

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

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

Отметка времени:

Больше от Аналитика Видхья