0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

KITTI 3D检测数据集

新机器视觉 来源:新机器视觉 作者:千百度@知乎 2022-05-31 10:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

77c8d9f8-e01e-11ec-ba43-dac502259ad0.png

基于Lidar的object检测模型包括Point-based [PointRCNN(CVPR19), IA-SSD(CVPR22)等], Voxel-based [PointPillars(CVPR19), CenterPoint(CVPR21)等],Point-Voxel-based [PV-RCNN(CVPR20), HVPR(CVPR21)等]和Multi-view-based[PIXOR(CVPR18)等]等。本博客主要记录,作为菜鸟的我,在KITTI数据集上(3类)基于PyTorch实现PointPillars的一些学习心得, 训练和测试的pipeline如Figure 1所示。这里按照深度学习算法的流程进行展开: 数据 + 网络结构 + 预测/可视化 + 评估,和实现的代码结构是一一对应的,完整代码已更新于github//github.com/zhulf0804/PointPillars [说明 - 代码的实现是通过阅读mmdet3dv0.18.1源码, 加上自己的理解完成的。因为不会写cuda, 所以cuda代码和少量代码是从mmdet3dv0.18.1复制过来的。]

78442ec8-e01e-11ec-ba43-dac502259ad0.jpg

一、KITTI 3D检测数据集

1.1 数据集信息:

·KITTI数据集论文:Are we ready for autonomous driving? the kitti vision benchmark suite[CVPR 2012] 和Vision meets robotics: The kitti dataset[IJRR 2013]·KITTI数据集下载(下载前需要登录): point cloud(velodyne, 29GB), images(image_2, 12 GB), calibration files(calib, 16 MB)和labels(label_2, 5 MB)。数据velodyne, calib 和 label_2的读取详见utils/io.py

1.2 ground truth label信息 [file]

对每一帧点云数据, label是 n个15维的向量, 组成了8个维度的信息。

786aee6e-e01e-11ec-ba43-dac502259ad0.png

1)训练时主要用到的是类别信息(type) 和3d bbox 信息 (location, dimension, rotation_y).2)观测角(alpha)和旋转角(rotation_y)的区别和联系可以参考博客blog.csdn.net/qq_161375。

1.3 坐标系的变换

因为gt label中提供的bbox信息是Camera坐标系的,因此在训练时需要使用外参等将其转换到Lidar坐标系; 有时想要把3d bbox映射到图像中的2d bbox方便可视化,此时需要内参。具体转换关系如Figure 2。坐标系转换的代码见utils/process.py

78b98984-e01e-11ec-ba43-dac502259ad0.jpg

1.4 数据增强

数据增强应该是Lidar检测中很重要的一环。发现其与2D检测中的增强差别较大,比如3D中会做database sampling(我理解的是把gt bbox进行cut-paste), 会做碰撞检测等。在本库中主要使用了采用了5种数据增强, 相关代码在dataset/data_aug.py
  • 采样gt bbox并将其复制到当前帧的点云
    • 从Car, Pedestrian, Cyclist的database数据集中随机采集一定数量的bbox及inside points, 使每类bboxes的数量分别达到15, 10, 10.
    • 将这些采样的bboxes进行碰撞检测, 通过碰撞检测的bboxes和对应labels加到gt_bboxes_3d, gt_labels
    • 把位于这些采样bboxes内点删除掉, 替换成bboxes内部的点.
  • bbox 随机旋转平移
    • 以某个bbox为例, 随机产生num_try个平移向量t和旋转角度r, 旋转角度可以转成旋转矩阵(mat).
    • 对bbox进行旋转和平移, 找到num_try中第一个通过碰撞测试的平移向量t和旋转角度r(mat).
    • 对bbox内部的点进行旋转和平移.
    • 对bbox进行旋转和平移.
  • 随机水平翻转
    • points水平翻转
    • bboxes水平翻转
  • 整体旋转/平移/缩放
    • object旋转, 缩放和平移
    • point旋转, 缩放和平移
  • 对points进行shuffle: 打乱点云数据中points的顺序。
Figure3是对上述前4种数据增强的可视化结果。

78e2ec70-e01e-11ec-ba43-dac502259ad0.jpg

二、网络结构与训练

790ffaf8-e01e-11ec-ba43-dac502259ad0.png

7944643c-e01e-11ec-ba43-dac502259ad0.png

2.2 GT值生成

Head的3个分支基于anchor分别预测了类别, bbox框(相对于anchor的偏移量和尺寸比)和旋转角度的类别, 那么在训练时, 如何得到每一个anchor对应的GT值呢 ? 相关代码见model/anchors.py

