最近开始学习3d点云方向了,正在学经典算法pointnet,pointnet++之类的。结合chatgpt和一些自己的理解,写下来希望自己以后不要忘记了。
如下所示代码是一个卷积的操作,(3,64,1)的含义是(input channel,output channel,kernal size)
self.conv1 = torch.nn.Conv1d(3, 64, 1)
输入数据:(batch size,input channel,number points)即(批量大小,输入通道数,点云数量)通道在这里其实代表坐标维度,这里一个坐标维度就代表一个通道,输入数据其实是(bs,3,num_points) 3的含义是(x,y,z)
卷积核其实有64个核,每个核的尺寸是(3,1) 一个卷积核对应一个输出通道——64的输出通道
为什么(3,64,1)中kernal size是1呢,这个1代表着我在每个通道上只关注1个数字,所以也就是xyz三个维度都关注一个数据,那不就是一个点云xyz的具体坐标吗,所以才说相当于对单独点云做了mlp之类的线性变化,就是因为kernal size是1。如果kernal size变成2,就说明在同时看两个点,这与点云无序性其实相悖,并不太好。