当前位置: 首页 > news >正文

3D目标检测(二)—— 直接处理点云的3D目标检测网络VoteNet、H3DNet

前言

上次介绍了基于Point-Based方法处理点云的模块,3D目标检测(一)—— 基于Point-Based方法的PointNet点云处理系列,其中相关的模块则是构成本次要介绍的,直接在点云的基础上进行3D目标检测网络的基础。

  1. VoteNet

对于直接在点云上预测3D的目标框,有一个相对于2D而言难以解决的问题,即我们扫描得到的点云都是表示在物体表面的,而如果只利用物体表面的点云信息来预测其中心及大小信息,显然是有着一定差距的,而VoteNet这篇工作的主要思路就是想办法得到物体内部的点,然后利用这种内部的点来对物体的BB的中心,大小进行预测。(如下图中,原本黑色的点为物体表面的点,通过设计网络来预测得到物体内部中心的红色点以此来进行预测)

而这种中心的获得,文章主要是通过Hough Voting的思想获得的,Hough Voting有可能大家都对此有诸多的解释,但其主要思路或者说方法就是去构造一个需要检测物体对应的参数空间,像在这里就是一个由边界点到其对应物体中心点的参数空间,那么根据这些物体表面的点在这个参数空间的映射投票,就可以确定其中的中心点。

而其实VoteNet的网络结构主要可以分为两部分来解读,分别为对点云处理的Backbone部分,和目标框的生产Proposal部分。

Backbone

VoteNet是直接处理点云来进行目标检测的一个很好例子,其Backbone部分,采用了PointNet++中的SA下采样模块来对点云下采样的同时,提升其特征维度,但考虑到需要进行目标检测,最后采样后剩下的点太少了,于是会在最后接上两个FP模块来在不改变特征维度的情况下,进行上采样,扩充特征空间中的点云数量。

具体而言:

SA:FPS最远点采样->Ball-query+Group进行球查询后获得K个领域->MLP+Maxpooling经过多层全连接提取特征后汇聚特征。

FP:将输入第L个SA层的输入输出中的点云,计算距离矩阵来做为插值特征的权重,将得到的插值特征和输入特征拼接经过MLP后,升维得到上采样的点云特征。

经过Backbone得到的点云,称为Seeds,可以认为Seeds就是2维图像经过特征提取后的对图像的抽象特征表示形式。其实不经过后续的Vote操作来获得物体的中心点,也可以进行目标检测,但如上述所言,经过Vote后的物体内部的点,更能生成精确的位置信息。

Vote

Vote操作即将经过Backbone生成的Seeds点,通过霍夫投票的思想来生成中心点,而为了在网络上方便的训练和融合,作者利用MLP来处理Seeds点,让网络自主的学习从Seeds点到内部中心点的变换,每个点,其中表示点在空间中的坐标,则表示点所带有的特征信息,将点经过MLP+BN+Relu后,网络学习点到其中心点的空间偏移量和特征偏移量以此通过每个投票获得中心点。

当然,这种Vote的过程是需要监督来完成的,由于我们知道每个BB框的中心点坐标,所以可以通过损失函数的形式来对坐标进行监督,而有关特征偏移量的学习,则相对于一种补偿机制。其中,我们只对是在目标物体表面的Seeds点来进行预测监督。

Proposal Generate

在得到Votes点后,我们对这些点进行一个SA操作,就相对于对这些点进行了聚合并且分成一簇簇的去提取了特征,即相对于在2D领域经过RPN后把生成的proposal一个个特征向量进一步提取特征。

在将聚合了Votes点的特征经过预测头,在这里就是MLP+BN+Relu的操作,生成2+3+num_heading_bin*2+num_size*4+num_classes的向量做为proposal向量。其中2为是否是物体判断的objectness scores,3为基于上一步SA层进一步生成聚合点的xyz坐标里真实中心的偏移量,num_heading_bin为BB框的朝向角预测划分离散形式,在sun-rgbd数据集中,就划分为12个角度,细分为180/12=15°。而num_size和2D里常常直接预测BB的大小不同,其也是一种偏移概念,作者统计了每种物体的mean size,然后通过网络来预测其对应的偏移大小,num_classes则是代表预测物体的类别信息。

像上面说的,不利用Votes点,而利用Seeds点也可以生成proposal点,其区别在于,我们可以通过FPS算法,来对Seeds进行采样获得伪的Votes点,也相对于是一种进一步聚合的方法。

