点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

作者丨爱做菜的炼丹师

来源丨CV研习社

文章导读

单目的3D目标检测近几年一直是研究的热点,虽然往算法中添加先验知识,能够一定程度的提升准确率,但是也增加了获取标签的难度和算法设计的复杂性。本文介绍一种端到端且轻量化的单目3D检测技术——基于关键点获取目标在图像空间的透视投影位置。

聊聊单目的3D目标检测方法

三维目标检测是自动驾驶领域中常见的视觉任务,感知模块需要将周围的环境信息,包括目标的三维坐标、朝向角、类别、速度、加速度等输出给规控模块。

那么如何得到一个物体的三维信息呢?我们可以从KITTI算法测评数据集中浏览一些主流方法:

从上图中可以发现,mAP靠前的算法还是以激光雷达的感知为主,毕竟此类主动触发式传感器能够提高准确的距离信息。但问题是20万以下的车型很难负担得起激光雷达的高额成本,所以单目相机的3D检测逐渐成为主要的研究方向,图像中的3D外接框由于缺少深度信息,其三维空间中的8个顶点是通过透视投影映射到图像空间的,如下图所示:

单目3D目标检测根据采用的方法大致分成以下四类:

1. 基于现在的二维检测算法,在目标的ROI中添加额外的回归分支预测三维参数。但是这种直接回归的方法由于搜索空间过大很难取得好的效果。如下图所示:

使用CNN检测2D的外接框以及图像中的朝向角,然后利用相关的引导信息得到粗略的3D检测框。然后再对粗略的检测框进行提炼,得到最终的检测框。

2.利用2D外接框和3D目标属性作为监督数据。将投影几何引入作为一种约束用深度回归网络去预测3D信息,但是2D外接框只能提供四个约束,这就要求BBox的预测相当精准。如下图所示:

使用CNN提取特征估计2D外接框中的尺寸和方向,然后采用最小二乘求解基于相机投影矩阵解决2D到3D逆几何映射问题来获得物体的位置。

这个约束依据某个3D点会被投影到2D边界框的边缘,但是相应关系和投影的具体位置存在多种可能性,所以只能提供四个约束不足以在9个参数(8个顶点+1个中心)中进行完整的3D表示,需要估计其他先验信息。

同时2D框的偏移也会带有约束结果的不准确性,为降低2D框的预测偏差此类方法大多通过两阶段检测来获得精确的2D框,这样就很难保证实时性。

3. 利用复杂特征比如语义分割、CAD模型、对象轮廓、深度图等,在多阶段融合模块中选择最佳建议计算目标的3D外接框。但是训练这些网络大多也需要额外的标注,同时在推理过程中也会耗费更多的资源。如下图所示:

此类方法从车辆关键点推断出完整形状,可以提高遮挡物和截断物的检测精度。一般使用线框模板(CAD模型)来表示常规形状的车辆。

但是为了训练关键点检测网络,需要额外标注相关数据,甚至需要提供深度图来增强检测能力。

4.参照人体姿态估计中的关键点检测技术,对车辆行人等道路障碍物进行关键点提取和组合,最后再通过相机的内外参进行图像的透视约束。如下图所示:

此类将3D检测重新构造为稀疏关键点检测任务,无需基于现成的2D检测器或其他数据生成器来预测3D框,而是建立一个网络预测3D框的8个顶点和1个中心投影的9个2D关键点,同时将重投影误差最小化以找到最佳结果 。

基于关键点的3D目标检测分析

几何信息融入深度学习方法的一个局限性在于2D外接框的四条边所能提供的约束有限,2D框的4条边只提供恢复3D框的4个约束,而3D框的顶点可能与2D外接框任何一条边都有关。而且对2D框的过度依赖使得当2D框有轻微的错误会对3D框的预测效果有很大影响。

但是如果采用提取关键点的方法对遮挡和截断的物体就能具有良好的特性,试想一下即使检测出几个特征点,其它信息的也可以根据物体的表示模型推断出来。

近几年来由于anchor-free技术的日渐成熟,基于关键点检测的方法越来越受到工业界追捧。相比于以前采用2D检测器提供的ROI来回归顶点坐标,两阶段的检测算法限制了推理速度,在一些需要算法快速相应的场景中已经逐渐销声匿迹。关键点检测较早的应用出现在人脸识别或者姿态估计中,从这些应用中我们了解到直接回归特征点一般没有热度图的精度高。

