论文链接:https://arxiv.org/pdf/1902.09738v2.pdf

这两个月忙着做实验 博客都有些荒废了,写篇用于3D检测的论文解读吧,有理解错误的地方,烦请有心人指正)。

博客原作者Missouter,博客园链接https://www.cnblogs.com/missouter/,欢迎交流。

【Abstract】

  该论文提出了一种结合图像中语义、几何学与稀疏、稠密信息的3D目标检测算法。

  该算法用Faster R-CNN接收作为立体输入的左右图像,同时检测、联系两幅图像中的物体;在立体检测网络的RPN后,论文添加了一个用于检测稀疏关键点(key points)、视点(viewpoints)与物体尺寸的网络结构,与左右两图的2D检测框一并作为输入,计算出对应的3D检测框,(个人觉得这个新添加的网络结构是这篇论文的一大亮点?)也许是因为这个结构,较其他3D检测算法而言这个方法并不需要深度输入。

  但单用这种结构算出的3D检测框精度不够,所以论文利用左右图像的ROI实现了基于区域的光度校准,从而提升3D框的精度。

【Introduction】

  论文提出了一种使用双目立体相机的3D检测算法,与激光定位(LiDAR)相比,立体相机具有成本低、具备更大更远的识别范围的优势。

  论文提出的网络结构如上图所示,主要分为3个部分:

  1、 以双目图片作为输入的立体检测RPN。

  2、 经过ROI校准后用于得到key points、view points与物体尺寸的网络分支,承接该网络输出作为约束条件的3D检测框估值网络。

  3、 保证3D检测框性能与精度的基于高密度区域的光度对准方法(Dense 3D Box Alignment),位于网络的最后。

  笔者感兴趣的地方在第二部分。

【Stereo R-CNN Network】

  Stereo R-CNN使用权值共享的ResNet与FPN作为主干,提取左右两图的一致特征。

1、 Stereo RPN

  与普通的RPN不同的是,stereo r-cnn的RPN接受的是左右两图各尺度上连接的feature map;左右图像真实地面框的并集被作为对象分类的目标,iou高于0.7的目标将被归为正样本,低于0.3的将被定义为负样本,锚框能够囊括左右两图的兴趣区域得益于此;

  针对锚框的偏移计算,文章给出了六种回归形式:[∆u, ∆w, ∆u‘, ∆w’, ∆v, ∆h],u,v分别代表二位检测框的水平、垂直中心坐标,w、h分别代表检测框的宽和高,由于使用已矫正过的立体图像,故对于两图的v、h同一变量进行回归。综上,与传统的RPN不同,stereo r-cnn的输出通道有6个。在输出候选区域时论文同样使用nms降重。

2、 Stereo R-CNN

a). Stereo Regression

  经RPN得到左右图像的建议区域对后,网络分别对左右两图的feature map应用ROI排列,得到的两图ROI特征被放入两个连续的全连接层中提取语义信息。四个子分支被用于物体分类、检测框、尺寸和view points角度的预测;检测框的回归形式与RPN类似。

  对于不同朝向的物体,view points角度是不同的:论文以 代表物体朝向与相机朝向的夹角,以 代表物体-相机连线与相机朝向的夹角,需进行回归的view points角度α可被定义为α=θ+β,为了避免不连续性,子分支中的训练目标为[sinα, cosα]。

  根据二维框、物体尺寸,深度信息可被直观地恢复;通过解耦view points角度与三维位置的关系,物体朝向也可以被解出来。

  一个左/右ROI与左/右真实框的IoU高于0.5的左右ROI对,将会作为前景,而左右任一ROI与真实框的IoU处于0.1~0.5的将会作为背景;前景ROI对的左/右ROI与左右真实框将会用于偏移的回归计算;与RPN相同,垂直方向的值仍是左右两图共用的。

  对于尺寸预测,论文仅用预先设置的尺寸来回归地面真实尺寸,获取偏移量。

