LiDAR 3D 目标检测的分组流水线柱状特征网加速器
摘要
在实际的自动驾驶场景中实现基于LiDAR的3D目标检测算法面临着重大挑战。在当前的研究算法中,点云数据的固有稀疏性和随机性导致预处理阶段需要大量内存和频繁的数据读写操作。这类需求不适合具有严格实时要求和资源受限的终端设备。本文提出了一种用于LiDAR 3D目标检测的分组处理柱状特征网加速器。通过将体素化和特征提取集成到流水线架构中,所提加速器显著降低了点云数据的存储需求,并提升了特征提取和伪图像生成的速度。实验结果表明,该方法将点云数据到伪图像生成的计算吞吐量提升了1.2倍,并消除了预处理过程中对片外内存访问的需求。
作者
Qingyu Deng 上海大学通信与信息工程学院,上海,中国
Xinyu Chen 上海大学通信与信息工程学院,上海,中国
Wei Zhang 上海大学通信与信息工程学院,上海,中国
Beining Zhao 上海大学通信与信息工程学院,上海,中国
Yuhang Gu 上海大学通信与信息工程学院,上海,中国
Shan Cao 上海大学通信与信息工程学院,上海,中国
Zhiyuan Jiang 上海大学通信与信息工程学院,上海,中国
出版信息
期刊: 2025 IEEE International Symposium on Circuits and Systems (ISCAS) 年份: 2025 页码: 1-5 DOI: 10.1109/ISCAS56072.2025.11043447 文章编号: 11043447 ISSN: Electronic ISSN: 2158-1525, Print on Demand(PoD) ISSN: 0271-4302
指标
总下载量: 35
资助
- 中国国家自然科学基金
关键词
IEEE 关键词: 点云压缩, 三维显示, 激光雷达, 电路与系统, 目标检测, 计算机体系结构, 特征提取, 吞吐量, 实时系统, 现场可编程门阵列
索引词: 3D目标检测, 点云, 点云数据, 终端设备, 芯片外存储, 处理单元, 哈希函数, 数据帧, 数据包, 波束扫描, Lidar数据, 特征编码器, 点索引, 表项, 硬件加速器, KITTI数据集, 外部接口
作者关键词: 3D目标检测, LiDAR, PointPillars, FPGA
未定义
第一节:引言
在自动驾驶中,3D 物体检测的重要性日益受到认可,尤其是在基于激光雷达(LiDAR)的检测系统中,激光雷达能够提供高度精确的点云数据。因此,基于激光雷达的检测算法已成为当前研究的核心焦点 1 2。在许多需要进行 3D 物体检测的终端设备中,时效性和能耗是决定设备是否能够大规模部署的关键因素 3。由于点云的稀疏性和不规则性,直接使用神经网络进行处理会导致高计算复杂度,效率低下 4。基于体素的点云处理方法通过将原始数据划分为体素,显著降低了计算复杂度 5 6。PointPillars 7 算法进一步将体素表示简化为柱状体,并将用于特征提取的 3D 卷积降至 2D 卷积,从而进一步降低模型推理的计算成本。这种模型在激光雷达 3D 物体检测领域实现了速度与精度的良好平衡。
PointPillars 算法的工作流程如图 1 所示。最初,点云数据被输入到 Point Feature Net(PFN)模块,在该模块中它被划分为二维空间中的独立柱状体(pillars)。这些柱状体包含点云数据,随后进入特征提取层。在此层中,柱状体数据被处理以提取更高级的表示。随后,利用原始数据中点之间的空间关系生成伪图像,类似于传统图像。最后,使用 2D 卷积进行特征提取,随后通过检测头(Detection Head)进行 3D 边框回归预测。
图 1:PointPillars 网络结构概览
然而,在以往的研究中,已经提出了许多硬件架构设计来加速 PointPillars 网络的骨干和 SSD 步骤 8–9。然而,对于点云数据的体素化和特征提取步骤的研究相对较少。在这些研究中,预处理阶段,例如体素化和编码步骤,通常由软件实现并在 CPU 侧处理。尽管对软件代码进行了各种优化,但整个预处理推理过程在多线程环境下仍需要 70 毫秒才能运行 10。因此,通过 CPU 实现点云数据预处理会严重阻碍推理速度,并导致高功耗 11。为了解决这一问题,已经针对 3D 点云预处理阶段提出了若干相应的硬件加速器 12–13。值得注意的是,14 关注的仅是特征提取加速器,需要在整个预处理过程中持续依赖 CPU 协助。15 引入了一种针对体素化点云数据的硬件加速器,在其中利用哈希查找技术来减少体素信息存储中的冗余,并最小化体素化过程中的频繁访问;但特征提取过程并未联合优化。16 开发了一套针对整个 PFN 阶段的综合硬件加速框架,但仍需要 CPU 干预来管理与外部接口的交互。此外,这两种方案都需要外部存储器来保存原始点云数据,引入了额外的面积、功耗和延迟 17,从而使它们不适合在某些资源受限的终端应用中部署。
本文提出了一种基于 PointPillars 网络的 Pillar Feature Net 加速器 (PFNA)。该加速器由柱子生成器和特征提取器组成,支持在每帧内对点云数据进行分包和流水线处理,从而实现高速且高效的预处理。柱子生成器将原始点云数据分包处理,通过哈希映射进行体素化,并将其分类到二维网格坐标系统中。随后,它根据在之前分包中出现的体素进行比较,将符合条件的体素输出为柱子,随后将其传递给特征生成器进行流式处理。提取的特征信息被重新映射到二维网格,以生成伪图像,并存储在 DDR 中。我们提出的方法在 PFN 阶段减少了整个点云数据帧的大规模存储需求。它不仅消除了点云预处理阶段与片外存储器频繁交互的情况,还通过分包处理的流水线收益提升了计算吞吐量。最终,我们使用所提议的 PFNA 实现了完整的 FPGA 基于 PointPillars 的网络,并通过在 KITTI 数据集上进行的实验验证了其可行性。
图 2:柱子特征网络处理的不同方法:(a) 传统方法需要在一个帧中存储所有体素化点云。(b) 流水线操作允许在每帧内将点云临时存储在分包中。
第二节:动机
点云数据通常表现出不规则的空间分布特征,导致不同区域之间点云密度存在显著差异。哈希表作为高效的映射和查找工具,为体素信息的存储与检索提供了有效的解决方案 18。在本研究中,我们参考 19 中详细描述的体素编码加速器,以有效解决冗余存储和频繁访问体素数据所带来的挑战。然而,现有的 PFN 加速器研究基本遵循原始网络的工作流程。如图 2(a) 所示,传统 PFN 过程仅在点云数据每一帧完成体素化后才进行特征编码。因此,在处理过程中需要大量内存来存储单帧内的所有点云数据,通常依赖于片外内存 20 21。
根据激光雷达数据采集的原理,激光束在扫描特定角度之前捕获的点云坐标不会在当前帧中再次出现。因此,在 PFN 过程中开始特征编码之前,无需等待一帧数据的体素化完成。相反,一帧内的数据可以被划分为若干连续的包,每个包包含在定义的角度范围内的点云数据。随后,可以按包逐包判断某个柱子及其对应的点云数据是否可以传递到后续处理阶段。如图 2(b) 所示,当激光雷达束扫描在区间 2 与区间 3 之间时,只有与区间 1 内点云相关的柱子信息能够传输到特征提取层进行编码。因此,在处理过程中,我们可以通过比较两个包中的柱子信息来决定该柱子是否能输出到下一阶段。这种流水线式的 PFN 方法仅需要存储最多两包点云信息,从而有效消除了保留整帧点云数据的需求。此举不仅显著降低了存储需求,还为芯片内实现提供了可能。
可以利用 KITTI 22 数据集来验证这一假设:如果我们将单个扫描周期内连续的 N 个点云数据点视为一个数据包,并评估相邻 k 个数据包的点云数据是否对应相同的体素,我们可以假设如果数据包 j 与 j+i 中的点云数据对应相同的体素,而在中间的数据包中该体素缺失,则在处理过程中会丢弃数据包 j+i 的点云数据。随着 k 趋近无穷大,我们得到图 3 所示的结论:以一次 LiDAR 扫描周期的点云数据为例,包含总计 122,637 个点云数据点,随着每个数据包缓存点数 N 的增加,丢失的点云数据点数趋近于零。这证明了在体素化过程中缓存所有点云数据是没有必要的,并且在运行时可以提前输出满足条件的体素,用于特征提取和伪图像生成。
图 3:包大小对丢点的影响
第 III 节。柱子特征网络加速器
A. SoC 架构
如图4所示,所提出的加速器的整体架构。该加速器由 PFN 预处理单元和神经处理单元(NPU)23组成。PFN 预处理单元为 LiDAR 点云数据提供外部接口和 AXI‑stream 数据流接口,支持将计算得到的特征信息重映射并存储到 DDR 中,以生成伪图像。此外,PFN 单元集成了中断信号来通知 NPU。点缓冲区用于存储从 LiDAR 获取的点云数据,并按包进行计算。在 Preprocessor 单元中,点云数据先经过量化和柱坐标计算,然后传递给 Pillar Generator 单元以确定对应的柱。Packet Controller 单元包含若干记录表和决策单元,用于监测柱的生成,判断哪些柱可以输出,并指示 Pillar Generator 持续输出柱信息以存储到 Pillar Buffer。Feature Extractor 持续接收柱进行编码,编码后的特征随后与点云数据的原始二维空间坐标整合,并转换为 AXI‑stream 数据信号。当数据帧完整存储到 DDR 并成功生成伪图像后,PFNA 触发中断到 NPU,表明数据已就绪供处理,并促进后续预测与计算。使用流水线方式进行体素化和编码可确保两种缓冲区的内存需求保持最小,从而实现完全嵌入芯片 RAM。
B. 柱子生成器
如图 5 所示,LiDAR 收集的数据存储在 Point Buffer. 中。当存储的点数达到预设的包大小时,缓冲区会激活后续处理单元开始计算。首先,根据点云的位置信息过滤检测范围内的数据,然后计算点云数据的网格坐标,并将其作为哈希键发送给体素生成器。体素生成器的设计结构基于文献中描述的层级表 24 实现,该表输出体素索引和点索引。体素索引用于检查 Voxel Index Table. 中是否存在相应条目。若不存在,则创建新条目;若存在,则检查 Mem Status Table 中该条目是否标记为 "A"(Allocated)。若标记为 "F" (Free),则表示该索引已被处理并输出,对应的点被丢弃。若标记为 "A",则使用 Voxel Index Table 中的条目作为列地址,点索引作为行地址,将数据存储在 Point Data Memory 中。此外,Point Index Table 中相应条目被更新为点索引。所有包内数据处理完毕后,定位与当前 Package Counter-1 对应的 Package Index Table 条目。随后按列单位检索数据,并将 Mem Status Table 中相应位置更新为 "F"。随后根据 Point Index Table 中有效点云数据的条目值生成掩码,并应用于检索到的列数据。生成的数据形成柱状体,然后放入柱状体缓冲区进行进一步处理。
图 4: 用于 3D 目标检测的 SoC 架构(LIDAR)
图 5: 柱状体生成器的架构
图 6: 特征提取器的架构
C. 特征提取器
当Pillar Buffer不为空时,Feature Extractor 将持续提取柱子进行特征编码。该单元能够执行一维卷积、BatchNorm、ReLU 和最大池化操作,最终输出特征。如图6所示,Feature Extractor 首先从 Pillar Buffer 接收柱子数据。随后,它使用 DSPs 进行一维卷积。为提升硬件执行效率,我们已将卷积和 BatchNorm 操作融合。假设卷积部分的输出为 z = w × x + b,而 BatchNorm 部分的输出为 y = \gamma \frac{{z - \mu }}{{\sqrt {{\sigma ^2} + \varepsilon } }} + \beta。因此,将上述两式结合可得到融合后的卷积参数,产生新的卷积方程 y = \gamma \frac{{w \times x + b - \mu }}{{\sqrt {{\sigma ^2} + \varepsilon } }} + \beta。这些融合训练参数已预加载到单元中。最终,Feature Extractor 将特征以数据形式输出,并将坐标作为地址输出以生成 AXI-stream 信号,从而将特征数据存入 DDR,用于映射伪图像。
第四节 实施结果
A. 实验设置
我们使用搭载 Kintex-7 XC7K410T 芯片的开发板实现了 SoC 设计,并在 KITTI 数据集上进行了评估。在实验设置中考虑了面积与精度两方面,我们将每包点数设置为 128 以进行板级验证。PFNA 和 NPU 的时钟频率均为 200 MHz。我们参考了在 25 中实现的 PointPillars 网络结构。与官方 PointPillars 实现相比,我们的特征提取组件仅使用 4 维信息进行计算。该维度减少降低了 4 毫秒的处理时间,同时保持了几乎相同的精度。因此,在 PFN 过程中节省了 5 % 的 LUT 资源和 8 % 的 BRAM 资源。
B. 评估结果
我们提出的PFN加速器与先前研究的延迟和吞吐量进行了比较,结果如表I所示。我们的实现实现了最高吞吐量,为基于CPU的计算(Cortex-A53)的21倍,并且比现有最优硬件加速器高出1.2倍。这表明我们的加速器能够每秒执行最多的乘加(MAC)运算。这种性能得益于分组流水线架构的优势。此外,需要强调的是26和27中描述的PFN硬件单元需要额外的片外存储器来容纳点云数据。相比之下,我们的方法消除了对片外存储器的需求,因为所有计算完全在片上完成,并已在综合结果中充分考虑。此外,28中的特征编码实现与DNN加速器内的主干相集成,使PFN单元相关的资源利用率不确定。如表II所示,我们的PFN加速器实现了更高效的计算,逻辑和计算资源减少。观察到的BRAM资源利用率增加来自我们将点云数据存储从片外迁移到片上,促进更快速、更能效的数据交互和传输。
表 I:
表 II:
第 V 节. 结论与未来工作
本文提出了一个针对激光雷达点云数据的FPGA加速预处理加速器,优化了PointPillars网络中的PFN层。通过采用分组和流水线处理,该设计降低了内存使用并提升了速度。与NPU集成完成完整推理后,提供了紧耦合的激光雷达数据接口。在Xilinx Kintex-7 XC7K410T上验证,显示出更高的吞吐量和更低的资源消耗。未来工作包括针对不同点密度的动态分组以及在自动驾驶中的实际部署,以评估在复杂环境中的鲁棒性。
参考文献
额外参考文献
H. Brum、M. Véstias 与 H. Neto,《LiDAR 3D Object Detection in FPGA with Low Bitwidth Quantization》,发表于《International Symposium on Applied Reconfigurable Computing》, Springer, 2024, 第 90–105 页。
Xilinx,《Vitis-ai》, https://github.com/Xilinx/Vitis-AI/blob/master/model_zoo/model-list/pt_pointpillars_3.5.