CVDL-3D Vision 1

2025-05-06

CVDL

前半节是优质考试.

Point Net ++ 也可以用到 2D 的 Classification 任务中. 和 Conv 类似,每次一个 Ball Query 也可以包含一个小矩阵.

不过显然 Conv 是更加强大的. 考虑对于这样一个小矩阵,PointNet 相当于每个位置做同一个 MLP 然后再全局 Pool,而 Conv 则可以对每个小矩阵中的位置设置不同的权值. 我们可以认为 PointNet 结构是一个 Isotropic 的 Kernel(各向同性),而 Conv 是一个 Unisotropic Kernel(各向异性).

一个让 PointNet 有一定的 Unisotropic 的方法是 KP Conv. 我们在球的不同位置放 16 个 Conv,然后每个点的 Weight 为这若干个 Conv 的线性插值. 但是这个有些过于复杂了.

Voxel 3d Convolution 虽说很符合我们对一个网络的想象,但是还是太 Expensive 了.

我们考虑点云为什么复杂度低,是因为点云只记录了表面,而不需要占据内部信息. 于是我们引入 Sparse Voxel. 只记录 Surface Voxel. 怎么做 Conv 呢?

Sparse Conv:\(A\) 卷上 \(c\) 得到 \(B\). 对于 \((i,j,k)\),只有 \(A(i,j,k)\neq 0\),才会去计算 \(B(i,j,k)=\sum A(i',j',k'),c(i-i',j-j',k-k')\). 这样 Voxel 中的元素数量不会变大,并且运算次数也合理.

这个的 Implementation 有一定技巧性,你需要数据结构来维护一个点周边的点.

并且这个也有 Discretization Error. 一个稍微会好一点的办法是将 Voxel 中的点的坐标均值也作为 Feature 放进去.

于是这个也很适合比较大尺度的一些场景,比如区分车和人,Efficiency 也很好,并且也具有 Conv 的 Equivariance.

而点云的 PointNet 有更高的 Resolution 且更简单的实现,但是 FPS 和 Ball Query 太慢.

Mesh 也是有用的. Mesh 在 3D AIGC 中就起到很大的用处,但是没讲.