最近,我正在研究使用深度学习从单眼图像获取深度的研究问题。我使用的数据集是NYUv2 RGBD数据集。我使用VGGNet-16网络并根据VGGnet的要求修改了我的输入。我使用23000个图像作为我的初始数据集,得到的RMSE误差为0.13。然而,该领域的大多数研究论文显示RMSE在0.6-0.9范围内(尽管数据集相同,但每篇论文使用的图像子集不同)。其中一篇论文最近在CVPR上发表。所以我对获得RMSE的方法持怀疑态度。我使用keras进行深度学习,theano作为后端。以下是我在keras中的RMSE代码片段:
from keras import backend as K
def custom_rmse(y_true,y_pred):
temp = K.mean(K.square(abs(y_pred - y_true)), axis=-1)
return K.sqrt(temp)
一些研究论文提到不考虑目标深度图像中的零像素值。所以我也为RMSE编写了修改后的代码如下:
from keras import backend as K
def custom_rmse1(y_true,y_pred):
ind = np.nonzero(y_true)
y_pred = y_pred[ind[0],ind[1], ind[2]]
y_true = y_true[ind[0],ind[1], ind[2]]
temp1 = abs(y_pred - y_true)
temp2 = K.square(temp1)
temp3 = K.mean(temp2)
t1 = K.sqrt(temp3)
return t1
但在这两种情况下,结果几乎(0.11-0.20)相同。我也尝试了不同的图像子集。即使我尝试使用200个时代的122000张图像。我仍然将RMSE设为0.19。
请建议如何解决此问题?