随着深度学习技术的快速发展,3D检测技术作为关键发展方向之一,在机器人视觉、城市视觉、增强现实等领域发挥重要作用。传统依靠激光雷达的3D检测方法存在传感器昂贵,难以大规模广泛部署、点云缺失纹理信息、分辨率低等问题。建立单目3D检测模型,有效地利用了图像相对于点云的各个优势,以更低的成本部署到实际应用场景。
为了让大家能够更快速的应用前沿的技术,百度视觉技术部基于飞桨提供了一套完整的3D视觉检测产业实践范例,提供了从数据准备、模型训练及优化的全流程可复用方案,降低产业落地门槛。
⭐ 项目链接 ⭐
点击阅读原文一键GET
https://aistudio.baidu.com/aistudio/projectdetail/4038086
所有源码及教程均已开源,欢迎大家使用
场景难点
- 深度信息缺失,由2D图像预测3D位置困难;
- 相机传感器敏感,受环境影响(夜晚、雨天)等较大;
- 图像层面,遮挡、截断等问题严重影响感知精度。
模型选择
单目3D检测提供两种方案选择:基于anchor的方案和anchor-free的方案。
- anchor方案:从图像中估计出3D检测框,也无需预测中间的3D场景表示,可以直接利用一个区域提案网络,生成给定图像的3D锚点。不同于以往与类别无关的2D锚点,3D锚点的形状通常与其语义标签有很强的相关性。
- anchor-free方案:将2D检测方法CenterNet扩展到基于图像的3D检测器,该框架将对象编码为单个点(对象的中心点)并使用关键点估计来找到它。此外,几个平行的头被用来估计物体的其他属性,包括深度、尺寸、位置和方向。
我们采用基于anchor的方法,使用了3D障碍物的平均信息作为先验知识,效果实际落地更好。在骨干网络部分,我们选择的是DenseNet,这种网络建立的是前面所有层与后面层的密集连接,实现特征重用,有着省参数、扛过拟合等优点。我们提供了以下版本的方案尝试:
根据单目3D检测实时性的要求,这里我们选择了DenseNet121作为我们的骨干网络。
算法优化
本范例提供了在模型迭代过程中优化精度的思路:
- 数据过滤:根据bbox可见程度、大小来过滤每个bbox标签,根据有无保留bbox过滤每张图片,整体平衡前后背景,保证训练的稳定性。
- 数据增强:主要使用RandomFlip、Resize两种数据增强策略。
- anchor定义:模型输出
- 后处理优化:根据将3D相关信息组成3D框,投影到图像上得到投影的八点框,取八点最小外接包围框与2D预测结果算IOU,通过不断的调整旋转角ry或深度z,来使得IOU最小。此算法利用了2D检测的结果要比3D检测的结果准确的先验知识,用2D框来纠正预测的3D属性,来达到优化3D定位精度的目的。整体框架如下图所示:
经过调整后,在car类前后效果对比如下:
模型部署
使用飞桨原生推理库Paddle Inference,用于服务端模型部署,总体上分为三步:
- 创建PaddlePredictor,设置所导出的模型路径;
- 创建输入用的 PaddleTensor,传入到 PaddlePredictor中;
- 获取输出的 PaddleTensor,将结果取出。
飞桨产业实践范例
助力企业跨越AI落地鸿沟
飞桨产业实践范例,致力于加速AI在产业落地的前进路径,减少理论技术与产业应用的差距。范例来源于产业真实业务场景,通过完整的代码实现,提供从数据准备到模型部署的方案过程解析,堪称产业落地的“自动导航”。
- 真实产业场景:与实际具有AI应用的企业合作共建,选取企业高频需求的AI应用场景如智慧城市-安全帽检测、智能制造-表计读数等;
- 完整代码实现:提供可一键运行的代码,在“AI Studio一站式开发平台”上使用免费算力一键Notebook运行;
- 详细过程解析:深度解析从数据准备和处理、模型选择、模型优化和部署的AI落地全流程,共享可复用的模型调参和优化经验;
- 直达项目落地:百度高工手把手教用户进行全流程代码实践,轻松直达项目POC阶段。