RangeRCNN阅读笔记

  • 概述
    • 摘要
    • 绪论
      • 创新点与主要贡献
    • 相关工作
      • 3D目标检测
      • 3D语义分割
    • 方法描述
      • 网络结构
      • 距离图主干
      • RV-PV-BEV
      • 3D RoI Pooling
      • 损失函数
    • 实验
      • 细节
      • 消融实验
    • 结论
    • 另一波总结与思考

概述

论文链接:RangeRCNN: Towards Fast and Accurate 3D Object Detection with Range Image Representation
在Kitti 3D检测任务benchmark的一种点+体素、融合算法中脱颖而出。
可以视作基于点云视图的检测。距离视图(Range View)还有不同的称谓:前视图1,这一视图甚至曾经作为MV3D2中的一项输入,可惜从AVOD3开始,这一视图逐渐沉寂。
下面是没什么用的碎碎念:之前看到1就惊艳到了,因为这种对点云数据的表示满足了点与2D网格(BEV,像平面等)的执念:稠密,满足了3D体素的执念:2D卷积,还满足了2D网格的另一个执念:贴近原始数据结构。可惜这一方法一直没有名列同时代前茅的结果,而RangeRCNN夹杂在众多点+体素的算法中,从实际上证明了Range View的有效性。

摘要

基于距离图像表示的3D目标检测框架(点云),two stage:

  1. 距离图像比体素与点的表示更加密集紧凑
  2. 引入扩张残差块适应目标尺度
  3. PV-PV-BEV模块(Range View to Point View to Bird’s Eye View),将特征从距离视图转换到鸟瞰图

绪论

  1. 总结一波基于网格(将2D网格和体素并称)和基于点的算法的困境:基于网格需要量化,带来信息损失,且三维卷积不实用;赞美一波Range View的优势:贴近LiDAR成像原理,稠密,balabala。

贴张图展示一下Range View的稠密。
2.开始分析为什么之前的Range View算法效果不够好:数据集规模小;类似图像数据,目标尺度变化遮挡两大“拦路虎”。

创新点与主要贡献

  1. 为快速准确检测3D目标,提出以Rang View为输入的RangRCNN架构;
  2. 为适应尺度变化,使感受野更灵活,采用扩张残差块(dilated residual block);
  3. 为更容易生成锚点,完成3D检测,提出PV-PV-BEV模块,将Range View的特征转化到BEV视图;
  4. 为获取3D包围框高度(BEV没得高度),提出用two-stage RCNN

相关工作

3D目标检测

  1. 栅格:点云BEV,像平面深度图(深度特征融合),3D体素(以及后续稀疏卷积等改进)→信息丢失,稀疏限制感受野
  2. 点:视锥(融合),直接处理,GNN,以及室内检测的VoteNet→计算量大
  3. 距离图:之前的算法性能不及栅格、点的原因是距离图不利于锚的生成

3D语义分割

常用于评价点云特征提取能力,RangeNet++在3D语义分割中取得了成功4

方法描述

网络结构

深度图像-主干,深度图像的特征传递到点视图与鸟瞰图。

距离图主干

通过球面投影将点转换为深度图:

编码距离,坐标,强度→输入距离图像5 × h × w
Kitti包括64线束,每线束产生约2000点→h=64 w=2038
然而由于Kitti3D检测任务仅仅标注摄像机前视图中的目标,仅包含约90°场景,并且部分垂直通道被相机FOV过滤,设定h=48 w=512。

距离图目标尺度差异-扩张卷积

用1×1卷积提取各个通道的特征→3个3×3不同扩张率{1,2,3}的卷积提取不同感受野特征→1×1卷积融合分支特征→dropout→pooling

RV-PV-BEV

距离图中的严重遮挡

遮挡严重,NMS难以移除。
锚在BEV中生成,根据距离图主干输出特征得到点特征,点特征投影到BEV。备注:点仅仅用作视图转换的桥梁,不从中提取特征;点对应同一BEV像素,则均值池化生成特征。
提取高层特征后转换视图

3D RoI Pooling


BEV无法获得高度信息→RPN生成3Dproposal,高度信息编码在3D网格间

损失函数



实验

从距离图中提取的特征图:48 × 512(64 维)
BEV分辨率0.16m×0.16m,初始尺寸496×432。三个卷积块降采样到248×216,124×108,64×54,再将它们上采样到248×216,串联用于区域生成预测。
空间网格:12×12×12×C (C是特征维)

细节

  1. 用Pytorch1.3实现,网络可以用ADAM优化器以端到端的方式进行训练。在8核NVIDIA Tesla V100 gpu上训练整个网络,批大小为32,学习率为0.01,耗时约1.5小时。采用余弦退火学习速策略来降低学习率。
  2. 数据扩充策略:沿x轴随机翻转、随机全局缩放、围绕垂直轴随机全局旋转,以及真值采样增强。
  3. RCNN:128 proposal 正负样本比例1:1。
  4. 推理阶段根据NMS阈值0.7保留前100个proposal,3D NMS用于优化边界框,阈值0.1。

消融实验

单阶段RangeDet与两阶段RangeRCNN在Kitti BEV中效果相差不大,在Kitti 3D中相差较大。


RoI Pooling中网格尺寸对结果影响不大:

夸张有效:

结论

本文探讨了距离图表示的潜力,并提出了RangeR-CNN用于快速准确的3D目标检测,Kiiti 上高性能,为大型室外场景中的实时3D目标检测提供更多可能。

另一波总结与思考

