未知作者

香港18年挂牌最完整篇

"SBNet:Sparse Blocks Network for Fast Inference"来自多伦多大学和Uber ATG,针对稀疏性数据改进了传统卷积网络结构,应用在自动驾驶环境下的物体检测,检测效率能提高2~4倍,并且理论上能够植入到任何

SBNet,自动驾驶系统,自动驾驶
"SBNet:Sparse Blocks Network for Fast Inference"来自多伦多大学和Uber ATG,针对稀疏性数据改进了传统卷积网络结构,应用在自动驾驶环境下的物体检测,检测效率能提高2~4倍,并且理论上能够植入到任何一个网络单元中,具备较好的扩展性。(好像就是名字起得不太好?)。此外还提供了官方解说视频(无墙版)及代码。
 
二、核心思路总结
 
根据已知或预测的binary mask(attention mechanism),对feature map进行blockwise分解,生成稀疏块及对应的tile indices(示意图如图一),然后将这些稀疏块聚集(Gather)在一起形成新的tensor,通过卷积操作(valid convolution)后将结果分散(Scatter)回原先的位置上,并更新原始tensor。
 
图一:Reduce Mask Operation from SBNet
 
可以看到思路很明确,只对mask对应的稀疏块进行卷积,大大提高了系统的运行效率。SBNet模块结构见下图。
 
图二:Tiled Sparse Convolution Module
 
三、要点分析
 
1.Attention Mechanism
 
传统“全局搜索”式Dense Convolution效率比较低,因为我们需要关注的事物可能仅仅位于某一个特定区域。针对自动驾驶环境下的物体检测,无人车只关注道路上的物体,而其他空间的物体是无关紧要的,如果进行dense conv会无益于检测精度并导致检测效率降低。
 
进一步说,如何找到特定区域(mask)并合理进行卷积操作是提高系统效率的关键,这里的特定区域可以理解为一系列的region proposals组合而成(之间存在重叠)。
 
SBNet通过两种方式获取mask,一是利用Uber的Car3D LiDAR Dataset中road and sidewalk mask,如图三所示,浅蓝色区域即为mask,标记了道路以及人行道;二是根据其他网络在线预测mask,比如PSPNet。
 
图三:Road Mask from SBNet
 
预测得到的mask拥有更小的区域,因此能进一步提高检测效率,但是受到某些不准确预测结果的影响,会导致检测精度在一定程度上降低。Dense conv,SBNet+Road Mask,SBNet+Predicted Mask检测结果见下图,可以看出第三列的淡蓝色区域明显减少并呈现块状分布,检测效率比基于Road Mask的要快1.5倍,如表一所示。相比于Dense,SBNet+PSP检测结果中有误检和漏检的情况,因此mAP要低一些。
 
图四:Detection Results of Different Methods
 
表一:Speed and Accuracy Comparisons
 
2.Gather and Scatter Kernel
 
在聚集过程(Sparse-to-Dense)中,假设输入tensor尺寸为N\times H\times W\times C并且块个数为B,利用h\times w\times C大小的切片将各个块从feature map中“切下来”,然后堆叠到一起可以得到尺寸为B\times w\times h\times C的新tensor,如图二所示。这一过程中,块之间是存在重叠的。此后,在新tensor上进行卷积操作,并生成B\times w'\times h'\times C的tensor。
 
在分散过程(Dense-to-Sparse)中,输入B\times w'\times h'\times C的tensor,将每一块结果重新覆盖到原始输入tensor上。覆盖时,每一个块对应一个线程,因此多个块可以同时并行写入,但是在gather时块之间是有重叠区域的,即存在很多临界区,导致不能同时对其进行写操作。SBNet提出只覆盖非重叠的块区域,所以不需要原子锁等处理方式,并可以生成无缝邻接块。在图二中可以看到,黄色区域要比橙色区域小一些。
 
这两个kernel可以植入到其他网络单元中,以针对稀疏结构的数据提高系统运行效率,比如下图里植入到残差单元中。
 
图五:Plug into Residual Unit
 
四、一些思考
 
1.更精准的mask
 
SBNet是应用在点云投影为BEV(Bird's Eye View)场景下,其尺寸为800x1400x33,给出的mask是基于路面的,相当于只限制了点云中点的x和y坐标,在竖直方向是没有约束的。但是,我们知道几乎所有的物体都位于同一水平面上,因此可以进一步缩小mask的z坐标范围。
 
此外,只是利用预先已知的mask进行检测还是存在很大的局限性。因此,动态预测mask是一个有趣且有用的工作,高质量的mask能够同时提高检测系统的精度和效率。
 
2.SDNet
 
虽然目前的SBNet能够完美应用于BEV上,但是还没有真正推广至raw point cloud,毕竟将点云投影为BEV存在空间信息损失。个人认为从Sparse Block Network完善到Sparse Data Network(SDNet...这个名字也很尬)是一项有意义的工作。
 
鉴于点云过于稀疏,可以先采用VoxelNet类似的预处理方式,将点云划分、聚类为一系列的Voxel,然后根据mask提取对应部分Voxel,对其进行gather-3d conv-scatter操作。这种方式可以保证在不损失任何空间信息的前提下,缩小卷积操作范围,从而提高VoxelNet的运行效率。
 
Attention mechanism也同样可以迁移至AVOD,PointFusion等存在点云和RGB信息融合的模块中。
 
3.多尺度聚合卷积
 
在SBNet中,为了方便卷积操作,所有的block尺寸大小是相同的,因此会限制最终检测器的检测能力。由2D Detection中anchor的设计自然能想到设计不同尺度的block,以提高不同大小物体的检测性能。解决方案的话可以在聚合时,另外多延伸出若干个不同尺度的分支,分别利用不同尺度的卷积核并行进行卷积操作。
 
除此之外,block尺寸的全局动态分配也是一个值得深入的点。
 
五、灵句解释
 
1.Spending equal amount of computation at all spatial locations is a tremendous waste,since spatial sparsity is ubiquitous in many applications.Spatial sparsity can be represented as binary computation masks where ones indicate active locations that need more computation and zeros inactive.
 
#表明空间稀疏性是普遍存在的,空间全局计算是一个低效率的方式,同时给出了空间稀疏性的表示
 
2.Instead of convolving the input features at every location,we propose to use the masks to guide the convolutional filters.Computation masks can also be considered as a form of attention mechanism where the attention weights are binary.
 
#针对空间稀疏性的解决方法
 
3.We gather overlapping blocks,but during the scatter stage,each thread writes to non-overlapping blocks so that the writes do not require atomics locking and yield"gapless"equivalent results for adjacent blocks.In the scatter kernel,the results of convolution operation are then copied back on top of the dense activation tensor.
 
#gather和scatter的实施细节
 
4.This input overlap is essential to producing the output that seamlessly stitches the results of adjacent block convolutions in a way that is locally-equivalent to a dense convolution on a larger block and fused indexing capability is critical to practical speed-up.
 
#重叠部分对生成无缝邻接块是重要的
 
5.To achieve the maximum speed-up we perform a search sweep over a range of block sizes to automatically pick the fastest-performing block decomposition.
 自动驾驶 自动驾驶系统 SBNet