因此拟采用单阶段生成热度图的方法,考虑只预测3D外接框的8个顶点和1个中心点。不过考虑到9个特征点尽管可以提供18个约束,但尺度还没办法确定,所以需要一些额外的先验信息。

根据上面的分析也就和RTM3D的主要思想基本吻合:建立全卷积网络预测目标的3D信息,包括目标的9个关键点投影(1个中心点,8个顶点),9个关键点提供对3D框的18个几何约束。8个顶点和1个中心的关系通过建模来解决关键点聚集和顶点的顺序问题。

同时为了解决搜索空间较大的问题,该算法利用3D外接框顶点到2D外接框边缘之间的几何约束来修正并预测目标参数,得到更加精确的9个空间点。

算法框架可以看成2步:

第一步:输入单RGB图像,输出关键点的热度图,顶点热度图和顶点坐标,用于预测由8个顶点和3D对象的中心点在图像空间中投影的序数关键点;

第二步:使用透视投影的几何约束将预测的3D边界框估计重新构造为使能量函数最小化的问题,来修正空间点坐标;

特征提取部分

针对输入图像使用因子S=4进行下采样,源码中提供了ResNet-18和DLA-34两个网络进行提取特征,编码环节进行5次采样,然后通过三次双线性插值和1×1卷积层对瓶颈进行了三次上采样。引入FPN将低级特征图和高级特征图连接用于整合多尺度特征,同时添加一个1×1的卷积层以减少信道尺寸。

关键点融合部分

图像中的关键点的大小基本不会随着目标的远近产生太大的变化。所以传统的特征金字塔网络并不适用于关键点检测。这里使用关键点特征金字塔网络来检测点向空间中的尺度不变性。

具体做法如下:假设有F尺度的特征图,可以先将每个尺度f还原到最大尺度,然后通过softmax运算生成轻权重以表示每个尺度的重要性。通过线性加权和获得最终的尺度空间得分图(有点类似与注意力机制)。

多任务检测部分

检测头由三个基本组件和六个可选组件组成,在网络训练时可以选择输出特征图的个数,附加的可选项越多可以达到精度上限越高,但是训练时任务头之间的权衡也需要仔细调节。RTM3D算法中将一个关键点作为连接所有功能的主要中心,由于在截断的情况下对象的三维投影点可能超过图像边界不利于检测,所以最终选择二维框的中心点作为主点。

如何检测目标的关键点?

检测图像中的某一点,我们可能会想到这么几种方式:

  1. 传统Harris等算子提取角点

  2. 区域生长等角点检测算法

  3. 直接在图像中回归坐标点

  4. 高斯分布角点区域进行分割

方法1和2是在图像处理中最常见的提取角点手段,如下图所示:在做相机标定时提取棋盘格的角点坐标是必不可少的一项工作。

那么在深度学习蓬勃发展的今天,如何在神经网络中得到角点或者关键点坐标呢?

方法3是最直接也最容易想到的,有监督的学习要么是分类任务要么是回归任务,在图像中定位关键点的位置好像和坐标回归的关系更大一些哦~~~但是在整张图片中回归几个坐标点总感觉比较困难,试想一副720P分辨率的图片包括100万个像素的,回归几个或者几十个像素点坐标难度可想而知。实验证明用神经网络直接回归点的二维坐标是很难收敛的,这是一个极其非线性的过程,而且损失函数对权重的约束会比较弱。

方法4在关键点上附加了二维高斯分布,因为关键点附近的点其实也很像关键点,如果直接将其标为负样本,可能给神经网络的训练带来干扰噪声(人工打标注也是存在偏差的),将其用高斯函数做一个软标签能够促使网络更好的收敛。并且高斯分布也能够给训练增加方向性引导,距离关键点越近真值概率越大,这样网络能有方向的去快速到达关键点。

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