79a33d0e-e01e-11ec-ba43-dac502259ad0.png

79daebe6-e01e-11ec-ba43-dac502259ad0.png

2.3 损失函数和训练

现在知道了类别分类head, bbox回归head和朝向分类head的预测值和GT值, 接下来介绍损失函数。相关代码见loss/loss.py

7a01fcf4-e01e-11ec-ba43-dac502259ad0.png

总loss = 1.0*类别分类loss + 2.0*回归loss + 2.0*朝向分类loss。模型训练: 优化器torch.optim.AdamW(), 学习率的调整torch.optim.lr_scheduler.OneCycleLR(); 模型共训练160epoches。

三、单帧预测和可视化

基于Head的预测值和anchors, 如何得到最后的候选框呢 ? 相关代码见model/pointpillars.py。一般经过以下几个步骤:基于预测的类别分数的scores, 选出nms_pre (100) 个anchors: 每一个anchor具有3个scores, 分别对应属于每一类的概率, 这里选择这3个scores中最大值作为该anchor的score; 根据每个anchor的score降序排序, 选择anchors。

7a278974-e01e-11ec-ba43-dac502259ad0.png

3. 逐类进行以下操作:
  • 过滤掉类别score 小于 score_thr (0.1) 的bboxes
  • 基于nms_thr (0.01), nms过滤掉重叠框:

7a9bf3a4-e01e-11ec-ba43-dac502259ad0.png

另外, 基于Open3d实现了在Lidar和Image里3d bboxes的可视化, 相关代码见test.pyutils/vis_o3d.py。下图是对验证集中id=000134的数据进行可视化的结果。

7acf8ade-e01e-11ec-ba43-dac502259ad0.jpg

7af3dce0-e01e-11ec-ba43-dac502259ad0.jpg

四、模型评估

评估指标同2D检测类似, 也是采用AP, 即Precison-Recall曲线下的面积。不同的是, 在3D中可以计算3D bbox, BEV bbox 和 (2D bbox, AOS)的AP。先说明一下AOS指标和Difficulty的定义。

7b52c138-e01e-11ec-ba43-dac502259ad0.png

Difficulty: 根据2d框的高度, 遮挡程度和截断程度, 把bbox分为 difficulty=0, 1, 2 或 其它。相关定义具体查看代码pre_process_kitti.py#L16-32这里以3D bbox为例, 介绍类别=Car,difficulty=1AP的计算。注意, difficulty=1的数据实际上是指difficulty<=1的数据; 另外这里主要介绍大致步骤, 具体实现见evaluate.py1.计算3D IoU (utils/process.pyiou3d(bboxes1, bboxes2)), 用于判定一个det bbox是否和gt bbox匹配上 (IoU > 0.7)。2.根据类别=Car,difficulty=1选择gt bboxes和det bboxes。
  • gt bboxes: 选择类别=Car,difficulty<=1的bboxes;
  • det bboxes: 选择预测类别=Car的bboxes。
3. 确定P-R曲线中的点对(Pi, Ri)对应的score阈值。

7bed7ae8-e01e-11ec-ba43-dac502259ad0.png

7c33fc20-e01e-11ec-ba43-dac502259ad0.jpg

五、总结点云检测, 相比于点云中其它任务(分类, 分割和配准等), 逻辑和代码都更加复杂, 但这并不是体现在网络结构上, 更多的是体现在数据增强, Anchors和GT生成, 单帧推理等。点云检测, 相比于2D图像检测任务, 不同的是坐标系变换, 数据增强(碰撞检测, 点是否在立方体判断等), 斜长方体框IoU的计算等; 评估方式因为考虑到DontCare, difficulty等, 也更加复杂一些.初次接触基于KITTI的3D检测, 如有理解错误的, 还请指正; 内容太多了, 如有遗漏, 待以后补充。 审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 可视化
    +关注

    关注

    1

    文章

    1318

    浏览量

    22602
  • 数据集
    +关注

    关注

    4

    文章

    1230

    浏览量

    26047
  • 深度学习
    +关注

    关注

    73

    文章

    5591

    浏览量

    123915

