【文章阅读】Object as Hotspots

2023-11-20 15:20
文章标签 object 文章 阅读 hotspots

本文主要是介绍【文章阅读】Object as Hotspots,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Brief

  目前二维上的anchorfree的方法已经发展了有几年了,但是在三维检测中目前还没有关注到一个比较好实验效果的anchor-free方法(我目前还没看到吧),这一篇是我在arxiv上2020年元旦左右考试后看到的一篇,提目就很有意思,Object as Hotspots: An Anchor-Free 3D Object Detection Approach via Firing of Hotspots,看了一下实验效果,在KITTI上12名很好的效果了。而且方法听上去就很有二维上anchor free的方法的感觉,因此是有必要读一下的。
在这里插入图片描述
这里是 paper

这篇文章的核心创新点在对基于voxel的方法的anchor的改进,采用object级别的hotspots取代了anchor,而具体如何取代可以这样理解:

(1)以前的方法都是需要在预先对全部场景给出很多object级别的anchor,没有考虑效率,以及很对的Neg导致了背景和前景的不平衡。
(2)作者前面采用一样的方法,首先是对点云通过voxel提取特征,随后根据原始点到fea map的映射关系和标注框来决定哪些是Hotspot,再然后,根据作者自己设计的reg -loss回归的是当前所在物体的中心坐标的偏移,(这里可以根据每一个voxel划分时得到的坐标值作为回归的量)。
(3)也就是采用了上面这种策略,使得不用在全场景中划分label,只需要在fea map中选择hotspots进行回归就行.

Abstruct

  • 由于点云的稀疏性和不规则性,目前的方法都是先把其规整化,比如说voxelize的方法需要先把点云划分成很多规则的anchor。
  • 基于作者的观察:那些不被孤立的点也是具有物体识别的方向或者类别信息的。因此作者本文讨论不采用anchor的方法,也就是作者所说的anchor-free的方法。作者在文章称这些可能的点为 hostpots,可以直接从这些 hotspots预测结果,大大的减小了anchor数量。
  • 我们的anchor free 的方法比其他的one stage的方法在KITTI上至少都多了2个点。

Introduction

  1. 3D检测在自动驾驶中感知的地位很高
  2. Lidar 由于天气、遮挡等会造成获得数据的稀疏性和不规则性,同时价格不菲,促使在稀疏和低质量的点云数据中运行出好结果的算法的研究。
  3. 目前的解决办法

(1)给出object级别的anchor大小,然后再根据提取到的特征回归和判别。
(2)基于Voxel的方法比较依赖参数的设置,比如点云range的设置,anchor的大小等等,这些预先设置的大小要建立在对数据的分析认知上,同时anchor的数量随着类别的增加也会线性增加。此外,通过IOU的方式确定pos和neg的方法可能会导致采样数据的进一步不平衡。

  1. Do we need pre-defined anchor?

作者 认为 激光雷达从未捕捉都稠密3D点云的形状,极端情况下,一个物体仅仅只能获得十个点左右
因此作者提出一种anchor free的认知,将目标当做一种hotspots的团来处理。

  1. 作者的方法

作者首先也是将点云场景体素化,然后再把每一个voxel中每一个点的特征集合起来形成hotspot表示,这些hotspot再直接被训练用于预测物体的定位和方向。最后再通过NMS得到结果。
我的疑惑:读到这里,不免会这样想,前面的voxel-based的方法都是先体素化,其中体素化的过程会划分成比较小的格子,而这里也同样体素化,那么作者是如何将体素特征转化为hotspots的特征呢,并认定哪些是hotspots。

  1. 本文的贡献

(1)提出了一种新的点云represtenation,OHS
(2)根据OHS构建了 第一个 onestage中的anchor free的3D检测网络
(3)quadrant classification loss :

2. Related Work

  • one stage

voxelnet second pointpillars

  • two stage

MV3D

  • anchor free

在lidar_based的方法中没有,但是室内场景还是有一些,比如 SGPN,VOTENET等

3. Object as Hotspots

3.1. Interpretation of Hotspots

  1. part-aware的方法对遮挡更具有鲁棒性。

作者认为,part-bsed的具有part-aware的功能,即是在遮挡时,另外一部分可以具有全局的语义信息。
作者文章的hotspot实际上仅仅是object的一部分点云,也就是相当于一个object上存在多个hotspots
<font size=5,color=00ff>这里作者采用了下面这段表示每一个voxel也就是一个hotsopt,同时在后面的feamap 到 hptspot的映射可以用于做二次优化,后续可以考虑做一下。
For the voxelization representations, a voxel with several points enclosed is a sample of hotspot。A neuron on the CNN feature maps can represent a collection of voxels whose locations can be projected to the corresponding location of the neuron on the feature map。
在训练时根据voxel的映射将 feamap上的特征分为 hotspots和non-spots,对每个神经元进行二值分类。在推理阶段,如果某个神经元具有很高的置信度,那么这就是被分为一个hotspots

3.2. Hotspot Assignment

这应该是本文的核心观点,如何决定哪些是hotspots。作者指出3D刚性世界,点一般是不耦合的,可以根据标注框决定哪些点是包含物体的,但是边界点是不算在这其中的,同样作者为了得到更好的效果,采用了软间隔的方式,设置了一个中间区域为背景点和前景点的结合。
&emsp:作者设置了两种方式来决定当前的神经元是否为hotspot:

