3D检测:从pointnet,voxelnet,pointpillar到centerpoint
记录centerpoint学习笔记。目前被引用1275次,非常高。
地址:Center-Based 3D Object Detection and Tracking (thecvf.com)
GitHub - tianweiy/CenterPoint
CenterPoint:三维点云目标检测算法梳理及最新进展(CVPR2021)_哔哩哔哩_bilibili 作者解释。
CenterPoint 是一种用于激光点云的3D目标检测与跟踪算法框架,由2021年CVPR论文《Center-based 3D Object Detection and Tracking》提出。与以往算法不同,CenterPoint使用关键点而不是边界框来表示、检测和跟踪3D目标。
具体来说,CenterPoint算法分为两个阶段:
-
第一阶段:使用关键点检测器检测目标的中心点,然后基于中心点特征回归出目标的3D尺寸、朝向和速度等属性。
-
第二阶段:基于目标额外的点特征,对第一阶段得到的属性进行优化。
CenterPoint算法的优点包括简单高效,在nuScenes和Waymo数据集上都取得了state-of-the-art的性能表现。此外,目标跟踪被简化为一个简单的最近点匹配过程。
2D目标检测:
2D目标检测需要输出每个对象的类别(如人、车、猫等)以及一个包围框(bounding box),该包围框在图像中精确地定位了对象的位置。常见算法有基于区域提议(region proposal)的两阶段检测算法(如Faster R-CNN)和基于单阶段检测(one-stage detection)的算法(如YOLO、RetinaNet)
anchor
anchor(锚点)通常是指在目标检测任务中使用的一系列预定义的边界框(bounding boxes)。这些锚点具有不同的尺寸和宽高比,以覆盖图像中可能出现的各种形状和大小的目标。
锚点机制的工作流程如下:
- 在训练阶段,网络首先生成一系列锚点,这些锚点覆盖了图像中可能出现的各种形状和大小的目标。
- 然后,网络预测每个锚点内部是否包含一个目标,如果是,则进一步预测目标的类别和锚点需要调整的偏移量,以更好地匹配目标的真实边界框。
- 在推理阶段,网络使用这些锚点作为初始猜测,快速检测图像中的目标
缺点:不是end2end,需要nms后处理。
NMS
NMS(Non-Maximum Suppression,非极大值抑制)是一种在目标检测任务中常用的后处理步骤,用于去除冗余的检测边界框,确保每个目标只被检测一次。
NMS的主要步骤如下:
-
排序:首先,根据检测边界框的置信度(通常由检测算法给出)对所有边界框进行降序排序。
-
选择最高置信度的边界框:选择置信度最高的边界框作为当前考虑的边界框。
-
抑制与当前边界框高度重叠的边界框:计算当前边界框与其他所有边界框的交并比(IoU,Intersection over Union),如果IoU超过某个预定义的阈值(例如0.5),则将这些边界框抑制(即移除或忽略)。
-
重复步骤2和3:从剩余的边界框中选择置信度最高的边界框,重复步骤3,直到所有的边界框都被处理过。
-
输出最终检测结果:最后,剩下的边界框就是NMS处理后的检测结果,每个目标只被检测一次。
NMS在目标检测算法中起着关键作用,可以显著减少冗余的检测结果,提高检测的准确性和效率。然而,NMS也有一些局限性,例如可能会抑制一些具有高置信度但与当前边界框重叠的边界框,这可能导致一些真正的目标被遗漏。为了解决这个问题,研究者们提出了改进的NMS算法,如Soft-NMS、Softer-NMS等,它们通过更柔和的抑制策略来减少误抑制。
3D目标检测:
3D目标检测是计算机视觉领域的一项重要任务,其目标是在三维空间中检测和定位图像中的各种对象。与2D目标检测相比,3D目标检测不仅需要输出每个对象的类别和位置,还需要输出其在三维空间中的尺寸、方向和姿态等信息。
为了实现3D目标检测,研究者们提出了多种算法,包括基于深度学习的端到端检测算法和基于几何学的算法。近年来,基于深度学习的3D目标检测算法取得了显著的进展,特别是基于点云(如PointNet、PointNet++)和基于体素(如VoxelNet)的方法。
2D的预测:xy,wh(宽高),cls类别
3D的预测:xyz,lwh(长宽高),θ朝向角度,cls类别
pointnet
PointNet是一种用于点云处理的深度学习模型,由2017年CVPR论文《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》提出。该模型的主要思想是将点云数据作为输入,通过神经网络对其进行处理,以实现对点云数据的深度学习分析。
PointNet的关键创新点包括:
-
对称函数(Set Abstraction):为了处理点云的无序性,PointNet引入了对称函数,也称为集合函数。该操作将无序的点集表示为固定长度的向量。在PointNet中,集合函数的实现形式是基于最大池化(max)。
-
T-Net:为了获得点云的几何变换不变性,PointNet通过学习几何变换的参数,对点云数据进行对齐和变换。T-Net通过生成变换矩阵对原始点云数据进行变换,以更好地进行特征学习和提取。
-
多层感知器(MLP):PointNet使用多层感知器(MLP)对点云进行特征提取和分类/分割。
PointNet的主要应用包括:
- 3D物体分类:给定N个3D的点云,通过PointNet进行分类。
- 3D物体分割:对点云进行语义分割或实例分割。
PointNet的优势在于其简单高效的设计,能够直接处理点云数据,而无需将其转换为其他表示形式(如体素或网格)。这使得PointNet在基于点云的3D物体检测和分割任务中取得了当时最先进的性能。
voxelnet
VoxelNet是一种用于基于点云的3D物体检测的端到端学习框架,由2018年CVPR论文《VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection》提出。该框架的主要思想是将稀疏的点云数据转换成密集的体素表示,然后使用3D卷积网络进行特征提取和物体检测。
VoxelNet框架主要包括以下步骤:
-
点云预处理:将稀疏的点云数据转换成规则的体素网格表示。这一步通过将点云划分成规则的体素,并对每个体素内的点进行统计(如最大值、最小值、平均值等)来实现。
-
体素特征提取:使用3D卷积网络从体素网格中提取特征。这些特征能够描述体素内的点云分布和结构信息。
-
区域提议网络(RPN):基于提取的体素特征,使用RPN生成候选物体的3D边界框提议。RPN是一个全卷积网络,能够输出一系列3D边界框提议以及每个提议的置信度。
-
边界框回归和分类:对RPN生成的边界框提议进行回归和分类,以获得最终的物体检测结果。这一步通常使用3D卷积网络实现。
pointpillar
PointPillar是一种用于基于激光雷达(LiDAR)点云的3D物体检测的算法,由2019年CVPR论文《PointPillars: Fast Encoders for Object Detection from Point Clouds》提出。该算法的主要思想是将稀疏的点云数据转换成伪图像表示(每一个pixel不仅有原始的2D信息还包括了高度信息),然后使用2D卷积网络进行特征提取和物体检测。voxelnet很慢也很占内存。
PointPillar框架主要包括以下步骤:
-
点云预处理:将稀疏的点云数据转换成规则的伪图像表示。这一步通过将点云划分成规则的柱体(pillars),并对每个柱体内的点进行统计(如最大值、最小值、平均值等)来实现。
-
伪图像特征提取:使用2D卷积网络从伪图像中提取特征。这些特征能够描述每个柱体内的点云分布和结构信息。
-
区域提议网络(RPN):基于提取的伪图像特征,使用RPN生成候选物体的3D边界框提议。RPN是一个全卷积网络,能够输出一系列3D边界框提议以及每个提议的置信度。
-
边界框回归和分类:对RPN生成的边界框提议进行回归和分类,以获得最终的物体检测结果。这一步通常使用3D卷积网络实现。
PointPillar的创新之处在于其高效的计算方式,能够将稀疏的点云数据转换为密集的伪图像表示,从而利用成熟的2D卷积网络进行特征提取。这使得PointPillar在基于激光雷达的3D物体检测任务中取得了当时最先进的性能。
centerpoint
当anchor感应到附件有目标物体的时候,就会有一个很大的激活值,就是上面红色部分。
当物体是旋转的时候,anchor会误匹配,主要是因为anchor是正的,不能斜着
中心点的表征是热力图(关键点检测的loss):CLS*H*W,热力图的局部最大值认为是有目标obj
相关文章:

