
122、深度估计基础:单目深度估计的神经网络方法上周调试机械臂抓取时遇到一个诡异问题——视觉模块输出的深度图在物体边缘处出现一圈“光晕”,导致抓取位姿估计偏差了将近3厘米。排查了半天,发现不是相机标定问题,而是我用的单目深度估计模型在边缘处做了过度平滑处理。这让我意识到,很多做具身智能的同学把单目深度估计当成一个“黑盒”来用,出了bug都不知道从哪下手。今天就把这块基础补上。为什么单目深度估计这么难先想一个问题:一张2D图片,怎么还原出3D深度?从数学上讲,这是个病态问题——同一个像素点,可能是近处的小物体,也可能是远处的大物体。人类能轻松判断深度,靠的是大量先验知识:物体大小、遮挡关系、透视效果、纹理梯度等等。神经网络做单目深度估计,本质上就是在学习这些先验。早期方法用CNN直接回归深度图,效果一般。后来发现把问题建模成分类问题效果更好——把连续深度值离散化成若干个区间,让网络去预测每个像素属于哪个区间。再后来,基于Transformer的方法引入了全局注意力机制,能更好地捕捉场景结构。这里要澄清一个常见误区:单目深度估计不是“从图像中测量深度”,而是“从图像中推断深度”。测量和推断有本质区别。所以单目深度估计的结果天然带有不确定性,做机器人抓取时一定要把这个不确定性考虑进去,否则就会出现我开头说的那种边缘“光晕”问题。从回归到分类:深度离散化的艺术先看最基础的回归方法。输入一张RGB图像,输出一张单通道深度图,网络结构就是一个编码器-解码器。损失函数用L1或L2损失: