Оценка глубины монокулярной глубины включает в себя прогнозирование глубины сцены из одного изображения RGB-фундаментальной задачи в компьютерном зрении с широкими приложениями, включая дополненную реальность, робототехнику и понимание трехмерной сцены. В этом уроке мы внедряем MIDA Intel (оценка глубины монокулярной глубины с помощью многомасштабного визуального трансформатора), современной модели, предназначенной для высококачественного прогнозирования глубины с одного изображения. Используя Google Colab в качестве платформы Compute, наряду с Pytorch, OpenCV и Matplotlib, этот урок позволяет вам легко загружать ваше изображение и легко визуализировать соответствующие карты глубины.
!pip install -q timm opencv-python matplotlib
Во-первых, мы устанавливаем необходимые библиотеки Python-TIMM для поддержки модели, OpenCV-Python для обработки изображений и Matplotlib для визуализации карт глубины.
!git clone https://github.com/isl-org/MiDaS.git
%cd MiDaS
Затем мы клонируем официальный репозиторий Intel Midas из GitHub и перейдем к его каталогу, чтобы получить доступ к модельным утилитам и утилитам преобразования.
import torch
import cv2
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
from torchvision.transforms import Compose
from google.colab import files
from midas.dpt_depth import DPTDepthModel
from midas.transforms import Resize, NormalizeImage, PrepareForNet
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
Мы импортируем все необходимые библиотеки и компоненты MIDAS, необходимые для загрузки модели, предварительной обработки изображений, обработки загрузки и визуализации прогнозов глубины. Затем мы устанавливаем вычислительное устройство в графический процессор (CUDA), если таковые имеются; В противном случае он по умолчанию в процессоре, обеспечивая совместимость системы.
model_path = torch.hub.load("intel-isl/MiDaS", "DPT_Large", pretrained=True, force_reload=True)
model = model_path.to(device)
model.eval()
Здесь мы загружаем предварительную модель MIDAS DPT_LARGE из TORCH.HUB Intel.HUB, перемещает ее в выбранное устройство (ЦП или графический процессор) и устанавливает ее в режим оценки для вывода.
transform = Compose((
Resize(384, 384, resize_target=None, keep_aspect_ratio=True, ensure_multiple_of=32, resize_method="upper_bound"),
NormalizeImage(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
PrepareForNet()
))
Мы определяем конвейер предварительной обработки изображения MIDAS, который изменяет размер входного изображения, нормализует значения пикселя и форматирует его соответствующим образом для вывода модели.
uploaded = files.upload()
for filename in uploaded:
img = cv2.imread(filename)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
break
Мы позволяем пользователю загружать изображение в Colab, читать его с помощью OpenCV и преобразовать его из формата BGR в RGB для точного представления цвета.
img_input = transform({"image": img})("image")
input_tensor = torch.from_numpy(img_input).unsqueeze(0).to(device)
with torch.no_grad():
prediction = model(input_tensor)
prediction = torch.nn.functional.interpolate(
prediction.unsqueeze(1),
size=img.shape(:2),
mode="bicubic",
align_corners=False,
).squeeze()
depth_map = prediction.cpu().numpy()
Теперь мы применяем преобразование предварительной обработки к загруженному изображению, преобразуем его в тензор, выполняем прогноз глубины, используя модель MIDAS, изменяйте размер вывода, чтобы соответствовать исходным размерам изображения и извлеките конечную карту глубины в качестве массива Numpy.
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(img)
plt.title("Original Image")
plt.axis("off")
plt.subplot(1, 2, 2)
plt.imshow(depth_map, cmap='inferno')
plt.title("Depth Map")
plt.axis("off")
plt.tight_layout()
plt.show()
Наконец, мы создаем визуализацию исходного изображения и соответствующую карту глубины, используя Matplotlib. Карта глубины отображается с использованием Colormap ‘Inferno’ для лучшего контраста.
В заключение, завершив этот учебник, мы успешно развернули модель Intel Midas в Google Colab, чтобы выполнить оценку глубины монокулярной глубины, используя только изображение RGB. Используя Pytorch для вывода модели, OpenCV для обработки изображений и Matplotlib для визуализации, мы создали надежный трубопровод для создания высококачественных карт глубины с минимальной установкой. Эта реализация является прочной основой для дальнейшего изучения, включая оценку глубины видео, приложения в реальном времени и интеграцию систем AR/VR.
Вот Колаб ноутбукПолем Кроме того, не забудьте следовать за нами Twitter и присоединиться к нашему Телеграмма канал и LinkedIn GrукПолем Не забудьте присоединиться к нашему 85K+ ML SubredditПолем
ASIF Razzaq является генеральным директором Marktechpost Media Inc. как дальновидного предпринимателя и инженера, ASIF стремится использовать потенциал искусственного интеллекта для социального блага. Его последнее усилие-запуск медиа-платформы искусственного интеллекта, Marktechpost, которая выделяется благодаря глубокому освещению машинного обучения и новостей о глубоком обучении, которое является технически обоснованным и легко понятным для широкой аудитории. Платформа может похвастаться более чем 2 миллионами ежемесячных просмотров, иллюстрируя свою популярность среди зрителей.