3D检测:从pointnet,voxelnet,pointpillar到centerpoint
记录centerpoint学习笔记。目前被引用1275次,非常高。 地址:Center-Based 3D Object Detection and Tracking (thecvf.com) GitHub - tianweiy/CenterPoint CenterPoint:三维点云目标检测算法梳理及最新进展(CVPR2021ÿ…...
使用canvas内置api完成图片的缩放平移和导出和添加提示
最近挺忙的,几乎没有时间去更新博客,今天正好在学习新东西,正好和大家分享一下。 最近要做一个使用canvas完成图片平移,缩放,添加标注的需求,完成的效果大概如下: 使用canvas内置api完成图片的缩…...

数据结构——二叉树——堆
前言: 在前面我们已经学习了数据结构的基础操作:顺序表和链表及其相关内容,今天我们来学一点有些难度的知识——数据结构中的二叉树,今天我们先来学习二叉树中堆的知识,这部分内容还是非常有意思的,下面我们…...

算法学习——LeetCode力扣图论篇3(127. 单词接龙、463. 岛屿的周长、684. 冗余连接、685. 冗余连接 II)
算法学习——LeetCode力扣图论篇3 127. 单词接龙 127. 单词接龙 - 力扣(LeetCode) 描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> … -> sk: 每一对相…...
状态模式详解:管理对象状态的利器
在软件设计中,我们经常会遇到需要根据对象的不同状态来执行不同行为的情况。为了优雅地管理这些状态及其对应的行为,状态模式(State Pattern)应运而生。本文将深入探讨状态模式的使用条件、Java代码实现,并结合现实社会…...

探索----------------阿里云
目录 一、阿里云四大件 1、云服务器ECS 2、云数据库RDS 3、负载均衡SLB 4、对象存储OSS 5、其他的云计算产品 1)内容分发网络CDN 2)专有网络 VPC 二、linux发行版本 三、你平时对系统会怎么优化(五大负载) 1、cpu 使用率…...

