Monokulārās dziļuma novērtēšanas ieviešana: Intel MiDaS modelis Google Colab ar PyTorch un OpenCV
Monokulārā dziļuma novērtēšana ar Intel MiDaS modeli
Monokulārā dziļuma novērtēšana ietver scenējas dziļuma prognozēšanu no vienas RGB attēla – tas ir būtisks datorredzes uzdevums ar plašu pielietojumu, tostarp papildinātajā realitātē, robotikā un 3D scenēju izpratnē. Šajā pamācībā mēs ieviešam Intel MiDaS (Monocular Depth Estimation via a Multi-Scale Vision Transformer) – modernu modeli, kas paredzēts augstas kvalitātes dziļuma prognozēšanai no viena attēla. Izmantojot Google Colab kā skaitļošanas platformu kopā ar PyTorch, OpenCV un Matplotlib, šī pamācība ļauj jums augšupielādēt savu attēlu un viegli vizualizēt atbilstošās dziļuma kārtas.
!pip install -q timm opencv-python matplotlib
Vispirms mēs instalējam nepieciešamās Python bibliotēkas – timm modeļa atbalstam, opencv-python attēlu apstrādei un matplotlib dziļuma kārtu vizualizācijai.
!git clone https://github.com/isl-org/MiDaS.git
%cd MiDaS
Pēc tam mēs klonējam oficiālo Intel MiDaS repozitoriju no GitHub un dodamies uz tās direktoriju, lai piekļūtu modeļa kodam un transformāciju utilītām.
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")
Mēs importējam visas nepieciešamās bibliotēkas un MiDaS komponentes, kas nepieciešamas modeļa ielādei, attēlu pirmapstrādei, augšupielādēm un dziļuma prognožu vizualizācijai. Pēc tam mēs iestatām skaitļošanas ierīci uz GPU (CUDA), ja tā ir pieejama; pretējā gadījumā tiek izmantots CPU, nodrošinot sistēmas saderību.
model_path = torch.hub.load("intel-isl/MiDaS", "DPT_Large", pretrained=True, force_reload=True)
model = model_path.to(device)
model.eval()
Šeit mēs lejupielādējam iepriekš apmācīto MiDaS DPT_Large modeli no Intel torch.hub, pārnesam to uz izvēlēto ierīci (CPU vai GPU) un iestatām uz evaluācijas režīmu secināšanai.
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()
])
Mēs definējam MiDaS attēla pirmapstrādes cauruļvadu, kas pārveido ievades attēlu, normalizē tā pikseļu vērtības un formatē to atbilstoši modeļa secināšanai.
uploaded = files.upload()
for filename in uploaded:
img = cv2.imread(filename)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
break
Mēs ļaujam lietotājam augšupielādēt attēlu Colab vidē, nolasīt to, izmantojot OpenCV, un pārveidot no BGR uz RGB formātu precīzai krāsu attēlošanai.
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()
Tagad mēs pielietojam pirmapstrādes transformāciju augšupielādētajam attēlam, pārveidojam to par tenzoru, veicam dziļuma prognozi, izmantojot MiDaS modeli, pārveidojam izvadi, lai tā atbilstu sākotnējā attēla izmēriem, un iegūstam galīgo dziļuma kārtu kā NumPy masīvu.
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(img)
plt.title("Oriģinālais attēls")
plt.axis("off")
plt.subplot(1, 2, 2)
plt.imshow(depth_map, cmap='inferno')
plt.title("Dziļuma karte")
plt.axis("off")
plt.tight_layout()
plt.show()
Visbeidzot, mēs izveidojam blakus esošu vizualizāciju sākotnējam attēlam un tā atbilstošajai dziļuma kartei, izmantojot Matplotlib. Dziļuma karte tiek attēlota, izmantojot ‘inferno’ krāsu karti, lai uzlabotu kontrastu.
Noslēgumā, pabeidzot šo pamācību, mēs esam veiksmīgi izvietojuši Intel MiDaS modeli Google Colab vidē, lai veiktu monokulāro dziļuma novērtēšanu, izmantojot tikai RGB attēlu. Izmantojot PyTorch modeļa secināšanai, OpenCV attēlu apstrādei un Matplotlib vizualizācijai, mēs esam izveidojuši stabilu cauruļvadu augstas kvalitātes dziļuma karšu ģenerēšanai ar minimālu iestatīšanu. Šī implementācija ir labs pamats turpmākai izpētei, tostarp video dziļuma novērtēšanai, reāllaika lietojumiem un AR/VR sistēmu integrācijai.
Šeit ir Colab piezīmju grāmatiņa. Neaizmirstiet arī sekot mums Twitter un pievienoties mūsu Telegram kanālam un LinkedIn grupai. Neaizmirstiet pievienoties arī mūsu 85k+ ML SubReddit.
https://www.marktechpost.com/