关注上方深度学习技术前沿”,选择“星标公众号”

资源干货,第一时间送达!

作者:不一样的子湘

知乎链接:https://zhuanlan.zhihu.com/p/127160788

本文已由作者授权转载,未经允许,不得二次转载。

Brief

第一次在知乎上进行自己的创作,研究方向是3D目标检测,之后也有空也会不时更新知乎的文章,目前将自己的学习都记录在CSDN博客上,已经有一些如voxel-based的方法的深入研究和代码阅读以及自己的一些想法和实验,有时间的话也会陆续把博客迁到知乎平台共同学习交流。今天这一篇是19年12月30日放到arxiv上的,其实在CVPR2020截止后就一直在关注这一篇文章何时会放出来,毕竟在KITTI的3D检测上高居榜首,并且远远的超过了第二名。如下:

是很有必要研读一下,这篇文章出自港中文和商汤的工作。目前已经开源代码。该组的工作还有19年的Part^A.也是十分值得阅读的工作。

- 论文:https://arxiv.org/abs/1912.13192

- 代码:https://github.com/sshaoshuai/PCDet

先看题目猜测一下,是结合了目前基于点和基于voxel的方法进行特征提取。

Abstract

  • 本文的特征提取方式充分利用的3D voxel卷积和基于点的pointnet卷积方式。其中作者给出的解释是3D voxel卷积高效,而point-based的方法感受野可变,因此结合了这两种检测方法的优点。

  • 该方法是一个两阶段的方法, 第一阶段提proposals,第二阶段为refine

  • 该方法远远好于KITTI其他的方法,在精度的表现上看。

一个简单的过程如下,盲猜为多尺度特征融合到key-point上的一个创新工作。

1. Introduction

  • 3D检测应用

  • 本文是一个将point_based的方法和voxel_based方法的结合的新型网络结构(在文章作者称voxel_based为grid_based的方法,实则同一种方法)

  • 一些point_based和grid_based方法的简单介绍。并且提取存在的问题。这也是作者的论文出发点,结合这两种方法的优点。(高效+可变感受野)

the grid-based methods are more computationally efficient but the inevitable information loss degrades the finegrained localization accuracy, while the point-based methods have higher computation cost but could easily achieve larger receptive field by the point set abstraction

  • PV-RCNN为结合这两种方法的算法,采用multi-scale的方法获得由voxel_based方法得到的高质量的proposals,然后再利用Point_based的方法获得精细的局部信息。

The principle of PV-RCNN lies in the fact that the voxel-based operation efficiently encodes multi-scale feature representations and can generate high-quality 3D proposals.

  • 核心也就是如何将上述的两种方法有效的结合起来,这里作者的做法是:在每一个3D proposals内平均的采样一些Grid-point,然后再通过P2的FPS最远点采样的方法得到该Grid_point周围的点,再通过结合去进一步refine最后的proposals

  • 因此,作者采用两阶段的方法去更好的结合上述的两种算法的优点。

(1) 第一阶段为:“voxel-to-keypoint scene encoding step ”,这一步是提出proposals,作者首先对整个场景采用voxel的方法进行特征提取,同时采取一支分支对场景采用point的FPS采样,然后检索得到多尺度的voxel的特征,如下的表示。这样实际上仅仅是采用了voxel的特征,但是表示在key-point身上。

(2)第二阶段为‘keypoint-to-grid RoI feature abstraction’:这一步骤,作者提出了一个新的RoI-grid pooling module,该模块将上一步骤的keypoints的特征和RoI-grid points特特征融合(keypoints和RoI-grid points是什么内容后续会讲到)

  • contributions

2. Related Work

这一部分不细讲,基本上的文章都大差不差。如下内容

  • 3D Object Detection with Grid-based Methods.

  • 3D Object Detection with Point-based Methods.

  • Representation Learning on Point Clouds.

3. PV-RCNN for Point Cloud Object Detection

3.1. 3D Voxel CNN for Efficient Feature Encoding and Proposal Generation

  • 3D voxel CNN

  • 3D proposal generation

上面的两点内容大都和其他目前流行的基于voxel的方法一样,不多赘述。

  • Discussions