Tidb和MySQL性能简单测试对比
一、单SQL性能对比 由于TiDB的并发能力优秀,但是单个SQL执行延迟较差,为了客观对比,所以只用1个线程来压测tidb和mysql,以观察延迟情况 二、并发SQL性能对比 TiDB:v6.5.2 MySQL:8.0.26 (单机) 三、结论 …...
2024.2.6力扣每日一题——魔塔游戏
2024.2.6 题目来源我的题解方法一 贪心优先队列 题目来源 力扣每日一题;题序:LCP 30 我的题解 方法一 贪心优先队列 思路:使用贪心的思想,从左到右遍历,若遇到加上当前房间的生命值后小于等于0,由于需要…...
C# OAuth单点登录的实现
原理 单点登录(Single Sign-On,简称SSO)是一种身份验证技术,它允许用户使用一组凭据(如用户名和密码)登录多个相关但独立的系统,而无需在每个系统中都进行登录操作。下面是一个简单的SSO实现示…...

AtCoder Beginner Contest 347 (ABCDEF题)视频讲解
A - Divisible Problem Statement You are given positive integers N N N and K K K, and a sequence of length N N N, A ( A 1 , A 2 , … , A N ) A(A_1,A_2,\ldots,A_N) A(A1,A2,…,AN). Extract all elements of A A A that are multiples of K K K, divi…...

