Skip to main content

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/

Atbildēt

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti kā *