Spaces:
Runtime error
Runtime error
| # MIT License | |
| # Copyright (c) 2022 Intelligent Systems Lab Org | |
| # Permission is hereby granted, free of charge, to any person obtaining a copy | |
| # of this software and associated documentation files (the "Software"), to deal | |
| # in the Software without restriction, including without limitation the rights | |
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| # copies of the Software, and to permit persons to whom the Software is | |
| # furnished to do so, subject to the following conditions: | |
| # The above copyright notice and this permission notice shall be included in all | |
| # copies or substantial portions of the Software. | |
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| # SOFTWARE. | |
| # File author: Shariq Farooq Bhat | |
| import numpy as np | |
| from torchvision.transforms import ToTensor | |
| from PIL import Image | |
| from zoedepth.utils.misc import get_image_from_url, colorize | |
| import torch | |
| from zoedepth.models.builder import build_model | |
| from zoedepth.utils.config import get_config | |
| from pprint import pprint | |
| torch.hub.help("intel-isl/MiDaS", "DPT_BEiT_L_384", force_reload=True) | |
| DEVICE = "cuda" if torch.cuda.is_available() else "cpu" | |
| if DEVICE == "cpu": | |
| print("WARNING: Running on CPU. This will be slow. Check your CUDA installation.") | |
| print("*" * 20 + " Testing zoedepth " + "*" * 20) | |
| conf = get_config("zoedepth", "infer") | |
| print("Config:") | |
| pprint(conf) | |
| model = build_model(conf).to(DEVICE) | |
| model.eval() | |
| x = torch.rand(1, 3, 384, 512).to(DEVICE) | |
| print("-"*20 + "Testing on a random input" + "-"*20) | |
| with torch.no_grad(): | |
| out = model(x) | |
| if isinstance(out, dict): | |
| # print shapes of all outputs | |
| for k, v in out.items(): | |
| if v is not None: | |
| print(k, v.shape) | |
| else: | |
| print([o.shape for o in out if o is not None]) | |
| print("\n\n") | |
| print("-"*20 + " Testing on an indoor scene from url " + "-"*20) | |
| # Test img | |
| url = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS4W8H_Nxk_rs3Vje_zj6mglPOH7bnPhQitBH8WkqjlqQVotdtDEG37BsnGofME3_u6lDk&usqp=CAU" | |
| img = get_image_from_url(url) | |
| orig_size = img.size | |
| X = ToTensor()(img) | |
| X = X.unsqueeze(0).to(DEVICE) | |
| print("X.shape", X.shape) | |
| print("predicting") | |
| with torch.no_grad(): | |
| out = model.infer(X).cpu() | |
| # or just, | |
| # out = model.infer_pil(img) | |
| print("output.shape", out.shape) | |
| pred = Image.fromarray(colorize(out)) | |
| # Stack img and pred side by side for comparison and save | |
| pred = pred.resize(orig_size, Image.ANTIALIAS) | |
| stacked = Image.new("RGB", (orig_size[0]*2, orig_size[1])) | |
| stacked.paste(img, (0, 0)) | |
| stacked.paste(pred, (orig_size[0], 0)) | |
| stacked.save("pred.png") | |
| print("saved pred.png") | |
| model.infer_pil(img, output_type="pil").save("pred_raw.png") |