目标检测中由2D检测矩形框到3D检测框的估计算法、3D检测框绘制

1. 3D Bounding Box Estimation Using Deep Learning and Geometry

1.1 简介

time:2017


提出了一种三维目标检测和姿态估计的方法。与当前只有回归对象的三维方向技术相比,我们的方法首先回归使用深度卷积神经网络相对稳定的三维对象属性,然后结合这些估计与几何约束提供的2维对象边界框产生一个完整的3d边界框。第一个网络输出使用一种新的混合离散-连续损失来估计三维目标方向,它明显优于L2损失。第二个输出回归了三维对象维度,与备选方案相比,它们的方差相对较小,并且通常可以对许多对象类型进行预测。这些估计,结合二维边界框对平移施加的几何约束,使我们能够恢复一个稳定和准确的三维物体姿态。


源码:https://github.com/smallcorgi/3D-Deepbox
论文:https://arxiv.org/pdf/1612.00496.pdf
效果如下:

我们的论文的主要贡献包括:
1)一种方法来估计一个物体的完整的三维姿态和尺寸,使用射影几何提供的约束,并使用深度CNN估计物体的方向和大小回归。与其他方法相比,我们的方法不需要任何预处理阶段或3D对象模型。
2)一种新的离散-连续CNN架构,称为MultiBin回归,用于估计目标的方向。
3)评估KITTI数据集的3D盒子的三个新指标:到盒子中心的距离、到最近边界盒面中心的距离以及整个边界盒与地面真实盒的重叠,使用Union(3D IoU)得分测量。
4)一个实验评估证明了我们的方法对KITTI汽车的有效性,这也说明了在我们的三维姿态估计框架内的回归参数的具体选择的重要性。
5)对Pascal3D+数据集的视点评价。

1.2 3D边界框估计

1.三维边界框描述:立体框中心坐标center,尺寸(dx,dy,xz),旋转角度R(θ, φ, α) , 由此立体框的每个顶点都可以推出
2.给定物体在相机坐标系中的姿态Xo = [X, Y, Z, 1]',以及相机的本质矩阵K,外参矩阵R,t
3.约束条件:2D边界框的每一边与至少一个3D框角的投影重叠

4.主要影响因素:围绕每个轴的方向(θ,φ,α),立体框尺寸选择

5.利用CNN和2D检测盒的三维盒的回归尺寸和方向,我们可以求解对方程2中初始2D检测盒约束的重投影误差最小的平移T。
2D检测盒的每一侧都可以对应于3D检测盒的8个角中的任何一个,从而产生84个=4096配置,可以假设有的竖直的边框总是直立的,可将配置减少到1024个,并且对于KITTI数据集可以设俯仰角和滚动角为零,可将配置减少到64个

1.3 3D框/盒参数的CNN回归

1.考虑仅由方位角θ(偏角)参数化的旋转R(θ),仅从检测窗口裁剪的内容来估计相机参考帧中的全局对象方向R∈SO 是不可能的,因为还需要裁剪在图像平面内的位置。

2.提出了用于定位和维数估计的多本估计的体系结构。它由三个分支组成。左边的分支用于估计感兴趣的对象的维度。其他分支分别用于计算每个箱子的置信度Lconf,也可以计算每个箱子的cos(∆θ)和sin(∆θ)。
3.Lconf为每个箱子的置信度的软最大损失,Lloc是指覆盖地面真是叫的每个箱子中,估计角度和地面真实角之间的差异,Ldims作为维度估计,可以估计相对于训练数据集上计算的平均参数值得残差,所有的分支均来自相同的共享卷积特征,总损失L是上述的加权组合。

1.4 实验结果

方向估计模型的学习注意的可视化。热图显示了对方向估计贡献最大的图像区域。该网络负责处理汽车的某些有意义的部件,如轮胎、车灯和侧镜。

2. Automatic Camera Calibration for Traffic Understanding