原文标题:3D点云 (Lidar)检测入门篇 : PointPillars PyTorch实现

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Vitrox的v510i系列的3D AOI光学检测设备

    V510i部署在SMT生产线的 贴片机之后、回流焊炉之前或之后 ,主要用于检测贴装好的电子元件是否存在缺陷。其核心任务是: 3D与2D复合检测 :同时利用
    的头像 发表于 12-04 09:27 133次阅读

    Vitrox 3D在线X-RAY检测技术

    中国的核心代理商,致力于将前沿的自动光学检测技术带给国内电子制造业。今天,我们将深入剖析Vitrox核心技术之一——3D在线X-RAY自动检测系统 的工作原理 一、技术背景:为何需要3D
    的头像 发表于 12-03 10:05 152次阅读

    玩转 KiCad 3D模型的使用

    “  本文将带您学习如何将 3D 模型与封装关联、文件嵌入,讲解 3D 查看器中的光线追踪,以及如何使用 CLI 生成 PCBA 的 3D 模型。  ”   在日常的 PCB 设计中,我们大部分
    的头像 发表于 09-16 19:21 1.1w次阅读
    玩转 KiCad <b class='flag-5'>3D</b>模型的使用

    iTOF技术,多样化的3D视觉应用

    动态模糊,确保高耐光性,同时输出2D(红外)和3D(深度)数据。 ◆ Testing Principles ※ 测量脉冲光的飞行时间,以检测 TOF 相机与被测物体之间的距离。
    发表于 09-05 07:24

    AD 3D封装库资料

     AD  PCB 3D封装
    发表于 08-27 16:24 2次下载

    3D激光轮廓仪可实现在线3D测量和检测

    Z-Trak™ Express 1K5 系列专为实现经济高效的在线3D测量和检测而设计,具有高速检测能力和实时处理性能。
    的头像 发表于 08-08 17:17 787次阅读
    <b class='flag-5'>3D</b>激光轮廓仪可实现在线<b class='flag-5'>3D</b>测量和<b class='flag-5'>检测</b>

    3D打印能用哪些材质?

    3D打印的材质有哪些?不同材料决定了打印效果、强度、用途乃至安全性,本文将介绍目前主流的3D打印材质,帮助你找到最适合自己需求的材料。
    的头像 发表于 07-28 10:58 2543次阅读
    <b class='flag-5'>3D</b>打印能用哪些材质?

    海伯森3D闪测传感器,工业检测领域的高精度利器

    随着信息技术的飞速进步,第四次视觉革命深度融合“人”“机”“物”,基于光学原理的3D视觉检测技术迎来爆发式发展,成为工业生产中更高效的检测利器。3D视觉技术通过非接触性、高速性、
    的头像 发表于 06-20 17:46 1305次阅读
    海伯森<b class='flag-5'>3D</b>闪测传感器,工业<b class='flag-5'>检测</b>领域的高精度利器

    3D AD库文件

    3D库文件
    发表于 05-28 13:57 6次下载

    3D闪存的制造工艺与挑战

    3D闪存有着更大容量、更低成本和更高性能的优势,本文介绍了3D闪存的制造工艺与挑战。
    的头像 发表于 04-08 14:38 1827次阅读
    <b class='flag-5'>3D</b>闪存的制造工艺与挑战

    超景深3D检测显微镜技术解析

    在现代科技领域,显微镜技术的发展始终是推动科学研究和技术进步的重要引擎。上海桐尔作为这一领域的探索者,其超景深3D检测显微镜技术的突破,为科学研究、工业检测和医疗诊断等领域带来了全新的可能性。这项
    发表于 02-25 10:51

    英伦科技裸眼3D便携屏有哪些特点?

    英伦科技裸眼3D便携屏采用了领先的光场裸眼3D技术,无需佩戴3D眼镜即可观看,给用户带来裸眼看3D视频的体验,为用户带来更加便捷和自由的视觉享受。
    的头像 发表于 02-06 14:20 808次阅读
    英伦科技裸眼<b class='flag-5'>3D</b>便携屏有哪些特点?

    SciChart 3D for WPF图表库

    SciChart 3D for WPF 是一个实时、高性能的 WPF 3D 图表库,专为金融、医疗和科学应用程序而设计。非常适合需要极致性能和丰富的交互式 3D 图表的项目。 使用我们
    的头像 发表于 01-23 13:49 1258次阅读
    SciChart <b class='flag-5'>3D</b> for WPF图表库

    腾讯混元3D AI创作引擎正式发布

    近日,腾讯公司宣布其自主研发的混元3D AI创作引擎已正式上线。这一创新性的创作工具将为用户带来前所未有的3D内容创作体验,标志着腾讯在AI技术领域的又一重大突破。 混元3D AI创作引擎凭借其强大
    的头像 发表于 01-23 10:33 988次阅读

    腾讯混元3D AI创作引擎正式上线

    近日,腾讯公司宣布其自主研发的混元3D AI创作引擎已正式上线。这一创新性的创作工具,标志着腾讯在3D内容生成领域迈出了重要一步。 混元3D AI创作引擎的核心功能极为强大,用户只需通过简单的提示词
    的头像 发表于 01-22 10:26 973次阅读