-
Notifications
You must be signed in to change notification settings - Fork 13
Description
Hello and thank you for your great work. I have encountered some problems and hope to communicate with you.Forgive me, I need to spend some space to explain my problem.
-
First of all, the depth rendered by your method achieves lower Abs rel than traditional depth estimation methods, but the visualization of the depth map looks worse. So my first question is, what causes this?

-
To explore this question, I did some experiments on Kitti (I don't have sufficient GPU resources, so I chose a smaller dataset). I expected to achieve better results than traditional self-supervised depth estimation method(like monodepth2), but the abs rel was just close to monodepth2, and it took more training time. At the same time, the visualization of the depth map still looks worse than monodepth2.
-
Further, I would like to know if using gt occupancy label can render a better depth map?So I used semantic gt label to render some depth maps and got the following results.

This looks strange, I found it's a problem with the visualization depth function. I need to add direct=True in visualize-depth: pred_depth_color=visualize_depth (pred_depth. copy()).And then I got a normal result.

So my second question is, does volume rendering get depth or disp? Do I need depth or disp to visualize depth maps? I think visualizing depth maps requires disp rather than depth, so your method needs to first convert depth to disp in visualization, and this is also true in monodepth2.
def visualize_depth(depth, mask=None, depth_min=None, depth_max=None, direct=False):
"""Visualize the depth map with colormap.
Rescales the values so that depth_min and depth_max map to 0 and 1,
respectively.
"""
if not direct:
depth = 1.0 / (depth + 1e-6)
invalid_mask = np.logical_or(np.isnan(depth), np.logical_not(np.isfinite(depth)))
if mask is not None:
invalid_mask += np.logical_not(mask)
if depth_min is None:
depth_min = np.percentile(depth[np.logical_not(invalid_mask)], 5) # 0.027 0.02
if depth_max is None:
depth_max = np.percentile(depth[np.logical_not(invalid_mask)], 95) # 9.99 0.169
depth[depth < depth_min] = depth_min
depth[depth > depth_max] = depth_max
depth[invalid_mask] = depth_max
depth_scaled = (depth - depth_min) / (depth_max - depth_min)
depth_scaled_uint8 = np.uint8(depth_scaled * 255)
depth_color = cv2.applyColorMap(depth_scaled_uint8, cv2.COLORMAP_MAGMA)
depth_color[invalid_mask, :] = 0
return depth_color
But what confuses me is that when I use GT occ label instead of pred occ prob, the visualization is incorrect.
Have I misunderstood anything?
Looking forward to your reply!