论文:http://www.fit.vutbr.cz/research/groups/graph/pclines/papers/2014-BMVC-Dubska-VehicleBoxes-EA.pdf
代码:引用工程:https://github.com/kushagramahajan/DynamicTrafficLight


2.1 简介

time:2014


本文提出了一种交通监控摄像头全自动校准的方法。该方法允许在没有任何用户输入的情况下校准相机,包括比例,只需要几分钟的输入监控视频。目标应用包括速度测量、车辆尺寸测量、车辆分类等。

2.2 Step1:通过确定定义车辆流的三个消失点来进行摄像机校准

消失点检测方法采用基于平行坐标的Hough变换,通过线的分段线性映射将投影平面映射到有限空间,即菱形空间。

> 如图所示,(左)用于估计第一VP的跟踪点。表现出显著运动的点(绿色)。(右)第二个消失点的累积。只有没有垂直或朝向第一个VP方向(绿色)的边缘被累积到金刚石空间

2.3 Step2:构建车辆的三维边界箱,并按比例进行测量

  • [1] 假设车辆的轮廓可以通过背景建模和前景检测来提取,并且感兴趣的车辆正在从/向第一个消失点移动。三维边界盒是用从消失点到斑点边界的切线构造的,如下图所示:

  • [2] 有了边界框投影,可以直接计算三维边界框尺寸(和在场景中的位置)到精确的比例。通过拟合已知维度的统计数据和来自交通量的测量数据,我们得到了场景的规模。

  • 如下图所示为场景比例尺的计算。(左)每个维度的中位数(绿色条)可以在测量数据中找到。(中)尺度是根据已知的汽车尺寸的中位数分别得出的,最终的尺度是由这三个尺度的最小值。(右)缩放后车辆的相对尺寸(黄色)和实际尺寸的例子,单位为米。

2.4 Step3:使用三维边界框的尺寸来校准场景尺度

  • [1] 摄像机的方向和已知的距离可以测量车辆的速度/大小或场景中的距离。我们测量了几个在路面上的距离和用我们的方法评估测量的误差。Zhang[5]也提供了类似的评估,他报告测量的平均误差“小于10%”。我们的平均误差是1.9%,最坏的情况下是5.6%。

  • 绝对距离测量的百分比误差。误差计算为|lm−lgt|/lgt∗100%,其中lgt是地面真值,lm是由该算法测量的距离。对于每个距离,我们计算平均误差和最坏误差。标记为“#”的行中的数字是给定长度的测量值(来自5个视频),结果如下表:

  • [2]在测量车速时,令相机直接位于道路上的边界框的一个角落。视频中的车辆被跟踪,其速度在整个直线部分进行评估。车辆的平均速度为75公里小时,因此2%的误差导致±1.5公里小时的偏差。Dailey[1]也提供了类似的评估,他使用汽车长度分布进行尺度计算,平均偏差达到6.4公里小时,或[4],其算法精度为3公里小时,但需要手动的距离测量来获得尺度。

  • 速度测量中的百分比误差。为了获得地面真实值,我们驾驶带有巡航控制的汽车,并从GPS中获得速度。误差评估为|sm−sgt|/sgt∗100%,其中sgt是来自GPS的速度,sm是由现有算法计算的速度。括号内的数字表示对给定视频的评估测量值的数量。

3. BoxCars: Improving Fine-Grained Recognition of Vehicles using 3D Bounding Boxes in Traffic Surveillance

3.1 简介

time:2018
代码:https://github.com/JakubSochor/BoxCars
论文:https://arxiv.org/pdf/1703.00686.pdf


在本文中,我们主要关注在交通监控应用中的车辆的细粒度识别。我们提出了一种与细粒度识别的最新进展(自动零件发现,双线性池化)相正交的方法。此外,与其他专注于车辆细粒度识别的方法相比,我们并不局限于前/后视角,而是允许从任何角度看到车辆。

