如有错误,恳请指出。
创新互联自2013年起,先为洪雅等服务建站,洪雅等地企业,进行企业商务咨询服务。为洪雅企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。paper:《SECOND: Sparsely Embedded Convolutional Detection》
1. 背景鉴于VoxelNet等3d检测算法中使用的3d卷积会导致计算量大且推理速度慢的问题,所以这里提出了一种稀疏卷积(sparse convolution method)。在介绍VoxelNet中,也提及到由于其损失结构采用直接回归的方式,虽然简洁但可能会限制其网络性能,在此基础上,SECOND提出了一个新的损失函数与数据增强策略来对其进行改进。
整体的SECOND结构与VoxelNet机构是一样的,结构图如下所示。但是,在VoxelNet中使用的3d卷积,这里SECOND提出了稀疏卷积对其进行替换,大大提高了推理速度。
稀疏卷积有两种:
1)正常稀疏卷积层:没有相关的输入点就不用计算输出点。该方法在仅基于LiDAR的方法上有益。
2)子流型卷积:限制当且仅当相应的输入位置处于活动状态时,输出位置才处于活动状态。这避免了生成过多的活动点,因为活动点过多会导致后续卷积层的速度下降。
稀疏中间层特征提取如上图所示,其中黄色框表示稀疏卷积,白色框表示子流形卷积,红色框表示稀疏到密集层。可以发现其有两个稀疏卷积阶段,每个阶段有多个子流型卷积层和一个正常稀疏卷积层对z轴进行下采样。在z轴维度下采样到1或2时将稀疏数据转化为稠密特征图,reshape成2D数据。
ps:对于稀疏卷积的具体原理,可以参考:稀疏卷积 Sparse Convolution Net,对于稀疏卷积的代码实现可以查看参考资料3和5.
2.2 Loss Compute对于损失部分,SECOND对位置信息xyz以及尺寸信息whl都采用了和VoxelNet一样的方法,也就是直接回归预测,但是对于角度预测进行了改进。这是由于VoxelNet直接预测弧度偏移,但在0和π的情况下会遇到一个对立的问题,因为这两个角度对应的是同一个盒子,但当其中一个被误认为是另一个时,会产生很大的损失。这里SECOND对于角度的损失函数设置为:Lθ = SmoothL1(sin(θp − θt))。
现在对此损失函数进行分析。SmoothL1函数是偶函数,而Sin函数是奇函数。假设有两个对称的anchor对ground truth的角度偏移为-20与20。那么,先经过了奇函数再经过一个偶函数,这两个框与ground truth所得到的损失是一致的。也就是 SmoothL1(sin(20)) = SmoothL1(sin(-20))。这样就可以解决对立情况损失较大的问题,现在可以将对立损失改为一致,同时还可以根据角度偏移函数模拟出iou。但是由于两个相反方向的损失一致,如何判别正负方向。SECOND的解决方案是再输出一个direction head(方向分类器)来判别,如果anchor绕GT的z轴旋转大于0,则结果为正;否则为负。
SECOND的RPN结构如下所示,由于新增加了一个方向分类器,所以总共有三个head:score map(类别分类器)、regression map(回归预测)、direction map(框方向分类器)。这里同样使用了多尺度融合的策略,进行两个尺寸的下采样再上采样到相同尺寸进行拼接融合。后续再对融合的特征图进行1x1卷积降维构建3个head。
此外,SECOND还提出了一种类似copystate的数据增强策略。将GT及其包含的点提取出来, 做成一个数据库,当训练的时候,随机取出几个GT放到正在训练的场景中。但是为了避免重叠,所以会进行一个碰撞测试,思想是类似的,只是实现的方法不一样。其他的数据增强策略就不多说了,就是和VoxelNet类似的随机缩放,随机旋转等。
SECOND就是在VoxelNet的基础上提出了稀疏卷积来提高推理速度,同时还设计了一种新颖的角度损失解决了对立情况(0与π)损失较大的问题,但需要direction map来进行辅助处理。测试集结果如下所示,推理速度上达到了SOTA水平。
验证集结果如下所示:
参考资料:
1. 论文阅读 SECOND:Sparsely Embedded Convolutional Detection
2. SECOND笔记
3. 基于pytorch简单实现稀疏3d卷积(SECOND)
4. 稀疏卷积 Sparse Convolution Net
5. 优化版-基于pytorch简单实现稀疏3d卷积(SECOND)
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