当前位置: 首页 > 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…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

三体问题详解

从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...