该方法主要在刚讲述的第2篇论文Automatic Camera Calibration for Traffic Understanding的基础上进行了改进和创新:采用全卷积编码-解码器网络检测车辆的轮廓、使用ResNet50对车辆轮廓的消失点进行估计,然后将其在交通监控时应用于车辆的细粒度识别中,偏向于应用

3.2 准备工作

  • [1] 3D框及解包装
  • [2] 数据标准化和辅助数据输入到网络的例子。从左到右:带有二维边界框的车辆、计算的三维边界框、车辆上的向量编码视点(视图)、车辆的解包图像(解包)和栅格化的三维边界框(Rast)。
  • [3] 图像增强:颜色增强与遮挡

3.3 从单幅图像估计三维边界框

论文感觉看起来好乱,总结下大体意思是既支持直接读取三维框,也支持对单幅图像从头开始估计三维框,估计方法如下:

  • [1] 三维边界框的估计值。从左到右:具有车辆二维边界框的图像,轮廓目标检测器[67]的输出,我们构建的轮廓,对消失点的估计方向,地面真实值(绿色)和估计的(红色)三维边界框。

为了估计车辆轮廓,我们使用Yang等人设计的全卷积编码-解码器网络进行一般的目标轮廓检测,并对每个图像像素进行车辆轮廓概率的掩模。为了获得最终的轮廓,我们从二维边界框中心到二维边界框的边缘点,沿着线段搜索全局最大值。我们发现,对三维边界盒的构造并不需要消失点的确切位置,但对消失点的指向方向更为重要。因此,我们使用回归来得到指向消失点的方向,然后假设消失点在无穷远处。

  • [2] 使用CNN来估计指向消失点的方向。车辆图像被输入3个独立的输出ResNet50,这些输出将消失点方向的概率预测为量化角度空间的60个箱子从−90◦到90◦)的概率

我们将朝向消失点的方向的回归制定为一个分类任务,形成一个对应于角度的箱子,并使用带有三个分类输出的ResNet50。我们发现这种方法比直接回归更稳健。在ResNet50中的最后一个平均池化之后,我们添加了三个独立的完全连接的层,它们具有softmax激活(每个消失点一个)。这些层中的每一个层都生成属于特定方向箱(用角度表示)的每个消失点的概率。我们将角度空间量化为3个◦,从−90◦到90◦(每个消失点总共60个◦)。

3.4 算法效果


本文提出并总结了适用于基于cnn的车辆细粒度识别的多种算法改进。其中一些修改最初是在一篇会议论文[8]中提出的,而其他的则是正在进行的研究的结果。我们还提出了一种方法来获取图像解包所需的三维边界框(这对性能改进有最大的影响最大),而不需要观察监控视频,但只处理单个输入图像。这大大增加了所提出的方法的应用潜力(而这种估计的3D盒子的性能)