如果对VoteNet进行总结,可以发现其和2D图像里的二阶段目标检测方法其实是异曲同工的,先通过Backbone来提取特征,对提取出的特征用RPN/SA生成proposal,最后对proposal进一步操作,预测其BB属性。区别的是在直接处理点云的网络中,其把许多卷积的操作换成了SA操作,而且不仅需要处理特征信息,也要注意点云原始空间信息的运用,另外在二维图像中,想要获得更多的感受野,一般都需要卷积操作,而在点云中,则可用通过FPS操作后,ball-query+SA来提升采样点的感受野信息。

  1. H3DNet

H3DNet是VoteNet的续作,其主要对VoteNet中的一些结果进行分析,然后发现仅仅利用Votes点,也就是中心点,对于如画框这种薄的物体,中心信息有可能并不如其边的信息有效,而对于几何信息丰富的BB框的边界,通过其面的约束,可以使其预测的更加精确。于是作者提出不仅要对物体中心点进行votes,对物体每个面的中心votes和物体的边进行votes也是十分有效的。

而如何Vote的细节,VoteNet中已经提及了,H3DNet需要解决的是,如何将多种Votes的结果利用起来,利用不同Votes的特征来约束生成更加精确的BB。

其主要思路在于,通过构建一个距离函数来表示每个Votes点距离其真正中心点的距离,其生成的proposal应该有最小化这个距离函数的效果。(中心点+6个面心+12条边的中点=19)

作者利用和VoteNet一样的方法,使用物体中心的Votes点来生成初始的proposal,然后利用face和edge信息来最小化这个距离函数,以达到refine初始proposal生成更精细结果的特点。

而在特征融合方面,作者将center的feature当做是初始的特征,分别和来自face和edge的feature进行match,所谓的match就是SA模块:采样+聚合,最后聚合后的face和edge特征concat起来对初始的proposal完成refine。

总结

H3DNet个人我认为,也是一篇工程性或者带有刷点性质的工作,不过其提供了一种改进直接处理点云网络的思路,就是数据的表达,会对最后的效果产生很大的影响,不像2D的工作,在3D中,由于BB的属性相对于2D而言,多了很多特征,而怎么样的表达形式,可以去更好表征BB框中的特征。如最先VoteNet提出通过内部信息的点的表达会比用表面的点,对最后生成BB框有更好的效果,和H3DNet认为face和edge特征对于BB框的表达很重要等,这种对点云不同表达,是值得研究的课题。

H3DNet虽然每种信息的表达不是完全孤立或者独立的,但如edge vote和line vote的产生是并行的,只是在特征层面稍微进行了融合,总归不是一种高效的表达形式。

相关文章:

3D目标检测(二)—— 直接处理点云的3D目标检测网络VoteNet、H3DNet

前言上次介绍了基于Point-Based方法处理点云的模块,3D目标检测(一)—— 基于Point-Based方法的PointNet点云处理系列,其中相关的模块则是构成本次要介绍的,直接在点云的基础上进行3D目标检测网络的基础。VoteNet对于直接在点云上预…...

Java学习-IO流-常用工具包(hutool)

Java学习-IO流-常用工具包(hutool) hutool工具包 DateUtil:日期时间工具类 TImeInterval:计时器工具类 StrUtil:字符串工具类 HexUtil:16进制工具类 HashUtil:Hash算法类 ObjectUtil&#xff1…...

【LeetCode】1. 两数之和

题目链接:https://leetcode.cn/problems/two-sum/ 📕题目要求: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入…...

【数值模型环境搭建】Intel编译器安装

Intel编译器在数值模型编译中被广泛使用,它有一个很好的地方是自带Mpich,不需要额外安装。本文介绍Intel2018.1.163版本的安装。 1、安装包获取 Intel编译器可从官网下载下载: https://www.intel.cn/content/www/cn/zh/homepage.html 或者…...

操作VMware vCenter Converter 实现物理机迁移到虚拟机

实验目的:熟练VMware虚拟化项目中,物理机向ESXI5迁移操作过程。 1、打开VMwarevCenterConverterStandalone5.0软件,按“转换计算机”。 2、选择“已打开电源的计算机”。并输入远程要连接迁移物理机IP地址,登录帐户和密码。 然后…...

hutool XML反序列化漏洞(CVE-2023-24162)

漏洞简介 Hutool 中的XmlUtil.readObjectFromXml方法直接封装调用XMLDecoder.readObject解析xml数据,当使用 readObjectFromXml 去处理恶意的 XML 字符串时会造成任意代码执行。 漏洞复现 我们在 maven 仓库中查找 Hutool ​https://mvnrepository.com/search?…...

Java简单认识泛型——图文详解

写在开头:想必大家和博主一样,在以往学习JavaSE的语法中,遇到了一个陌生的词——泛型,博主当时很好奇,什么是泛型呢?即使是学完了JavaSE,这个问题都没有解决,只能在百度查阅了解关于泛型的一些皮…...

