作者丨一点人工一点智能@知乎

来源丨https://zhuanlan.zhihu.com/p/502798622

编辑丨计算机视觉工坊

基于深度学习的视觉目标检测技术综述,曹家乐,李亚利,孙汉卿,谢今,黄凯奇,庞彦伟,中国图象图形学报

单目图像是三维世界中一个视锥的二维投影,丢失了深度信息。双目视觉可以根据物体投影在左右图像上的位置差异计算出视差,并在已知相机参数的情况下根据极线约束计算出像素的深度。

在得到每个像素的深度值后,我们可以逆投影得到视锥中每个像素的三维坐标。因此,双目视觉系统不仅能够预测物体的二维位置和类别信息,还能够预测物体在三维空间中的位置,实现三维目标检测,从而为自动驾驶、工业机器人等任务提供更高层次的场景信息。类似地,利用激光雷达点云检测同样能够实现三维目标检测。与双目视觉目标检测相比,激光雷达点云检测具有更高的检测精度,但是其成本相对昂贵、对雨雪中等天气变化敏感。本章主要关注双目视觉目标检测方法。近几年,受益于深度学习技术的发展,双目目标检测取得了巨大进展。

类似于单目目标检测网络,双目检测网络也可以分为基础骨干、特征融合、预测网络三部分。首先,双目检测通常采用两个权重共享的基础骨干分别得到左右目的单目特征。然后,双目检测进行特征融合,除上文提到的构建特征金字塔外,一般还需要构建双目特征。双目特征构建的方式主要包括直接串接(Concatenation)和平面扫描法(PlaneSweeping),构建的特征坐标空间属于视锥投影空间。最后,预测网络可以直接使用融合后的视锥空间特征、也可将视锥空间特征显式逆投影到三维空间进行分类和回归。

根据预测网络所使用的特征空间,本文将双目视觉目标检测方法分为两类:基于直接视锥空间的目标检测方法和基于显式逆投影空间的目标检测方法。基于直接视锥空间的检测过程一般不包含逆投影变换,直接使用基于视锥空间的双目特征进行检测;而基于显式逆投影空间的检测方法一般需要将双目特征进行逆投影变换,生成三维空间上均匀的特征,适合构造体素或转换为俯视图进行检测。

图1给出了上述两类方法发展历程,并给出了一些代表性方法。时间轴以上为基于直接视锥空间的方法,时间轴以下为基于显式逆投影空间的方法。图中箭头越长表示该方法在KITTI数据集(Geiger等,2012)中等难度车辆类别上的平均精度(Average Precision,AP)越高。

图1 基于深度学习的双目视觉目标检测方法的发展历程。箭头的长度表示方案在KITTI数据集中的车辆三维检测性能。

1 基于直接视锥空间的双目目标检测方法

基于直接视锥空间的双目目标检测不需要进行额外的坐标空间转换,只需要使用基础骨干提取的两个单目特征构造双目特征。现有方法主要通过串接和平面扫描两种方式构造视锥空间的双目特征。

1.1 基于串接构造视锥空间特征的方法

基于串接构造视锥空间特征的方法将基础骨干提取的两个单目视锥空间特征串接起来,利用卷积神经网络强大的拟合能力提取候选框或直接检测三维目标。串接操作不改变原单目特征的坐标空间,是一种简单快速的视锥空间双目特征构造方式。

图2 基于直接视锥空间的双目目标检测方法

Li等人(2019b)提出两阶段方法Stereo R-CNN。如图2(a),在第一阶段,Stereo R-CNN利用串接特征得到左右两个成对的候选框。在第二阶段,Stereo R-CNN分别提取左右目的RoI特征,再次串接特征进行回归。为了得到三维框顶点在左目RoI特征内的投影,Stereo R-CNN引入了一种简化的关键点检测网络,利用得到的关键点信息对最小化投影误差进行数值求解,从而得到质量较高的三维目标检测结果。Shi等人(2021)借鉴Stereo R-CNN双目候选框定义双目包围框,并提出类似于CenterNet(Zhou等,2019a)的单阶段无锚点框双目检测方法StereoCenterNet。StereoCenterNet在串接的双目特征上预测双目二维框和三位维框的朝向、尺寸、底面顶点等信息。预测这些信息后,StereoCenterNet根据物体遮挡程度不同采用对应的策略来进行最小化投影误差求解,提高了严重遮挡物体的检测精度。

Qin等人(2019)提出了一种基于三维锚点框的两阶段方法。首先,Qin等人将三维锚点框投影到左右目特征上,得到成对的二维候选框。然后,Qin等人认为同一目标的左右目RoI特征应该相似,提出用余弦相似性对两组特征的每个特征图重新加权,从而增强左右相似的特征图、抑制左右差异较大的特征图。最后,Qin等人使用权重调整后的特征进行分类和回归,并在视锥空间对预测结果进行监督,完成三维目标检测。

1.2 基于平面扫描构造视锥空间特征的方法

为了更好地基于左右目特征提取立体信息,双目深度估计(Chang和Chen,2018;Xu和Zhang,2020)广泛采用平面扫描法构造匹配代价体(Cost Volume)。通过逐视差平面或者逐深度平面地扫描一对二维特征,所得的三维特征即匹配代价体。每一次扫描不改变二位特征的坐标空间,所以得到的匹配代价体仍然属于视锥空间。基于平面扫描的检测方法受益于双目深度估计方法的发展,能够直接利用点云监督取得更好的匹配结果,进而学习到每个视锥空间像素是否被物体占据的信息,辅助提高三维检测性能。

Peng等人(2020)提出两阶段的方法IDA-3D(Instance-Depth-Aware3Ddetection),在双目候选框提取阶段使用了与Stereo R-CNN相同的提取方式,然后在串接后的左右目RoI特征上预测了物体二维和三维信息,没有再使用额外的关键点检测和投影误差最小化方法。此外,IDA-3D在左右目融合RoI特征上,基于平面扫描法构建了目标级的视差匹配代价体,并使用三维卷积回归出目标的整体视差,并以此求得目标整体深度作为三维目标的深度坐标。

Liu等人(2021b)提出一种高效的单阶段方法YOLOStereo3D。YOLOStereo3D基于平面扫描法高效地构建了匹配代价体金字塔,使用Ghost模块(Han等,2020)来快速地增加各级匹配代价体特征的通道数,并在最小分辨率的特征上进行全图视差估计,最后融合同分辨率的左目特征进行二维和三维目标检测。

Choe等人(2021)提出三维目标检测辅助双目视差估计的方法SOMNet(Stereo Object Matching Network)。其使用的检测方案可视为基于三维候选框的两阶段目标检测。在候选框提取阶段,SOMNet使用平面扫描法构造视锥空间匹配代价体特征,并在其上预测三维候选框。在第二阶段,SOMNet提出基于空间占用的候选框特征融合机制,通过估计的视差获得三维RoI中每个像素是否被物体占用的信息,并构建目标级注意力特征增强视锥空间RoI,使之更加聚焦于目标表面和形状。

2 基于显式逆投影空间的双目目标检测方法

在自动驾驶等场景中,感兴趣的目标(如车辆、行人、骑行者等)在三维空间中没有重叠。因此,将存在尺度变化和遮挡问题的视锥空间图像逆投影到尺度均匀、不存在重叠遮挡的三维空间,能够缓解视锥投影带来的问题。此外,考虑俯视方向上不存在遮挡问题,我们还可以把三维空间压缩至俯视二维空间,在保证性能的同时进一步简化预测网络。逆投影变换主要可以应用在输入图像、特征、候选区域三个不同环节。图3给出了三种方案的示意图。

图3 基于显式逆投影空间的双目检测

2.1 基于原始图像视差的逆投影方法

基于原始图像视差的逆投影先利用双目视差估计算法预测出逐像素的视差,将这些像素逆投影到三维空间生成点云形式,从而使用相对成熟的点云三维检测方法进行双目目标检测。我们将这种点云称为伪点云,这种双目目标检测方法称为伪雷达(Pseudo-LiDAR,简称PL)方法。如图3(a)所示,伪雷达方法级联了双目深度估计和点云三维目标检测两个模块,可以使用这两个领域的先进成果协同完成检测。

早期,研究人员先用传统方法完成三维候选框提取,然后用小规模卷积神经网络得到最终的三维检测结果。Chen等人(2015)提出3DOP(3D Object Proposal),使用已有方法(Yamaguchi等,2014)从双目图像估计出点云,然后求解马尔可夫随机场能量函数最小化问题得到三维候选框,最后利用卷积神经网络对候选框进行优化和评分。在此基础上,Pham和Jeon(2017)提出DeepStereoOP网络结合图像和深度特征对候选框进行更准确地排序。

Xu和Chen(2018)提出MLF,是首个使用深度学习技术完成全部预测过程的双目视觉目标检测方法。MLF使用DispNet(Mayer等,2016)从双目图像估计视差图,并逆投影成为深度图和点云,然后使用二维候选框和点云共同预测物体三维信息。作者对比了双目和单目输入对三维目标检测的影响,指出双目信息能够明显提高三维检测性能。

Wang等人(2019d)将深度估计和点云三维目标检测方法结合起来,先根据深度生成伪点云,再利用基于点云的检测方法检测三维目标。该方法利用了深度估计和点云三维目标检测领域的先进成果,通过级联的方式完成双目三维目标检测任务,性能提升十分明显。但是,这种级联的方式容易造成误差累积。针对这一问题,You等人(2019)通过利用真实点云校正伪点云。Li等人(2020a)利用深度估计的置信度来引导深度估计网络,并加上额外的语义分割监督,显著提高了图像中前景深度估计的精度。Peng等人(2022)提出基于两分支网络的方法SIDE(Structure-aware Instance Depth Estimation)。一个分支进行基于伪雷达的双目目标检测。另一个分支进行基于视锥空间特征的目标级深度估计,取代点云监督。基于上述两分支结构,SIDE在不需要额外的点云监督的条件下提高了双目三维目标检测性能。上述伪雷达方法需要单独训练深度估计模块和三维目标检测模块,无法进行端到端训练。Qian等人(2020b)通过可微的采样和量化模块设计出端到端训练的伪雷达方法,称为PL-E2E(End-to-EndPL)。

2.2 基于特征体的逆投影方法

上述基于原始图像视差的方法生成伪点云时丢弃了图像提供的颜色和纹理信息,而且没有利用视差估计网络的中间特征。基于特征体的逆投影方法则复用了这些图像特征。具体地,如图3(b)所示,基于特征体逆投影的双目目标检测方法通过插值和采样的方式将平面扫描得到的匹配代价体变换到三维空间,利用了图像特征提供的颜色和纹理信息,实现了端到端训练的双目目标检测。

Chen等人(2020c)提出一种单阶段的双目三维目标检测方法DSGN(Deep Stereo Geometry Network),使用PSMNet(Pyramid Stereo Matching Network)(Chang和Chen,2018)提取匹配代价体并预测深度图,将匹配代价体逆投影得到基于三维空间的几何特征体,并通过三维卷积将其压缩成为俯视图,最后在俯视图上直接进行分类与回归。Guo等人(2021b)认为,双目视觉中经过特征体逆变换得到的三维空间特征应当与点云检测中的三维空间体素特征相似,同时二者的俯视图特征也应当相似。基于此,Guo等人提出LIGA-Stereo(LiDAR Geometry Aware representations for Stereo-based 3Ddetector),设计了一种类似于知识蒸馏的技术,引导双目视觉目标检测的特征逼近性能更好的点云三维目标检测特征。Wang等人(2021d)提出PLUME(Pseudo LiDAR feature volUME),将深度估计和三维目标检测两个任务所使用的特征统一到伪雷达特征空间,从而将原本需要两路神经网络完成的两个任务合并为单路网络,提高了检测速度。

Li等人(2021a)提出RTS3D(Real-timeStereo 3D Detection),以双目图像和单目三维检测的粗糙三维框作为输入,构造了一个面向感兴趣区域的特征一致性嵌入空间(Feature-Consistency Embedding Space,FCE空间)进行三维目标检测,并使用迭代的方式优化检测结果。Gao等人(2021a)改进了RTS3D的采样方式,提出基于目标形状先验的非均匀采样获取更多的物体表面和周围信息,并设计了一种利用抽象语义信息增强FCE空间特征。

2.3 基于候选像素视差的逆投影方法

基于原始图像视差的逆投影方法生成了全空间的点云,基于特征体的逆投影方法生成了全空间的三维特征。因此,二者逆投影得到的三维空间包含了前景目标部分和背景部分。基于候选像素视差的逆投影方法近聚焦感兴趣目标区域的三维空间(如图3(c)所示),先利用实例分割等方案得到目标的前景像素,然后生成仅含前景区域的三维空间。这种逆投影方法生成的三维空间有效体素较少,可以在有限的检测时间内更灵活地控制特征的空间分辨率;聚焦于前景目标,能够避免不准确的深度估计带来的性能下降。

第一种逆投影策略是去除背景点云、仅保留前景点云。本文称为前景共享的三维空间策略。Königshof等人(2019)提出一种基于俯视网格图的方法。该方法先使用双目图像预测深度图、二维语义分割、二维包围框得到物体前景部分的深度信息,然后使用深度优先搜索(Depth First Search,简称DFS)求解三维空间的连通域,最后在前景共享的三维空间俯视图上回归目标的三维信息。Pon等人(2020)认为已有的深度估计方法得到的结果在目标边界和形状上并不准确,对三维目标检测有害无益。基于此,Pon等人提出面向目标(Object-Centric,简称OC)的伪雷达方法,通过增加实例分割模块提取前景共享的三维空间伪点云。

另外一种逆投影策略是为每个实例生成互相独立的三维子空间,即每个三维子空间仅检测单个目标。本文称为实例独立的三维子空间。Xu等人(2020)提出ZoomNet,利用二维实例分割和双目深度估计生成基于伪点云的实例独立子空间。图像中,小尺度目标覆盖的像素点比较少,生成点云图比较稀疏,不利于三维检测。为解决该问题,ZoomNet使用汽车通用3D模型自适应地生成密度一致的子空间点云,提升小尺度目标的检测效果。Sun等人(2020a)提出Disp R-CNN,基于候选区域逆投影生成实例独立子空间,并使用自动生成实例3D模型,避免手工标注汽车模型。

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

干货下载与学习

后台回复:巴塞罗自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件

后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf

后台回复:3D视觉课程,即可学习3D视觉领域精品课程

计算机视觉工坊精品课程官网:3dcver.com

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.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

15.国内首个3D缺陷检测教程:理论、源码与实战

重磅!计算机视觉工坊-学习交流群已成立

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

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

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

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

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

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

