初衷是认为现在有比较多的网络实现了对深度的预测,但是呢没有文章来说明网络预测深度成功到底是因为什么,是因为图像上的物体尺寸还是纹理色彩等原因,然后这篇文章就是给出几个特征点,然后验证到底是哪个特征决定了深度预测成功。
文章里面给了下面几种特征,由于翻译麻烦,这里截图引用的是该篇博客:
论文阅读:How Do Neural Networks See Depth in Single Images?-CSDN博客
然后呢,文章认为基于KITTI这个室外数据集,在图像中物体的位置和物体的尺寸(也就是上面截图中写的目标的面积)对网络的预测效果影响较大
然后基于图像中物体的位置和物体的尺寸,怎么来计算深度呢,大家都知道深度就是物体距离摄像机的距离大小,看下面这张图
图1
Z是物体距离相机的水平距离大小,也就是深度大小,要得到的值就是这个,
Y是物体的垂直距离大小,也就是距离地面的距离,
H是物体的尺寸大小,
y是图像上的垂直坐标大小,
f是相机的焦距,
基于图像中物体的尺寸大小计算公式如下:
(公式1)
(公式2)
公式1是论文里的公式,用于计算深度Z的,是利用图1里面的相似三角形,也就是公式2变化而来的,这个公式需要知道现实生活中物体的尺寸大小也就是高H,以及在图像中的映射尺寸大小h,一个网络想要通过学习推测出现实中物体的大小应当还是不好办的我觉得
然后基于图像中物体的尺寸怎么来得到深度呢,公式如下:
(公式3)
这里反推一下原理的比对关系,我认为是下面这样的
(公式4)
Y是相机距离地面的距离,要是利用图1的相似三角形的话,应该直接是Y/y才对,但是多了一个yh,这个yh是水平线的高度,我认为的是这个比值关系比的是相机到地平面的距离比上图像中物体到图像中地面的距离,所以需要用物体的的坐标减去地平面的坐标,这样得到的就是物体到地面的高度了,如果令yh为0的话,那就符合图1的相似三角形了,这就是假设地面位置在水平轴上
然后做了实验后表面,网络注意图像中物体的垂直距离高于物体的尺寸大小,也就是图像中物体距离地面的距离对网络的精度影响更大,这一点对于提升深度估计精度有什么用呢,还没想到
然后最后有一点我觉得有点意思,文章做了一个实验,在原始数据集图像上插入以前数据集没有的物体,然后网络就识别不到了,为了得到网络到底依据什么来识别物体是否存在的,他们把图像中的车按照部件一件一件的减少,然后再识别,发现轮廓在物体就能识别到,然后最后最主要的来了,车的投影底座在,且比较厚的时候,网络识别效果也比较好,看下面这张图的结果就能看出来
图2
横轴是厚度,越厚距离误差越小,也就是白色部分
通过这篇文章我觉得有点可能的思路是,首先需要知道图像中物体离地面远的精度高还是近的精度高,然后我们可以对原始数据集进行剪裁,映射到现实生活中,比如自动驾驶的话,是否可以把传感器设计的高一点或者矮一点来提高精度,然后可不可以先用一个分类网络,或者语义分割网络,识别主要的物体轮廓,然后加粗轮廓或者底座的厚度,从而影响网络的识别精度