correct = pred_choice.eq(target.data).cpu().sum() print('[%d: %d/%d] %s loss: %f accuracy: %f' % (epoch, i, num_batch, blue('test'), loss.item(), correct.item()/float(opt.batchSize))) torch.save(classifier.state_dict(), '%s/cls_model_%d.pth' % (opt.outf, epoch)) to...
至于其中的原理,我的理解是,通过控制最后的loss来对变换矩阵进行调整,pointnet并不关心最后真正做了什么变换,只要有利于最后的结果都可以。pointnet采用了两次STN,第一次input transform是对空间中点云进行调整,直观上理解是旋转出一个更有利于分类或分割的角度,比如把物体转到正面;第二次feature transform是对提取出的6...
由于loss的约束,使得 T T T矩阵训练会学习到最有利于最终分类的变换,如把点云旋转到正面。论文的架构中,分别在输入数据后和第一层特征中使用了 T T T矩阵,大小为3x3和64x64。其中第二个T矩阵由于参数过多,考虑添加正则项,使其接近于正交矩阵,减少点云的信息丢失。1. T-Net网络结构将输入的点云数据作为...
再经过一个mlp(代码中运用全连接)得到k个score。分类网络最后接的loss是softmax。 网络特点 针对无序输入的对称函数 为了让模型具有输入排列不变性(结果不受输入排列顺序的影响),一种思路是利用所有可能的排列顺序训练一个RNN。作者在这里采用的思路是使用一个对称函数,将 个向量变为一个新的、与输入顺序无关的向...
get_model定义了网络结构,get_loss定义了损耗。 网络结构 按照网络流程,将整个网络分为以下几个阶段。 网络输入:[B,N,3,1]。 1. Input Transform Net与原始输入相乘 2.特征提取 这部分使用的都是2d-conv。 首先用[1,3]的卷积核将点云的宽卷成1,使用64个卷积核,得到输出维度[B,N,1,64]。再接一个[...
模型的loss和2D的目标检测一样是包含分类以及回归的多任务loss。同时,作者提出了一种被称为corner loss的损失函数来对目标的中心、朝向和大小进行联合优化,避免由于某一方面的不准确而主导loss。 4目标检测效果 因为目前我们主要考虑点云的目标检测问题,在此忽略PointNet和PointNet++论文中提出的分类和语义分割的效果,只...
5)分类loss:交叉熵,分割loss:分类+分割+L2(transform,原图的正交变换) 1.3 T-Net网络结构 将输入的点云数据作为nx3x1单通道图像,接三次卷积和一次池化后,再reshape为1024个节点,然后接两层全连接,网络除最后一层外都使用了ReLU激活函数和批标准化。
Pointnet的解决方法是学习一个变换矩阵T,即T-Net结构。由于loss的约束,使得T矩阵训练会学习到最有利于最终分类的变换,如把点云旋转到正面。论文的架构中,分别在输入数据后和第一层特征中使用了T矩阵,大小为3x3和64x64。其中第二个T矩阵由于参数过多,考虑添加正则项,使其接近于正交矩阵,减少点云的信息丢失。
Pointnet的解决方法是学习一个变换矩阵T,即T-Net结构。由于loss的约束,使得T矩阵训练会学习到最有利于最终分类的变换,如把点云旋转到正面。论文的架构中,分别在输入数据后和第一层特征中使用了T矩阵,大小为3x3和64x64。其中第二个T矩阵由于参数过多,考虑添加正则项,使其接近于正交矩阵,减少点云的信息丢失。
为了让更好地处理点云不均匀的密度和拟合局部形状,回归deformable kernel points的位置时,loss 包括离...