【单目3D目标检测】项目实战-道路车辆/行人3D目标检测

任务定义

输入:单帧RGB图像
输出:图中目标的3D包围框 ( x , y , z , h , w , l , r y ) (x,y,z,h,w,l,ry) (x,y,z,h,w,l,ry)

x,y,z :物体中心点的坐标
h,w,l :物体维度(长、宽、高)
ry :偏航角

传统激光雷达3D检测模型 VS 单目3D检测模型

传统依靠激光雷达的3D检测方法存在传感器昂贵难以大规模广泛部署,点云缺失纹理信息,分辨率低等问题。而建立单目3D检测模型,有效的利用了图像相对于点云的各个优势,降低产业落地门槛,更容易部署到需要的各个场景。

单目3D目标检测优点

1 传感器偏移
2 丰富的纹理信息
3 分辨率高
在这里插入图片描述

单目3D目标检测难点

1 深度信息缺失,由 2D 图像预测 3D 位置困难
2 相机传感器敏感,受环境影响(夜晚、雨天)等较大
3 图像层面,遮挡、截断等问题严重影响感知精度

在这里插入图片描述

数据集

KITTI 数据集是一个用于自动驾驶场景下的计算机视觉算法测评数据集,由德国卡尔斯鲁厄理工学院(KIT)和丰田工业大学芝加哥分校(TTIC)共同创立。包含场景有市区、乡村和高速公路。本案例使用公开的 KITTI 数据集用于训练测试,共有 14999 张图片,分为训练集 3712 张,验证集 3769 张,测试集 7518 张。示例图片如下图所示:
在这里插入图片描述
公开KITTI数据集

KITTI数据集标注及网络输出形式

整个数据集包含图片 images,标签 labels 和相机参数 calib,每个标签文件种包含以下字段:

type—物体类别
truncated—是否截断
occluded—是否遮挡
alpha—观测角
bbox—障碍物2D框
dimension—障碍物的3D大小
location—障碍物的3D底面中心点位置
rotation_y—障碍物的朝向角
score—障碍物预测的置信度

最终数据集文件组织结构为:
kitti
└── training
├── calib
├── image_2
└── label_2

KITTI评价指标

在这里插入图片描述
纵向:虽然最终关注并使用的是3D检测框,但同时会反馈 2D detection 和 3D BEV检测框的定位精度。

横向:根据所标注包围框是否被遮挡、遮挡程度、框的大小将数据集分为Easy,Mod,Hard。

3D detection、2D detection 和 3D BEV 指标计算方式都是AP(根据PR曲线计算)。KITTI主流的评价标准是R11和R40,两者区别是采样点的不同。R40效果更好,更能反映评测的精准度。

模型

整体框架

在这里插入图片描述

数据过滤

目的:平衡前后背景,保证训练的稳定性。

在这里插入图片描述
vis可见程度:遮挡程度分为0,1,2,3四个级别,如果图片遮挡级别是2,3,考虑放弃使用该图片样本,因为可见度太低会影响训练的稳定性。

Bbox大小:Bbox过大过小都将其考虑为困难样本,影响训练的稳定性。

类别:只关注car,pedestrian,cyclist三类。

图片标签:无标签图片过滤掉。

Anchor

在这里插入图片描述

2D Anchor

1 (min_gt_h, max_gt_h) 间定义11个采样点,总共有12中尺度。
2 横纵比定义三种 [0.5, 1, 2]

每个点定义12种尺度 * 3种比例共36个anchor。

在这里插入图片描述

3D anchor

对于3D anchor,不会直接预测 ( x , y , z ) (x,y,z) (x,y,z)的值,因为从2D维度预测3D维度真实距离是比较困难的,所以需要一个统计先验量。

相机内参P · 相机3D位置信息 = 2D图像中位置信息

将3D问题转换为2D问题:
只需预测 x,y 在图像上相对anchor点的偏移offset。对于z(即depth),统计一个先验量。

如何统计该先验量?

对于每个2D anchor,知道其长宽,索引数据集中所有跟这个长宽计算2D IoU,找到最匹配的一个集合,在该集合中算出 z 对应的平均值作为anchor的先验量。

对于网络模型来说,只需预测该先验量的offset,大大减少了预测真实世界的负担。其他三个维度 ( w , h , l ) (w,h,l) (w,h,l) θ \theta θ 也是类似操作。

3D 7个自由度中的旋转角 ry,是在物体坐标系或者BEV视角下,车辆的偏航角。但是对于单目图像检测任务来说,直接预测BEV视角下的偏航角很困难,所以一般会将偏航角转换为相机的observation angle视场角(从相机光心看过去与车辆的夹角),这样操作使得网络更容易学习。

数据增强

单目3D目标检测任务中数据增强的研究比较少,2D图像变换有时需要改变3D标签,这种改变有时很困难,这里选用两种:Flip 和 Resize(fix resolution)。
在这里插入图片描述
Resize 使用 fix resolution 是为了不改变图片的 focal length,这样横纵比例是对应的,所以只需要把 focal length 做过滤变换或直接把 ( x , y , z ) (x,y,z) (x,y,z)坐标进行过滤变换即可。

Backbone

在这里插入图片描述

后处理优化

使用 3D、2D IoU 投影做后处理变换。

2D目标检测任务的难度要远远小于单目3D目标检测,2D目标检测的精度要远远大于单目3D目标检测。所以可以使用2D目标检测任务的输出作为伪基T,用该伪基T矫正3D预测的一些属性。具体矫正做法是:把单目3D目标检测任务得到的7个自由度先规划成3D bounding box,也就是物体在三维坐标系中的8个顶点,然后通过相机内参把8个顶点投影到图像上。如图:计算橙色3D bbox和绿色2D box的IoU,通过不断的调整某个3D属性让IoU达到最小,以此修正3D预测的属性。

单目3D目标检测任务中,有一些先验量,最不准的是朝向角和深度。所以,主要矫正的也是朝向角和深度。

如图所示为后处理优化效果
在这里插入图片描述
在这里插入图片描述

模型部署

项目地址

  • 1
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值