b). Keypoint Prediction

  除了检测框和view points角度外,在检测框中部投影的3D角可以为3D检测框估计提供更严格的约束条件。论文定义了4个表示转角的3D检测框底部的4个关键点。下图中标为Boundary key points。

  透视关键点是唯一一个可以明显地投射到框的中间(而不是左或右边缘) 的3D语义关键点。(从后文看就是后2个边界点之间的后轮);除此之外还有两个Boundary key points被定义,作为规则物体的替代表示(图中前轮),只有在这两点以内的区域可以被认定为处于物体内部,且可用于后续的dense alignment。

  关键点的预测使用了Mask R-CNN。只有左图像的14*14 feature map被用于key points的预测。左图像经RoI排列的feature map被输入6个连续的256通道,3*3卷积层,每个卷积层后接激活层。一个2*2的非卷积层被用于补强输出尺寸至28*28。这里文章特别提到,关键点的坐标中只有u坐标提供了2D检测框之外的额外信息。论文对6×28×28输出中的高度(h?)通道求和,得到6×28预测:前四个通道表示四个语义关键点投射到相应u位置的概率,另外两个通道分别表示每个u位于左右边界的概率。因前文定义的透视关键点只有一个,softmax被用于4*28的输出中,求一个独特的被投射至单个位置的语义关键点,这个设计避免了关键点类型的混乱。对于左右的边界关健点,softmax被分别用于两个1*28的输出上。

  简单来说,需要被回归求出的关键点只有1个透视关键点,2个用于规则物体替代的边界关键点,其他点都是2D检测框有的(这里的解读存疑)。

【3D Box Estimation】

  之前求得的关键点、view points角度与2D检测框被用于3D检测框的粗略估计。一个3D检测框可被表示为{x, y, z, θ},分别表达检测框的中心坐标与物体的水平朝向角。根据尺寸、关键点和2D框,3D框可以通过减小2D框与关键点的二次投影误差得到。

  如上图,7个测量值从2D检测框与透视关键点中被提取,z = {ul, vt, ur, vb, ul', ur', up},分别代表左2D检测框的左边界横坐标、底部纵坐标、右边界横坐标、顶部纵坐标、右检测框的左、右边界横坐标与关键点的横坐标,原文称“Given the perspective key point, the correspondences between 3D box corners and 2D box edges can be inferred”。论文使用7个对应测定量的投影变换公式对{x, y, z, θ}进行求解。原文“There are total seven equations corresponding to seven measurements, where the sign of {w/2, l/2} should be changed appropriately based on the corresponding 3D box corner.”中提到{ , }的适当调整读起来有些…暧昧?

  对于观察不到车辆的2个面(车屁股正对?)的情况,up、物体尺寸无从得知,文章给出基于view point的补充公式:

  α、β含义与前文相同。

  Dense 3D Box Alignment部分不在博主研究范围内,博主决定摸了。

            