关键点提取:单目3D检测的点睛之笔相关推荐

  1. AutoShape:实时单目3D检测网络(ICCV2021)

    作者丨柒柒@知乎 来源丨https://zhuanlan.zhihu.com/p/404683961 编辑丨3D视觉工坊 论文标题:AutoShape: Real-Time Shape-Aware M ...

  2. MonoDETR:用于单目3D检测的深度感知transformer(CVPR2022)

    作者丨zyrant@知乎 来源丨https://zhuanlan.zhihu.com/p/508682621 编辑丨3D视觉工坊 -- 2022.4.29 by 周报拓展. --CVPR还有一篇Mon ...

  3. GUPNet:基于几何不确定性映射的单目3D检测网络(ICCV2021)

    作者丨柒柒@知乎 来源丨https://zhuanlan.zhihu.com/p/397105796 编辑丨3D视觉工坊 论文标题:Geometry Uncertainty Projection Ne ...

  4. 如何在mmdetection3d下批量的预测单目3d检测结果并保存

    这是为了能通过pycharm功能在服务器下可以看见图片并成批量保存做的笔记,本人不是太会说明,所以代码解释如下 from mmdet3d.apis import init_model, inferen ...

  5. 【单目3D目标检测】MonoFlex论文精读与代码解析

    文章目录 Preface Abstract Contributions Pipeline Problem Definition Decoupled Representations of Objects ...

  6. DID-M3D | 用于单目3D目标检测的解耦实例深度(ECCV2022)

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 后台回复[多模态综述]获取论文! 后台回复[ECCV2022]获取ECCV2022所有自动驾驶方向论文! 后台 ...

  7. 【单目3D目标检测】SMOKE论文解析与代码复现

    文章目录 yacs Introduction Usage SMOKE Preface Abstract Contributions Pipeline Backbone Head Branch Orie ...

  8. 最新发布!SMOKE 单目3D目标检测,代码开源!

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者| 黎国溥 编辑| 3D视觉开发者社区 SMOKE是一个one-stage的单目视觉障碍物检测模型 ...

  9. AutoShape:实时形状感知的单目3D目标检测(ICCV2021)

    作者丨柒柒@知乎 来源丨https://zhuanlan.zhihu.com/p/404683961 编辑丨3D视觉工坊 论文标题:AutoShape: Real-Time Shape-Aware M ...

  10. 浅述单目3D目标检测

    作者丨慕弋云子@知乎 来源丨https://zhuanlan.zhihu.com/p/432135656 编辑丨3D视觉工坊 三维目标检测是一个相对上游.比较基础却又新兴的任务领域.得益于自动驾驶和2 ...

最新文章

  1. 老师学python可以干嘛-学 Python 都用来干嘛的?
  2. 谈谈重要的TCP、UDP
  3. hadoop fs 运维常用的几个命令
  4. 【英语学习】【Level 07】U08 Old Stories L3 Lights, camera, action!
  5. Game Center Achievements and Leaderboards part 1 转
  6. *推荐* 杏雨梨云U盘系统2011 全面加速 [2010.12.28]
  7. Java EE第七周
  8. Redis实战(11)高级特性(3)持久化
  9. PHP数组键不存在给默认值
  10. faster RCNN
  11. 在linux系统下忘记了root密码,教你在Linux系统中解决忘记root口令密码的方法
  12. python中实现如何强制删除非空文件夹
  13. 用禅道编写测试用例(详细)
  14. 【EMNLP2020】忒修斯之船启发下的知识蒸馏新思路 - 微软研究院
  15. java 对战平台-魔兽版
  16. linux 7进入目录的命令,centos7目录统计之du命令
  17. Excel学习日记:L1-excel入门
  18. Response学习
  19. Fiddler中篡改后端返回数据
  20. 谈谈字符集和字符编码

热门文章

  1. BootStrap 点击展示气泡框
  2. 技术保障+配套体系,京东云掐准智能医疗的“脉象”
  3. LimeSDR 中文教程 (三)
  4. python 登录新浪微博_Python模拟新浪微博登录
  5. 无人车之美——技术要点速览
  6. 中国计算机学会推荐国际学术会议和期刊目录——A、B、C类期刊会议分级信息
  7. mysql清理碎片_清除MySQL表空间碎片详细方法
  8. PR菜鸟教程:如何剪切掉其中不需要的片段
  9. 几何视角下的线性代数(3)---基与特征
  10. PHP计算比较两段文字内容的重复率