【vue2+antvx6】报错Cannot read properties of undefined (reading ‘toUpperCase‘)
我的代码是这样的 <el-collapseref"collapse"v-model"active"accordionclass"collapseStart"change"collapsechange"><el-collapse-item:name"String(index 1)"v-for"(i, index) in List":key"in…...
主流的开发语言、环境及其特点
主流的开发语言及其特点: 1. Python:以其简洁的语法和强大的库支持而闻名,适用于数据科学、人工智能和网络开发等领域。 2. Java:跨平台的编程语言,广泛应用于企业级应用、Android 开发和大型系统开发。 3. C…...
Android知识 - 代码混淆ProGuard规则介绍
ProGuard 的规则及示例 规则概述 ProGuard 是一个代码优化工具,它通过移除未使用的代码、重命名类、字段和方法等方式来减小应用的大小。在 ProGuard 的配置文件中,我们可以定义一系列的规则来控制优化和混淆的过程。 规则语法 ProGuard 的规则通常包…...
【Linux的进程篇章 - 冯诺依曼的体系结构】
Linux学习笔记---005 Linux冯诺依曼体系结构理解1、冯诺依曼体系结构1.1、冯诺依曼体系结构1.2、硬件层面1.3、数据层面1.4、那么冯诺依曼体系能干什么呢? 2、操作系统(Operastor System)2.1、概念2.2、操作系统层的核心功能 3、进程的初步理解 Linux冯诺依曼体系结…...
flask-(数据连接池的使用,定制命令,信号的使用,表关系的建立和查询)
文章目录 连接池实例flask定制命令flask 缓存的使用flask信号的使用sqlalchemy原生操作sqlalchemy操作表flask orm操作表一对多的增加和跨表查询 (一对一只需要关联字段加上 ,uniqueTrue)多对多关系的增加和查询多对多基本的增删改查 连接池 import pymy…...

设计模式学习笔记 - 设计模式与范式 -行为型:2.观察者模式(下):实现一个异步非阻塞的EventBus框架
概述 《1.观察者模式(上)》我们学习了观察者模式的原理、实现、应用场景,重点节介绍了不同应用场景下,几种不同的实现方式,包括:同步阻塞、异步非阻塞、进程内、进程间的实现方式。 同步阻塞最经典的实现…...

数据挖掘|贝叶斯分类器及其Python实现
分类分析|贝叶斯分类器及其Python实现 0. 分类分析概述1. Logistics回归模型2. 贝叶斯分类器2.1 贝叶斯定理2.2 朴素贝叶斯分类器2.2.1 高斯朴素贝叶斯分类器2.2.2 多项式朴素贝叶斯分类器 2.3 朴素贝叶斯分类的主要优点2.4 朴素贝叶斯分类的主要缺点 3. 贝叶斯分类器在生产中的…...

Linux文件(系统)IO(含动静态库的链接操作)
文章目录 Linux文件(系统)IO(含动静态库的链接操作)1、C语言文件IO操作2、三个数据流stdin、stdout、stderr3、系统文件IO3.1、相关系统调用接口的使用3.2、文件描述符fd3.3、文件描述符的分配规则3.3、重定向3.4、自制shell加入重…...

CI/CD实战-jenkins结合ansible 7
配置主机环境 在jenkins上断开并删除docker1节点 重新给master添加构建任务 将server3,server4作为测试主机,停掉其上后面的docker 在server2(jenkins)主机上安装ansible 设置jenkins用户到目标主机的免密 给测试主机创建用户并…...

内网渗透-(黄金票据和白银票据)详解(一)
目录 一、Kerberos协议 二、下面我们来具体分析Kerberos认证流程的每个步骤: 1、KRB_AS-REQ请求包分析 PA-ENC-TIMESTAMP PA_PAC_REQUEST 2、 KRB_AS_REP回复包分析: TGT认购权证 Logon Session Key ticket 3、然后继续来讲相关的TGS的认证过程…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...