《Stereo R-CNN based 3D Object Detection for Autonomous Driving》论文解读的更多相关文章

  1. 《Population Based Training of Neural Networks》论文解读

      很早之前看到这篇文章的时候,觉得这篇文章的思想很朴素,没有让人眼前一亮的东西就没有太在意.之后读到很多Multi-Agent或者并行训练的文章,都会提到这个算法,比如第一视角多人游戏(Quake ...

  2. ImageNet Classification with Deep Convolutional Neural Networks 论文解读

    这个论文应该算是把深度学习应用到图片识别(ILSVRC,ImageNet large-scale Visual Recognition Challenge)上的具有重大意义的一篇文章.因为在之前,人们 ...

  3. 《Deep Feature Extraction and Classification of Hyperspectral Images Based on Convolutional Neural Networks》论文笔记

    论文题目<Deep Feature Extraction and Classification of Hyperspectral Images Based on Convolutional Ne ...

  4. Quantization aware training 量化背后的技术——Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference

    1,概述 模型量化属于模型压缩的范畴,模型压缩的目的旨在降低模型的内存大小,加速模型的推断速度(除了压缩之外,一些模型推断框架也可以通过内存,io,计算等优化来加速推断). 常见的模型压缩算法有:量化 ...

  5. Training Deep Neural Networks

    http://handong1587.github.io/deep_learning/2015/10/09/training-dnn.html  //转载于 Training Deep Neural ...

  6. Training (deep) Neural Networks Part: 1

    Training (deep) Neural Networks Part: 1 Nowadays training deep learning models have become extremely ...

  7. [CVPR2015] Is object localization for free? – Weakly-supervised learning with convolutional neural networks论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...

  8. Training spiking neural networks for reinforcement learning

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 原文链接:https://arxiv.org/pdf/2005.05941.pdf Contents: Abstract Introduc ...

  9. CVPR 2018paper: DeepDefense: Training Deep Neural Networks with Improved Robustness第一讲

    前言:好久不见了,最近一直瞎忙活,博客好久都没有更新了,表示道歉.希望大家在新的一年中工作顺利,学业进步,共勉! 今天我们介绍深度神经网络的缺点:无论模型有多深,无论是卷积还是RNN,都有的问题:以图 ...

  10. 论文翻译:BinaryConnect: Training Deep Neural Networks with binary weights during propagations

    目录 摘要 1.引言 2.BinaryConnect 2.1 +1 or -1 2.2确定性与随机性二值化 2.3 Propagations vs updates 2.4 Clipping 2.5 A ...

随机推荐

  1. SixLabors.ImageSharp 实践小结

    前言 之前写过一篇 Linux/Docker 中使用 System.Drawing.Common 踩坑小计, 当时主要是有一块图像处理的需要从 .net framework 迁移到 .net core ...

  2. yum安装no more mirrors to try

    先挂载:mount /dev/cdrom /mnt yum clean allyum makecacheyum -y update 后重试

  3. Vegas的软对比具体如何设置

    软对比是Vegas中比较常用的一个视频特效,通过这一特效可以让视频画面更加柔和.而对于新手用户来说,软对比显得有些陌生,不知道该如何使用. 本集主要为大家介绍:sony vegas的软对比. 在视频制 ...

  4. css3系列之伪类选择器

    Pseudo-Classes Selectors(伪类选择器) E:not(s) E:root E:target E:first-child E:last-child E:only-child E:n ...

  5. vulnhub: DC 2

    首先地址探测找到主机IP: root@kali:~# nmap -sn 192.168.74.139/24 Starting Nmap 7.80 ( https://nmap.org ) at 202 ...

  6. python3时间函数

    上一篇是生成测试报告的代码,如果重复运行测试报告名称相同会不停的覆盖,之前的测试报告也会丢失,无法追溯之前的问题.那么如何解决这个问题了呢? 首先想到的是用随机函数取随机名称,一旦生成的报告较多时,无 ...

  7. 发现了一个关于 gin 1.3.0 框架的 bug

    gin 1.3.0 框架 http 响应数据错乱问题排查 问题概述 客户端同时发起多个http请求,gin接受到请求后,其中一个接口响应内容为空,另外一个接口响应内容包含接口1,接口2的响应内容,导致 ...

  8. crash安装使用

     cash作为Linux内核调试的工具是必不可少少的一部分,但是他的下载并不是 yum install一下这么简单的,本文就来讲一下如何安装crash进行调试.  首先就是了解Linux的内核版本.这 ...

  9. TextClip构造方法报OSError:MoviePy creation of None failed because of the following [WinError 2]系统找不到指定的文件

    ☞ ░ 前往老猿Python博文目录 ░ 在使用moviepy的构造方法创建实例时报错: "C:\Program Files\Python37\python.exe" F:/stu ...

  10. PyQt学习随笔:QTableWidget的selectedRanges、setRangeSelected访问选中矩形范围的方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QTableWidget对项的操作支持选中多个项的情况下,可以通过方法selectedRanges ...