|
import torch |
|
|
|
from src.visualization.color_map import apply_color_map_to_image |
|
import torch.distributed as dist |
|
|
|
def inverse_normalize(tensor, mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5)): |
|
mean = torch.as_tensor(mean, dtype=tensor.dtype, device=tensor.device).view(-1, 1, 1) |
|
std = torch.as_tensor(std, dtype=tensor.dtype, device=tensor.device).view(-1, 1, 1) |
|
return tensor.mul(std).add(mean) |
|
|
|
|
|
|
|
def vis_depth_map(result, near=None, far=None): |
|
if near is None and far is None: |
|
far = result.view(-1)[:16_000_000].quantile(0.99).log() |
|
try: |
|
near = result[result > 0][:16_000_000].quantile(0.01).log() |
|
except: |
|
print("No valid depth values found.") |
|
near = torch.zeros_like(far) |
|
else: |
|
near = near.log() |
|
far = far.log() |
|
|
|
result = result.log() |
|
result = 1 - (result - near) / (far - near) |
|
return apply_color_map_to_image(result, "turbo") |
|
|
|
|
|
def confidence_map(result): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result = result / result.view(-1).max() |
|
return apply_color_map_to_image(result, "magma") |
|
|
|
|
|
def get_overlap_tag(overlap): |
|
if 0.05 <= overlap <= 0.3: |
|
overlap_tag = "small" |
|
elif overlap <= 0.55: |
|
overlap_tag = "medium" |
|
elif overlap <= 0.8: |
|
overlap_tag = "large" |
|
else: |
|
overlap_tag = "ignore" |
|
|
|
return overlap_tag |
|
|
|
|
|
def is_dist_avail_and_initialized(): |
|
if not dist.is_available(): |
|
return False |
|
if not dist.is_initialized(): |
|
return False |
|
return True |
|
|
|
|
|
def get_world_size(): |
|
if not is_dist_avail_and_initialized(): |
|
return 1 |
|
return dist.get_world_size() |
|
|
|
|
|
def get_rank(): |
|
if not is_dist_avail_and_initialized(): |
|
return 0 |
|
return dist.get_rank() |