(1)看当前的神经元对应的是否含有点,如果没有就是non-hotspot,不过原始点需要在bbox中
(2)采用更大的区域,在bbox内所有的非空和空的voxel所对应的神经元都算。

4. HotSpot Network

分为两部分:

  1. 3D feature extractor

和second的前面的特征提取网络是一样的,不多研究,也就是下图中的voxel-based CNN backbone。

  1. Object-as-Hotspots head

这一块主要分为三部分,classfication,box regression和quadrant classification.后续逐个介绍。
在这里插入图片描述

4.1. Object-as-Hotspots Head

  • hotspot classification sub-network 决定该hotspot是否作为一个object的某个部分
  • regression sub-network 回归
  • quadrant classification sub-network 预测象限,坐标中心为每个object的中心

4.2. Hotspot Losses for Supervision

  • 分类Loss
    这里作者采用的是focal-loss作为分类损失,其中空的点作为的hotspot是会被忽略的,也就是不会作为任何背景的。
    L c l s = ∑ k = 1 K α ( 1 − p k ) γ log ⁡ ( p k ) \mathcal{L}_{c l s}=\sum_{k=1}^{K} \alpha\left(1-p_{k}\right)^{\gamma} \log \left(p_{k}\right) Lcls=k=1Kα(1pk)γlog(pk)
  • Box Regression
    对于hotspot的块,作者采用如下的公式得到该热点原始坐标系中的关系:
    [ x v , y v ] = ( j + 0.5 L ( x max ⁡ − x min ⁡ ) + x min ⁡ i + 0.5 W ( y max ⁡ − y min ⁡ ) + y min ⁡ ) \begin{aligned}\left[x_{v}, y_{v}\right]=&\left(\frac{j+0.5}{L}\left(x_{\max }-x_{\min }\right)+x_{\min }\right.\\ &\left.\frac{i+0.5}{W}\left(y_{\max }-y_{\min }\right)+y_{\min }\right) \end{aligned} [xv,yv]=(Lj+0.5(xmaxxmin)+xminWi+0.5(ymaxymin)+ymin)
    在这里插入图片描述

如上图所示,作者需要回归8个参数, [ d x , d y , z , log ⁡ ( l ) , log ⁡ ( w ) , log ⁡ ( h ) , cos ⁡ r , sin ⁡ r ] \left[d_{x}, d_{y}, z, \log (l), \log (w), \log (h), \cos r, \sin r\right] [dx,dy,z,log(l),log(w),log(h),cosr,sinr],其中 d x , d y dx,dy dx,dy表示hotspot到物体中心的偏差值。象限偏差值采取顺时针。

因此回归loss和其他一样采用L1 loss:
L l o c ( x ) = { 0.5 x 2 , ∣ x ∣ < 1 ∣ x ∣ − 0.5 , otherwise  \mathcal{L}_{l o c}(x)=\left\{\begin{array}{cc}0.5 x^{2} & ,|x|<1 \\ |x|-0.5 & , \text { otherwise }\end{array}\right. Lloc(x)={0.5x2x0.5,x<1, otherwise 

  • Quadrant Classification
  • L q = ∑ i = 0 3 − [ q i log ⁡ ( p i ) + ( 1 − q i ) log ⁡ ( 1 − p i ) ] \mathcal{L}_{q}=\sum_{i=0}^{3}-\left[q_{i} \log \left(p_{i}\right)+\left(1-q_{i}\right) \log \left(1-p_{i}\right)\right] Lq=i=03[qilog(pi)+(1qi)log(1pi)]

实验

在这里插入图片描述

这篇关于【文章阅读】Object as Hotspots的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/395561

相关文章

深入探讨Java 中的 Object 类详解(一切类的根基)

《深入探讨Java中的Object类详解(一切类的根基)》本文详细介绍了Java中的Object类,作为所有类的根类,其重要性不言而喻,文章涵盖了Object类的主要方法,如toString()... 目录1. Object 类的基本概念1.1 Object 类的定义2. Object 类的主要方法3. O

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

软件架构模式:5 分钟阅读

原文: https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2 软件架构模式:5 分钟阅读 当有人潜入软件工程世界时,有一天他需要学习软件架构模式的基础知识。当我刚接触编码时,我不知道从哪里获得简要介绍现有架构模式的资源,这样它就不会太详细和混乱,而是非常抽象和易

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

【阅读文献】一个使用大语言模型的端到端语音概要

摘要 ssum框架(Speech Summarization)为了 从说话人的语音提出对应的文本二题出。 ssum面临的挑战: 控制长语音的输入捕捉 the intricate cross-mdoel mapping 在长语音输入和短文本之间。 ssum端到端模型框架 使用 Q-Former 作为 语音和文本的中介连接 ,并且使用LLMs去从语音特征正确地产生文本。 采取 multi-st

【Linux】萌新看过来!一篇文章带你走进Linux世界

🚀个人主页:奋斗的小羊 🚀所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言💥1、初识Linux💥1.1 什么是操作系统?💥1.2 各种操作系统对比💥1.3 现代Linux应用💥1.4 Linux常用版本 💥2、Linux 和 Windows 目录结构对比💥2.1 文件系统组织方式💥2.2

多线程的系列文章

Java多线程学习(一)Java多线程入门 Java多线程学习(二)synchronized关键字(1)   Java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Java多线程学习(四)等待/通知(wait/notify)机制 Java多线程学习(五)线程间通信知识点补充 Java多线程学习(六)Lock锁的使用 Java多