基于可微渲染的物体姿态检测与跟踪
1. 可微渲染的必要性
在进行目标姿态检测和跟踪时,我们希望通过最小化代价函数来优化相关变量。这就需要计算从代价函数到优化变量的梯度,而这一计算的前提是从优化变量到代价函数的映射是可微的,这意味着渲染过程也必须是可微的。
2. 传统渲染算法不可微的原因
渲染是对图像形成物理过程的模拟,在很多情况下,这个物理过程本身是可微的。例如,当物体表面正常且材质属性平滑时,像素颜色是球体位置的可微函数。然而,在某些情况下,像素颜色并非位置的平滑函数,比如在遮挡边界处。
传统渲染算法中,光栅化步骤会为成像平面上的每个像素寻找最相关的网格面(或判定找不到相关网格面)。在传统光栅化中,会从相机中心向成像平面上的像素发射射线,找到与该射线相交的所有网格面,但光栅化器只会返回离相机最近的网格面,然后将其传递给着色器来确定像素颜色。这个选择要渲染的网格的步骤是不可微的,因为它在数学上被建模为阶跃函数。
3. 实现可微渲染的方法
PyTorch3D库中实现的可微渲染主要采用了Soft Rasterizer的方法。其主要思想是在光栅化步骤中,不只是返回一个相关的网格面,而是找到所有与射线距离在一定阈值内的网格面。在PyTorch3D中,这个阈值可以通过 RasterizationSettings.blur_radius 设置,还可以通过 RasterizationSettings.faces_per_pixel 控制返回的最大面数。
接下来,渲染器需要为每个网格面计算一个概率图,公式如下:
$D_j = \text{s
基于可微渲染的姿态估计
超级会员免费看
订阅专栏 解锁全文
332

被折叠的 条评论
为什么被折叠?



