我正在研究一种从单目图像中估计深度图像的深度学习(有监督学习)。数据集当前使用的是KITTI数据。RGB图像(输入图像)使用KITTI原始数据,而来自following link的数据用于地面实况。
在通过设计一个简单的编解码器网络来学习模型的过程中,效果并不是很好,因此人们进行了各种尝试。
在搜索各种方法时,我发现groundtruth只能通过掩码来学习有效区域,因为有许多无效区域,即无法使用的值,如下图所示。

所以,我是通过掩蔽来学习的,但我很好奇为什么这个结果总是出来。


这是我训练代码的一部分。我该如何解决这个问题。
for epoch in range(num_epoch):
model.train() ### train ###
for batch_idx, samples in enumerate(tqdm(train_loader)):
x_train = samples['RGB'].to(device)
y_train = samples['groundtruth'].to(device)
pred_depth = model.forward(x_train)
valid_mask = y_train != 0 #### Here is masking
valid_gt_depth = y_train[valid_mask]
valid_pred_depth = pred_depth[valid_mask]
loss = loss_RMSE(valid_pred_depth, valid_gt_depth)发布于 2020-11-02 20:16:01
据我所知,您正在尝试从RGB图像作为输入来估计深度。这是一个不适定的问题,因为同一个输入图像可以投影到多个合理的深度值。您需要集成某些技术来从RGB图像估计准确的深度,而不是简单地在RGB图像和其相应的深度图像之间进行L1或L2损失。
我建议你阅读一些关于从单个图像估计深度的论文,例如:Depth Map Prediction from a Single Image using a Multi-Scale Deep Network,其中他们使用网络首先估计给定图像的全局结构,然后使用第二个网络来优化局部场景信息。它们不像您那样采用简单的RMSE损失,而是使用尺度不变的误差函数,其中测量点之间的关系。
https://stackoverflow.com/questions/64021922
复制相似问题