AcWing171.送礼物

题目描述 达达帮翰翰给女生送礼物,翰翰一共准备了NNN 个礼物,其中第 iii 个礼物的重量是 G[i]G[i]G[i]。 达达的力气很大,他一次可以搬动重量之和不超过 WWW 的任意多个物品。 达达希望一次搬掉尽量重的一些物品,请你告诉达达在…...

领域驱动设计-架构篇

目录 1、软件架构概述 1.1 软件架构概念 1.2 软件架构分类 1.3 软件架构模式 1.4 软件架构风格 2、领域驱动软件架构 2.1 架构风格 六边行架构(领域驱动设计首选) 为什么选择REST架构 松耦合 可伸缩性 易用性 约束性 2.2 架构模型 命令和…...

docker安装kafka

前言最近在用kafka做项目,所以本地搭建下kafka,但是又嫌java安装和安装kafka太麻烦,所以想到用docker来部署。镜像wurstmeister/kafka维护较为频繁的一个Kafka镜像。只包含了Kafka,因此需要另行提供ZooKeeper,推荐使用…...

Selenium4+Python3系列(十一) - Page Factory设计模式

写在前面: Page Object模式,目的是将元素定位和元素操作分层,只接触测试内容,不写基础内容,便于后续对自动化测试用例体系的维护,这是中心思想,也是核心。 那么我们继续将简洁延续&#xff0c…...

C++基础知识【4】函数及参数

目录 一、函数的基本概念 1.1、构成 1.2、声明和定义 1.3、函数的调用 二、参数 2.1、形参和实参 2.2、参数的传递 传值 传引用 传指针 三、C函数的一些新特性 3.1、Lambda表达式 3.2、右值引用 3.3、默认参数 3.4、变长参数模板 3.5、constexpr函数 3.6、noex…...

约瑟夫森磁效应

电流与波函数的相位有直接的关系,可得约瑟夫森结的电流为 IIcsinϕ\begin{align} II_c sin\phi \end{align} IIc​sinϕ​​ 式中,IcI_cIc​为临界电流,相位差为ϕϕ2−ϕ1\phi\phi_2-\phi_1ϕϕ2​−ϕ1​。 根据磁矢势A的定义,B…...

什么是L1和L2正则化,以及它们有什么区别

一、L1和L2正则化是什么? 在防止过拟合的方法中有L1正则化和L2正则化,L1和L2是正则化项,又叫做惩罚项,是为了限制模型的参数,防止模型过拟合而加在损失函数后面的一项。 在二维的情况下,黄色的部分是L2和…...

场景式消费激发春日经济,这些电商品类迎来消费热潮

春日越临近,商机越浓郁。随着气温渐升,春日经济已经潜伏在大众身边。“春菜”、“春装”、“春游”、“春季养生”等春日场景式消费走热。 下面,鲸参谋为大家盘点几个与春日经济紧密相关的行业。 •春日仪式之春游踏青 ——户外装备全面开花…...

[2.1.4]进程管理——进程通信

文章目录第二章 进程管理进程通信(IPC)为什么进程通信需要操作系统支持?(一)共享存储(1)基于存储区的共享(2)基于数据结构的共享(二)消息传递什么…...

ChatGPT也有犯晕的时候

前面测试 ChatGPT 进行写代码、优化代码、解释代码、一般问答都表现的很好。偷个懒,用ChatGPT 帮我写段生物信息代码如果 ChatGPT 给出的的代码不太完善,如何请他一步步改好?代码看不懂?ChatGPT 帮你解释,详细到爆&…...

机器学习与目标检测作业:连通块算法

机器学习与目标检测作业:连通块算法一、连通块算法题目描述二、连通块算法文件结构三、连通块算法程序编写3.1、连通块算法conBlock.h头文件内容3.2、conBlock.cpp源文件内容3.3.3、mian.h头文件内容3.3.4、main.cpp源文件内容如下四、连通块算法程序运行结果一、连…...

HBase基础 --- 增删查改

目录 创建表 查看指定表全名空间中的表 查看表描述 禁用/启用 查看禁用/启动状态 删除表 新增列族 删除列族 更改列族存储版本的限制 增加数据 根据条件查询 查看指定列中不同版本的数据 删除指定列族下的指定列 删除指定行 全表扫描 全表扫描指定列族…...

如何基于AI智能视频技术实现公园景区的人流量实时统计?

一、方案背景春暖花开的季节来临,外出旅游的人群也越来越多。无论是景区、公园、博物馆、步行街等场所,客流超载非常大,给游客带来的体验较差,同时也存在安全隐患。当前景区面临的管理痛点包括:客流信息查询难&#xf…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...