(7)目标检测之CNN、ResNet用于目标3D检测框的回归估计、3D检测框绘制相关推荐

  1. CVPR2022知识蒸馏用于目标检测:Focal and Global Knowledge Distillation for Detectors

    论文下载:https://arxiv.org/abs/2111.11837 源码下载:https://github.com/yzd-v/FGD Abstract 知识蒸馏已成功应用于图像分类.然而目标 ...

  2. 【目标检测系列】CNN中的目标多尺度处理方法

    关注上方"深度学习技术前沿",选择"星标公众号", 技术干货,第一时间送达! [导读]本篇博文我们一起来讨论总结一下目标检测任务中用来处理目标多尺度的一些算法. ...

  3. 3d目标检测_CVPR 2020 |基用于3D目标检测的层级图网络

    论文:A Hierarchical Graph Network for 3D Object Detection on Point Clouds论文地址:https://www.aminer.cn/pu ...

  4. DyFPN:浙大华为诺亚西湖大学等提出用于目标检测的动态特征金字塔,减少40%的FLOPs!...

    关注公众号,发现CV技术之美 ▊ 写在前面 特征金字塔网络(FPN)是目标检测框架的重要组成部分.大多数现有FPN变体的性能提高主要归因于计算负担的增加.增强FPN的一种方法是通过扩展感受野来丰富空间 ...

  5. 即插即涨2-3%!AC-FPN:用于目标检测的注意力引导上下文的特征金字塔网络

    关注 点击关注上方"AI深度视线",并"星标"公号 技术硬文,第一时间送达! 精彩内容 AC-FPN--用于目标检测的注意力引导上下文的特征金字塔网络 ,即插即 ...

  6. 【CV】FPN:用于目标检测的特征金字塔网络

    论文名称:Feature Pyramid Networks for Object Detection 论文下载:https://arxiv.org/abs/1612.03144 论文年份:2016 论 ...

  7. 将扩散模型用于目标检测任务,从随机框中直接检测!

    本文 机器之心 授权  编辑:杜伟.陈萍 扩散模型不但在生成任务上非常成功,这次在目标检测任务上,更是超越了成熟的目标检测器. 扩散模型( Diffusion Model )作为深度生成模型中的新 S ...

  8. 用于目标检测的Faster R-CNN算法的实际实现

    Introduction 您使用哪种算法进行对象检测任务? 为了在最短的时间内构建最精确的模型,我尝试了其中的一些. 这个跨越多个黑客马拉松和现实世界数据集的旅程通常总是让我进入R-CNN系列算法. ...

  9. MatrixNets:可替代FPN,用于目标检测的可感知比例和长宽比的网络结构

    译者 | 刘畅 出品 | AI科技大本营(ID:rgznai100) 本文介绍了一种新的网络MatrixNets(xNets),它是新的用于目标检测的深层结构.xNets将具有相似大小和高宽比的目标映 ...

  10. Mask R-CNN用于目标检测和分割代码实现

    Mask R-CNN用于目标检测和分割代码实现 Mask R-CNN for object detection and instance segmentation on Keras and Tenso ...

最新文章

  1. java ASM 分析类
  2. 计算机应用基础形考报告2020,放大学计算机应用基础形考本学习报告
  3. python 图表_新手向——制作web图表(基于Python和GooPyCharts)
  4. JZOJ__Day 3:【NOIP普及模拟】数数(count)
  5. caffe的python接口学习(2)生成solver文件
  6. Centos 7或者说linux 怎么一直运行一个项目,自己退出终端也在运行
  7. LeetCode 239:滑动窗口最大值 思考分析
  8. matlab图像增强分段线性函数_图像增强、锐化,利用 PythonOpenCV 来实现 4 种方法!...
  9. uasset python_Unreal Python 结合 C++ 开发蓝图库插件
  10. 应用软件更新提醒单页HTML网站源码
  11. 如何使用Countifs函数动态统计
  12. PHP分页类的实现,返回结果未渲染,更容易在HTML中使用
  13. qt 程序异常结束_【心电国际指南2009专家解读】浦介麟 冉玉琴老师:QT 间期的规范化测量及其意义...
  14. paip.c++ 进程间通信方法大总结
  15. 查看当前计算机CPU架构
  16. 防火墙、DCD与TCP Keep alive
  17. vue+ElementUI实现订单页动态添加产品效果
  18. Java实现QQ邮件发送
  19. 如何预防网站http劫持问题?
  20. MicroNet实战:使用MicroNet实现图像分类(二)

热门文章

  1. 通过注册表实现程序开机自启动的方法
  2. 数据结构基础学习笔记目录
  3. Android中常用计时器,延时,定时
  4. 找出大于200的最小质数
  5. http://www.jetbrains.com/ 登不上
  6. 进入Tokio的异步世界
  7. c语言更正错误,c语言出错invalid operands to binary %
  8. 【jhipster】springboot时区的设置-将UTC时区设置成中国时区
  9. webp格式是什么?webp格式怎么打开?webp格式怎么转换gif/jpg/png等?
  10. C语言 生成随机数 分析给定范围的随机数生成公式