点云可以称为2.5D数据5,因为点云并非直接反应三维结构本身,而仅仅是将激光束打过去,再反射回来,也就是说,激光器发射一束激光到达障碍物后,这一连线延长线上的其他区域是不可见的。因此,将点云直接视为3D数据进行体素化忽视了数据本身的可见性。


  1. Li B, Zhang T, Xia T. Vehicle detection from 3d lidar using fully convolutional network[J]. arXiv preprint arXiv:1608.07916, 2016. ↩︎ ↩︎

  2. Chen X, Ma H, Wan J, et al. Multi-view 3d object detection network for autonomous driving[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 1907-1915. ↩︎

  3. Ku J, Mozifian M, Lee J, et al. Joint 3d proposal generation and object detection from view aggregation[C]//2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2018: 1-8. ↩︎

  4. Milioto A, Vizzo I, Behley J, et al. RangeNet++: Fast and accurate LiDAR semantic segmentation[C]//2019 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2019: 4213-4220. ↩︎

  5. Hu P, Ziglar J, Held D, et al. What you see is what you get: Exploiting visibility for 3d object detection[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 11001-11009. ↩︎

RangeRCNN阅读笔记相关推荐

  1. trainer setup_Detectron2源码阅读笔记-(一)Configamp;Trainer

    一.代码结构概览 1.核心部分 configs:储存各种网络的yaml配置文件 datasets:存放数据集的地方 detectron2:运行代码的核心组件 tools:提供了运行代码的入口以及一切可 ...

  2. VoxelNet阅读笔记

    作者:Tom Hardy Date:2020-02-11 来源:VoxelNet阅读笔记

  3. Transformers包tokenizer.encode()方法源码阅读笔记

    Transformers包tokenizer.encode()方法源码阅读笔记_天才小呵呵的博客-CSDN博客_tokenizer.encode

  4. 源码阅读笔记 BiLSTM+CRF做NER任务 流程图

    源码阅读笔记 BiLSTM+CRF做NER任务(二) 源码地址:https://github.com/ZhixiuYe/NER-pytorch 本篇正式进入源码的阅读,按照流程顺序,一一解剖. 一.流 ...

  5. Mina源码阅读笔记(一)-整体解读

    2019独角兽企业重金招聘Python工程师标准>>> 今天的这一节,将从整体上对mina的源代码进行把握,网上已经有好多关于mina源码的阅读笔记,但好多都是列举了一下每个接口或者 ...

  6. “CoreCLR is now Open Source”阅读笔记

    英文原文:CoreCLR is now Open Source 阅读笔记如下: CoreCLR是.NET Core的执行引擎,功能包括GC(Garbage Collection), JIT(将CIL代 ...

  7. QCon 2015 阅读笔记 - 团队建设

    QCon 2015阅读笔记 QCon 2015 阅读笔记 - 移动开发最佳实践 QCon 2015 阅读笔记 - 团队建设 中西对话:团队管理的五项理论和实战 - 谢欣.董飞(今日头条,LinkedI ...

  8. 05《软件需求模式》阅读笔记

    剩下的两个阅读笔记写第二部分.各类需求模式,共八个领域和它的需求模式,这一次写前四个. 基础需求模式,它是所有种类的系统都可能需要的一些东西.系统间接口需求模式使用系统间接口需求模式定义被定义的系统和 ...

  9. [置顶] Linux协议栈代码阅读笔记(一)

    Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int p ...

最新文章

  1. 数据结构(07)— 线性顺序表基本操作
  2. 常见NoSQL系统使用场景分析
  3. Android 源码分析之 EventBus 的源码解析
  4. TextView 添加Onclick 无效
  5. l2-004 这是二叉搜索树吗? (25分)_什么是 “线段树” ?
  6. 模拟退火粒子群优化算法控制程序
  7. 写程序和做网店的压力都很大
  8. linux c文件操作,Linux C 文件的输入/输出操作
  9. Vue封装下拉框组件时,为document绑定原生事件addEventlistener(click“),切换页面之后事件还未被摧毁...
  10. 广州体育学院有计算机专业吗,广州体育学院2014年下半年计算机水平考试报名的通知...
  11. COSCon'20 Apache Roadshow- China 精彩收官 | 数据篇
  12. centos7下搭建hadoop、hbase、hive、spark分布式系统架构
  13. python 按位运算符_Python按位运算符
  14. 虚拟机卡在登录界面卡住了_手机都10核了 为何还是照样卡?
  15. C语言实现数字串转数字
  16. 常用优化六、时间换空间和空间换时间
  17. Hbuilder和HbuilderX连接夜神模拟器(nox),调试程序
  18. 2017年sfdc工作总结_Schema Builder
  19. MTTR、MTTF、MTBF
  20. 在同一台机运行多个mysql 服务 多个主/从在同一主机_[ 原创 ]在同一台机运行多个Mysql 服务 多个主/从在同一主机...

热门文章

  1. 希捷磁盘文件出现故障该如何恢复?
  2. Powermill编程和UG编程的区别
  3. Springboot+Mysql实现图书借阅管理系统及教务信息管理系统源码附带运行视频
  4. 力扣(LeetCode)官网首发!史上首本Java语言实现LeetCode题解手册
  5. 新库上线 | CnOpenData农业工商注册企业数量统计数据
  6. MST唯一性条件证明
  7. pay---Android 银行卡快捷支付
  8. 【网络通信 -- 直播】项目实战记录 -- 弱网模拟工具
  9. 深入浅出内存管理-- 伙伴系统(buddy system)
  10. 给出一个大于或等于3的正整数,判断它是不是一个素数,编写C语言程序