define-hf-demo / vidar /arch /blocks /depth /SigmoidToInvDepth.py
Jiading Fang
add define
fc16538
# TRI-VIDAR - Copyright 2022 Toyota Research Institute. All rights reserved.
from abc import ABC
import torch.nn as nn
from vidar.utils.decorators import iterate2
from vidar.utils.depth import inv2depth
class SigmoidToInvDepth(nn.Module, ABC):
"""
Converts sigmoid to inverse depth map
Parameters
----------
min_depth : Float
Minimum depth value
max_depth
Maximum depth value
return_depth:
Whether the inverse depth map is inverted to depth when returning
"""
def __init__(self, min_depth, max_depth, return_depth=False):
super().__init__()
self.min_inv_depth = 1. / max_depth
self.max_inv_depth = 1. / min_depth
self.diff_inv_depth = (self.max_inv_depth - self.min_inv_depth)
self.return_depth = return_depth
@iterate2
def forward(self, sigmoid):
"""Convert sigmoid to inverse depth"""
inv_depth = self.min_inv_depth + self.diff_inv_depth * sigmoid
return inv_depth if not self.return_depth else inv2depth(inv_depth)