【点云系列】PoinNetVLAD:Deep Point Cloud Based Retrieval for Large-Scale Place Recognition

1. 概要

一句话:第一篇基于深度学习的点云点特征的点云检索文章
论文:https://arxiv.org/abs/1804.03492
代码:https://github.com/mikacuy/pointnetvlad
说明:原版代码是tensorflow的,github上有pytorch版本,可自行寻找使用哈。

2. 动机

首先普及一下,场景识别点云检索的一种实例。主要针对自动驾驶当中,可识别当前场景是否在已规划路线当中并进行判断。

为什么要做点云 场景识别呢? 图像不就可以了嘛?
No,不然。看下面的图就知道了,图像在光线变化(白天、黑夜),或者一些季节变化之后,想要识别出来是非常困难的,肉眼都不一定能看出来是同一个地方。而点云呢,可以明显的看到不受这些影响,就很容易检索出来相同的场景。所以,需要对大场景下做 点云 场景识别。说白了,就是鲁棒性好。不受天气或光线的一些影响。
在这里插入图片描述
本质来讲,这篇文章是PointNet + NetVLAD 的结合 = 获取到能够具有全局表达性的点云特征,用来检索。
其中,使用PointNet来提取点云的特征,使用NetVLAD来编码这些特征。

很符合检索三个阶段

  1. 特征提取
  2. 特征编码
  3. 匹配

这篇文章着重在1&2上。3用了简单的ranking排序。

3. 方法

3.1 问题定义

假设数据库集合为M,点云队列为Q,我们的目标就是检索出点云队列Q当中的每个点云其在数据集合M当中结构最相似的一个。设计任务点有:
如何表达一副点云? 这就需要 获得 点云的 紧实表达的 特征
● 相似度如何衡量? 损失函数如何设置

3.2 整体网络框架

包括两大部分: PointNet部分 + NetVLAD部分。
然后最后在对这些编码后的特征压缩一下变成最终的全局特征描述子,这里用来最简单的max-pooling。
在这里插入图片描述

3.3 PointNet模块

去除最后一层使用,也就是没有用最后一层的max-pooling。

3.4 NetVLAD模块

分配到最优可能的聚类中心。来自于图像。
在这里插入图片描述
公式解析:每个局部特征的表达

  • 一个点云 P = { p 1 , . . . , p N ∣ p n ∈ R 3 } P=\{p_1, ...,p_N| p_n\in \mathbb{R}^3\} P={ p1,...,pNpnR3}
  • 输出特征 P ′ = { p 1 ′ , . . . , p N ′ ∣ p N ′ ∈ R D } P' = \{p'_1, ..., p'_N| p'_N\in \mathbb{R}^D\} P={ p1,...,pNpNRD}
  • K K K个聚类中心:{ c 1 , . . . , c k ∣ c k ∈ R D c_1, ..., c_k | c_k \in \mathbb{R}^D c1,...,
  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值