一文详解双目视觉目标检测相关推荐

  1. CV 面试问题详解宝典—目标检测篇

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨那年当上博士前 来源丨AI约读社 编辑丨极市平台 导读 面试知识点总结 序言 目标检测篇面试知识 ...

  2. 详解多级目标检测体系结构Cascade RCNN

    文章目录 0. 前言 0.1 简易版理解 1. 简单回顾R-CNN结构 1.1 RPN网络[4] 1.1.1. RPN的意义 1.1.2. RPN的运作机制 1.1.3 3. RPN的整个流程回顾 1 ...

  3. 一文详解车道线检测技术分析

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 针对车道线检测的任务,我们需要弄清楚几个问题: 1.车道线的表示形式? 输出类型:掩码/点集/矢量线条 ...

  4. 一文详解回环检测与重定位

    标题:VINS-Mono代码解读-回环检测与重定位 pose graph loop closing 作者:Manii 来源:https://blog.csdn.net/qq_41839222/cate ...

  5. fasterrcnn tensorflow代码详解_pytorch目标检测代码的一些bug调试

    这几天一直在做调包侠,是时候来总结总结了.记录一些我所遇到的不常见的问题. faster rcnn: 参考代码: jwyang/faster-rcnn.pytorch​github.com pytor ...

  6. 一文详解 YOLO 2 与 YOLO 9000 目标检测系统

    一文详解 YOLO 2 与 YOLO 9000 目标检测系统 from 雷锋网 雷锋网 AI 科技评论按:YOLO 是 Joseph Redmon 和 Ali Farhadi 等人于 2015 年提出 ...

  7. 一文详解VarScan肿瘤体细胞突变检测的的安装和实践

    ​目录 VarScan 简介 VarScan 安装和使用说明:安装.说明.配置.运行 VarScan 案例实战:数据下载.配置.运行.输出 使用sixbox快速运行 hello,大家好,今天为大家带来 ...

  8. 【卷积神经网络结构专题】一文详解AlexNet(附代码实现)

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]本文是卷积神经网络结构系列专题第二篇文章,前面我们已经介绍了第一个真正意义 ...

  9. 一文详解自动驾驶的动态驾驶任务(DDT) | 自动驾驶系列

    文章版权所有,未经授权请勿转载或使用 本系列上篇文章<一文详解自动驾驶的运行设计域(ODD)>解读了什么是自动驾驶ODD,本篇文章依据SAE J3016详细解读自动驾驶DDT.DDT fa ...

  10. yolov系列-yolov1-论文详解

    yolov系列-yolov1-论文详解 @[TOC](yolov系列-yolov1-论文详解) yolov1相关资料 yolov1论文详解 算法原理 yolov1优缺点 yolov1相关资料 yolo ...

最新文章

  1. java 去掉 时期中的图片,去除图片浅色背景(Java 实现)
  2. UIScollerViewUIPageControl的一些使用方法
  3. PHP基础3_数组,循环及函数
  4. redis核心技术与实战(三) 性能篇
  5. SDOI2017R1(姑且是游记)
  6. java中scanner类_Java里Scanner 类
  7. iframe框架初识(一)
  8. MATLAB 时间序列预测算法(有代码)
  9. 微星z370安装linux系统,微星z370主板装win7及BIOS设置详细教程
  10. 室内设计数据手册pdf_室内设计制图讲座 PDF扫描版[25MB]
  11. UE4编辑器工具——制作一个批量改名的小工具
  12. 微信小程序图片自动播放功能
  13. 对《爱、死亡和机器人》这篇文章的浅思
  14. 【C++基础系列】Vector容器
  15. Pico neo3最新版SDK导入Unity详细教程(包含眼动)
  16. Office Word和Excel的工具栏显示不全,只显示文件、绘图和帮助的解决办法
  17. 阿里微博双双IPO 最大受益者是新浪
  18. C语言绘图示例-商标徽标
  19. android服务程序开发,android 服务(service)开发
  20. 自强不息nbsp;回报社会nbsp;——记残疾人电脑…

热门文章

  1. javaScript函数封装
  2. S20_DAY20--课堂笔记
  3. 使用C#向ACCESS中插入数据
  4. 类数组变量定义与初始化
  5. vue路由(router)设置:父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失
  6. Thingsboard 3.1.0 - windows下安装、发送mqtt、仪表板显示
  7. jQuery CheckBoxList 全选 反选
  8. Linux下编译googletest
  9. STL 容器迭代器失效总结(超级详细)
  10. 自定义简单控件之标题控件