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

【JavaWeb】Servlet详解

文章目录1. 前置知识2.servlet生命周期2.1 默认情况下,服务器启动时,servlet对象并没有被创建2.2 用户执行一次请求2.3用户执行第二次请求2.4 3,4,5,6....次请求2.5 关闭服务器3.servlet方法解析4.适配器模式改造servlet4.1不使用servlet模式4.2使用适配…...

谁是世界上最好的编程语言?--编程语言70年浅谈

1、编程语言发展史纵览 严谨起见,本文提到的编程语言指的是「第三代高级编程语言」。 首先,我们从时间维度入手聊聊编程语言。一图胜千言,我们从目前主流的编程语言中,挑选出流行的、具有历史影响力的语言。把它们按时间从上往下…...

Webpack前端资源加载/打包工具

文章目录一、Webpack1、什么是Webpack2、Webpack安装2.1全局安装2.2安装后查看版本号3、创建项目3.1初始化项目3.2创建src文件夹3.3 src下创建common.js3.4 src下创建utils.js3.5 src下创建main.js4、JS打包4.1创建配置文件4.2执行编译命令4.3创建入口页面4.4测试5、CSS打包5.1…...

springcloud3 fegin实现服务调用1

一 Fegin的作用 1.1 fegin的作用 fegin是一个声明式的web服务客户端,让编写web服务器客户端变得非常容易,只需创建一个接口并在接口中添加FeginClients注解即可。 Fegin的使用方式:使用fegin的注解定义接口,调用这个接口&#…...

专业版即将支持自定义场景测试

物联网 MQTT 测试云服务 XMeter Cloud 专业版于 2022 年底上线后,已有不少用户试用,对数千甚至上万规模的 MQTT 并发连接和消息吞吐场景进行测试。同时我们也收到了希望支持更多物联网协议测试的需求反馈。 新年伊始,XMeter 团队全力聚焦于 …...

Process Monitor工具使用实验(23)

实验目的 学习Process Monitor实用小工具的使用,学会利用Process Monitor工具观察程序进程/线程、文件系统、注册表、网络连接等的活动。预备知识 Process Monitor是一个Windows系统下先进的监视工具,它可以显示文件系统、注册表、网络连接、进程…...

钓鱼客服到拿下服务器全过程(重点在于钓鱼添加img src)

重点总结 钓鱼时主动在变量中添加了字段,等待用户点击获取ip信息进行下一步资金盘plus呢 左看右看没啥东西,看看客服系统能不能打xss。 吊毛客服居然不在线,这套客服系统见过是whisper,之前审计过没有存储xss 但能通过伪造图片…...

【C++】list迭代器的深度剖析及模拟实现(感受类封装,类和对象的思想)

早点睡兄弟,别一天到晚就熬夜。 文章目录一、通过list迭代器来感受类和对象以及类封装的思想1.迭代器的特征和本质是什么?(两大特征:类的内嵌类型,行为像指针。本质:内置类型定义的变量或自定义类型实例化…...

JavaScript 语句、注释和代码块实例集合

文章目录JavaScript 语句、注释和代码块实例集合JavaScript 语句JavaScript 代码块JavaScript 单行注释JavaScript 多行注释使用单行注释来防止执行使用多行注释来防止执行JavaScript 语句、注释和代码块实例集合 JavaScript 语句 源码 <!DOCTYPE html> <html> &…...

华为机试题:HJ103 Redraiment的走法(python)

文章目录&#xff08;1&#xff09;题目描述&#xff08;2&#xff09;Python3实现&#xff08;3&#xff09;知识点详解1、input()&#xff1a;获取控制台&#xff08;任意形式&#xff09;的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…...

参加sem培训/标题优化怎么做

CMS垃圾回收器存在的问题及解决方案 总结&#xff1a; CMS是使用标记-清理算法去垃圾回收的。其中四个主要的流程分别是初始标记、并发标记、重新标记、并发清理。1、并发消耗CPU资源 其中的并发标记和并发清理是非常消耗性能的&#xff0c;因此会占用一部分CPU资源&#xff0…...

加强人社局网站建设/网络营销推广方案设计

前言 代码搬自博客&#xff1a;https://www.jianshu.com/p/c22861ec5f21 使用 安装起步&#xff1a;npm i -S vuex-persistedstate作为组件引入 import persistedState from vuex-persistedstate export default new Vuex.Store({// ...plugins: [persistedState()] })3.自定义…...

百度推广seo软件/百度小程序优化

废话不多说&#xff0c;请看以下代码&#xff1a; #define buffer ((char *) *( (int far *)0x200 )) main(){buffer(char *)malloc(20);buffer[10]0;while(buffer[10]!8){buffer[buffer[10]]a buffer[10];buffer[10];}free(buffer); }我们不妨忽略#define buffer ...这个语句…...

有什么教做甜品的网站/网站页面排名优化

时间很快&#xff0c;2016级的小鲜肉们已经在猜测老贺长什么样子了。   从在线作业到翻转课堂&#xff0c;几届的学生跟着我受了不少苦。话虽这么说&#xff0c;并不代表2016级的就要轻松了&#xff08;老贺虚伪到底&#xff01;&#xff09;。不过&#xff0c;苦孩子们&…...

包头做网站/网站黄页推广软件

软件配置操作系统&#xff1a; win10 企业版软件配置&#xff1a; JDK&#xff1a;1.8.0_241&#xff1b; eclipse&#xff1a;Oxygen.3a Release (4.7.3a)&#xff1b;打包文件源码Java工程名称&#xff1a;serialNum&#xff0c;其中有个java文件SetserialNum.javaSetserialN…...

湖州高端网站建设/百度快照官网

最小覆盖子串 题目描述&#xff1a; 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 "" 。注意&#xff1a;如果 s 中存在这样的子串&#xff0c;我们保证它是唯一的答案…...