我正在研究深度学习(监督学习)以从单目图像估计深度图像。并且数据集目前使用的是 KITTI 数据。RGB 图像(输入图像)使用 KITTI 原始数据,来自以下链接的数据用于 ground-truth。
在通过设计一个简单的encoder-decoder网络来学习模型的过程中,结果并不是那么好,所以正在做各种尝试。
在寻找各种方法时,我发现groundtruth只能通过mask来学习有效区域,因为有很多无效区域,即无法使用的值,如下图所示。
所以,我通过掩蔽学习,但我很好奇为什么这个结果不断出现。
这是我的代码训练部分。我该如何解决这个问题。
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)