(1)目前大多精度高的工作都采用了refine优化的工作,这里作者提出两个问题,如果采用类似roi_pooling的方式去做,那么由于8倍的下采样会使得分辨率很低,此外如果采样得到的是较高的分辨率图片又会得到稀疏的表示(Fast-PointRCNN)。第二个问题是传统的ROI-POOLING和ROI-ALIGN实际上得到仅能在一个小的区域内进差值,因此如果在3D稀疏的表达上可能得到几乎都是0的特征表示。
(2)进一步的,P2提出的set-abstruction的操作很好的编码“可变”领域的特征,后续考虑到去voxel上差值的内存占用,作者提出了先提出关键点,然后再利用关键点编码voxel卷积过程的多尺度特征。

3.2. Voxel-to-keypoint Scene Encoding via Voxel Set Abstraction

  • Keypoints Sampling

采用FPS,对KITTI数据集的关键点个数为2048,对waymo数据集为4096个点。用于代表整个场景的特征信息。

  • Voxel Set Abstraction Module

作者自行设计了Voxel Set Abstraction (VSA) module这样的一个模块,这个模块的作用是将keypoint周围非空的voxel特征采集出来结合在一起,原文用了很多数学表达,含义大致如此。

  • Extended VSA Module

进一步的在二维上,采用的是双线性插值得到关键点投影到BEV上的特征。最终的特征将有三部分组成,分别是来自voxel语义信息fipv, 来自原始点云的特征信息firaw(作者说这一部分信息是为了弥补之前在voxel化时丢失的信息),来自BEV的高级信息fibev.

  • Predicted Keypoint Weighting.

(1)上述的特征融合实际上都是为了进一步的refine做准备,第一阶段的proposals实际上是由voxel-based的方法提出来的,这一步 Keypoint Weighting的工作是为了给来自背景和前景的关键点一个不一样的权重,使得前景对refine的贡献更大。
(2)为了做这样的一个工作,作者设计了如下的额为的网络结构。这里面的Label对应的是是否在gt内,采用fcoal_loss。

3.3 Keypoint-to-grid RoI Feature Abstraction for Proposal Refinement

这就是作者提出的第二阶段,refinement,前文提到通过3D稀疏卷积处理voxel已经得到了比较好的精度的proposals,但是多尺度的keypoint的特征是为了进一步refine结果。因此作者在这个阶段提出了keypoint-to-grid RoI feature abstraction模块。如下:

(1)从该模块名称和图就可以看得出来,作者是想通过将key-point的特征整合到grid-point中去,并且也采用了multi-scale的策略。作者在每个proposals中都采样6×6×6个grid points.
(2)首先确定每一个grid-point的一个半径下的近邻,然后再用一个pointnet模块将特征整合为grid_point的特征,这里会采用多个scale的特征融合手段。
(3)得到了所有的grid-point的点特征后,作者采用两层的MLP得到256维度的proposals的特征。

  • 3D Proposal Refinement and Confidence Prediction
    作者在confidence prediction branche 这一分支上采用了前人提出的 3D Interp-over-Union (IoU),对于第k个ROI的置信度的目标是如下公式:

该公式中IoUk表示第k个ROI对应的GT,因此confidence prediction branche的LOSS函数采用的是交叉熵loss:

 是预测的置信度的分数,如下的实验表明采用这种置信度是能提高算法的精度的。

3.4. Training losses

  • RPN loss

  • keypoint seg loss也就是前背景关键点的权重loss。

  • refinement loss 定义如下:

这里的两部分loss第一个置信度LOSS也就是前文提出的LOSS,后面的SmoothL1 LOSS和以前的一样。

4. Experiments

有一些参数设置和实验的实现细节,博主就不写下来了。原文很详尽。列出实验效果吧。在test的数据集上:几乎都好比第二名好几个点,真的牛。

在waymo上如下:

重磅!DLer-目标检测交流群已成立!

为了能给大家提供一个更好的交流学习平台!针对特定研究方向,我建立了目标检测微信交流群,目前群里已有百余人!本群旨在交流目标检测、密集人群检测、关键点检测、人脸检测、人体姿态估计等内容。

进群请备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+小明

广告商、博主请绕道!

???? 长按识别,即可进群!

觉得有用麻烦给个在看啦~  

CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络相关推荐

  1. 超越 FPN 和 NAS-FPN!商汤港中文提出 FPG,特征金字塔网格强势登场!

    论文标题:Feature Pyramid Grids 作者团队:商汤&港中文(陈恺&林达华)&南洋理工大学&FAIR 论文链接:https://arxiv.org/ab ...

  2. 重磅!商汤港中文等将开源ECCV2018MS COCO检测比赛冠军代码库

    重磅!商汤&港中文等将开源ECCV2018MS COCO检测比赛冠军代码库 原文出处: 我爱计算机视觉 来自商汤科技.港中文.浙大.悉尼大学.南洋理工大学的研究人员组成的团队MMDet,赢得了 ...

  3. CVPR 2020 | 港中文提出3D目标检测新框架DSGN

    ©PaperWeekly 原创 · 作者|张承灏 学校|中科院自动化所硕士生 研究方向|双目深度估计 本文介绍的是香港中文大学贾佳亚团队在 CVPR 2020 上提出的 3D 目标检测新框架--深度立 ...

  4. 强烈推荐!商汤-港中文MMLab开源图像视频超分辨率工具箱MMSR

    点击我爱计算机视觉标星,更快获取CVML新技术 近一年,图像视频超分辨率突然变得异常火热,各大AI巨头和新锐均在发力. 52CV曾经第一时间报道了在今年CVPR 2019上 商汤EDVR算法获NTIR ...

  5. CVPR 2020 | 中科院、商汤联合提出大规模多标签目标检测新算法

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:学术头条 AI博士笔记系列推荐 周志华<机器学习>手 ...

  6. anchor free 目标检测_CVPR 2020 | 商汤提出 Anchor-free 目标检测新网络

    2 动机 1.现有的基于关键点的目标检测网络(如CornerNet.CenterNet.ExtremeNet等)通过使用关联嵌入向量进行物体关键点的匹配,然而关联嵌入向量具有训练难度大且容易混淆同类物 ...

  7. 旷视孙剑团队提出Anchor DETR:基于Transformer的目标检测新网络

    开放了预训练,r50 400多m 写在前面 在本文中,作者提出了一种基于Transformer的目标检测器.在以前基于Transformer的检测器中,目标的查询是一组可学习的embedding.然而 ...

  8. ICML 2021 | 上交华为提出GWD:旋转目标检测新方法

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 作者:yangxue |  已授权转载(源:知乎) https://zhuanlan.zhihu.com/p ...

  9. CVPR 2021 | 上交和国科大提出DCL:旋转目标检测新方法

    本文作者:yangxue   |  来源:知乎(已授权) https://zhuanlan.zhihu.com/p/354373013 介绍 Densely Coded Labels (DCL)是 C ...

最新文章

  1. 转:socket select模型示例
  2. [VNCFT2021]gocalc0复现
  3. TCP/IP的七层模型
  4. Unsafe使用技巧之数组操作
  5. atitit。wondows 右键菜单的管理与位置存储
  6. 数据可视化【四】Bar Chart
  7. Golang实践录:使用gin框架实现转发功能:利用nginx转发
  8. 想学习C语言,学习路线是什么?
  9. LVS详解(五)——LVS NAT模式实战
  10. 高斯滤波程序编写 opencv C++ CSU
  11. FCIV 一个MD5校验工具
  12. VSCode配置SVN插件
  13. VASP四大输入文件——KPOINTS
  14. 一篇文章看明白 Android 系统启动时都干了什么
  15. 在东钿第一次早会分享励志小故事。
  16. 抽象数据类型的三元组C语言,试仿照三元组的抽象数据类型分别写出数据类型复数和有理数的定义?...
  17. 使用CollectionView简单实现轮播广告栏效果
  18. 电报被人胡乱拉群解决办法
  19. 阿里云centos服务器基本构建(服务器的探索之路)
  20. 快速入门丨篇五:如何进行运动控制器输入/输出IO的应用?

热门文章

  1. 九.redis学习笔记之虚拟内存
  2. 编译linux内核的错误,linux内核编译错误
  3. oracle完全卸載,Oracle10g的完全卸載
  4. 桶排序算法(基于Java实现)
  5. python中导入的模块不能直接当方法用,需要采用模块.方法名或模块 as 别名,再别名.方法的形式
  6. 中国新冠统计20200128-20200227 统计于网络发布数据 便于数据同比分析规律 公开透明 加强防范 减少恐慌 数学来加持
  7. 什么是CUDA编程 统一计算架构
  8. 对Tensor进行变换 class torchvision.transforms.Normalize(mean, std) 给定均值:(R,G,B) 方差:(R,G,B),将会把Tensor正则化
  9. sequence_lenth构建神经网络填充数据理解
  10. 北邮 JAVA教程 张海旸 讲义