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

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算法分为两个阶段:

  1. 第一阶段:使用关键点检测器检测目标的中心点,然后基于中心点特征回归出目标的3D尺寸、朝向和速度等属性。

  2. 第二阶段:基于目标额外的点特征,对第一阶段得到的属性进行优化

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)。这些锚点具有不同的尺寸和宽高比,以覆盖图像中可能出现的各种形状和大小的目标。

锚点机制的工作流程如下:

  1. 在训练阶段,网络首先生成一系列锚点,这些锚点覆盖了图像中可能出现的各种形状和大小的目标。
  2. 然后,网络预测每个锚点内部是否包含一个目标,如果是,则进一步预测目标的类别和锚点需要调整的偏移量,以更好地匹配目标的真实边界框。
  3. 在推理阶段,网络使用这些锚点作为初始猜测,快速检测图像中的目标

缺点:不是end2end,需要nms后处理。

NMS

NMS(Non-Maximum Suppression,非极大值抑制)是一种在目标检测任务中常用的后处理步骤,用于去除冗余的检测边界框,确保每个目标只被检测一次。

NMS的主要步骤如下:

  1. 排序:首先,根据检测边界框的置信度(通常由检测算法给出)对所有边界框进行降序排序。

  2. 选择最高置信度的边界框:选择置信度最高的边界框作为当前考虑的边界框。

  3. 抑制与当前边界框高度重叠的边界框:计算当前边界框与其他所有边界框的交并比(IoU,Intersection over Union),如果IoU超过某个预定义的阈值(例如0.5),则将这些边界框抑制(即移除或忽略)。

  4. 重复步骤2和3:从剩余的边界框中选择置信度最高的边界框,重复步骤3,直到所有的边界框都被处理过。

  5. 输出最终检测结果:最后,剩下的边界框就是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的关键创新点包括:

  1. 对称函数(Set Abstraction):为了处理点云的无序性,PointNet引入了对称函数,也称为集合函数。该操作将无序的点集表示为固定长度的向量。在PointNet中,集合函数的实现形式是基于最大池化(max)

  2. T-Net:为了获得点云的几何变换不变性,PointNet通过学习几何变换的参数,对点云数据进行对齐和变换。T-Net通过生成变换矩阵对原始点云数据进行变换,以更好地进行特征学习和提取。

  3. 多层感知器(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框架主要包括以下步骤:

  1. 点云预处理:将稀疏的点云数据转换成规则的体素网格表示。这一步通过将点云划分成规则的体素,并对每个体素内的点进行统计(如最大值、最小值、平均值等)来实现。

  2. 体素特征提取:使用3D卷积网络从体素网格中提取特征。这些特征能够描述体素内的点云分布和结构信息。

  3. 区域提议网络(RPN):基于提取的体素特征,使用RPN生成候选物体的3D边界框提议。RPN是一个全卷积网络,能够输出一系列3D边界框提议以及每个提议的置信度。

  4. 边界框回归和分类:对RPN生成的边界框提议进行回归和分类,以获得最终的物体检测结果。这一步通常使用3D卷积网络实现。

pointpillar

PointPillar是一种用于基于激光雷达(LiDAR)点云的3D物体检测的算法,由2019年CVPR论文《PointPillars: Fast Encoders for Object Detection from Point Clouds》提出。该算法的主要思想是将稀疏的点云数据转换成伪图像表示(每一个pixel不仅有原始的2D信息还包括了高度信息),然后使用2D卷积网络进行特征提取和物体检测。voxelnet很慢也很占内存。

PointPillar框架主要包括以下步骤:

  1. 点云预处理:将稀疏的点云数据转换成规则的伪图像表示。这一步通过将点云划分成规则的柱体(pillars),并对每个柱体内的点进行统计(如最大值、最小值、平均值等)来实现。

  2. 伪图像特征提取:使用2D卷积网络从伪图像中提取特征。这些特征能够描述每个柱体内的点云分布和结构信息。

  3. 区域提议网络(RPN):基于提取的伪图像特征,使用RPN生成候选物体的3D边界框提议。RPN是一个全卷积网络,能够输出一系列3D边界框提议以及每个提议的置信度。

  4. 边界框回归和分类:对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&#xff…...

使用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…...

主流的开发语言、环境及其特点

主流的开发语言及其特点&#xff1a; 1. Python&#xff1a;以其简洁的语法和强大的库支持而闻名&#xff0c;适用于数据科学、人工智能和网络开发等领域。 2. Java&#xff1a;跨平台的编程语言&#xff0c;广泛应用于企业级应用、Android 开发和大型系统开发。 3. C&#xf…...

Android知识 - 代码混淆ProGuard规则介绍

ProGuard 的规则及示例 规则概述 ProGuard 是一个代码优化工具&#xff0c;它通过移除未使用的代码、重命名类、字段和方法等方式来减小应用的大小。在 ProGuard 的配置文件中&#xff0c;我们可以定义一系列的规则来控制优化和混淆的过程。 规则语法 ProGuard 的规则通常包…...

【Linux的进程篇章 - 冯诺依曼的体系结构】

Linux学习笔记---005 Linux冯诺依曼体系结构理解1、冯诺依曼体系结构1.1、冯诺依曼体系结构1.2、硬件层面1.3、数据层面1.4、那么冯诺依曼体系能干什么呢&#xff1f; 2、操作系统(Operastor System)2.1、概念2.2、操作系统层的核心功能 3、进程的初步理解 Linux冯诺依曼体系结…...

flask-(数据连接池的使用,定制命令,信号的使用,表关系的建立和查询)

文章目录 连接池实例flask定制命令flask 缓存的使用flask信号的使用sqlalchemy原生操作sqlalchemy操作表flask orm操作表一对多的增加和跨表查询 &#xff08;一对一只需要关联字段加上 ,uniqueTrue&#xff09;多对多关系的增加和查询多对多基本的增删改查 连接池 import pymy…...

设计模式学习笔记 - 设计模式与范式 -行为型:2.观察者模式(下):实现一个异步非阻塞的EventBus框架

概述 《1.观察者模式&#xff08;上&#xff09;》我们学习了观察者模式的原理、实现、应用场景&#xff0c;重点节介绍了不同应用场景下&#xff0c;几种不同的实现方式&#xff0c;包括&#xff1a;同步阻塞、异步非阻塞、进程内、进程间的实现方式。 同步阻塞最经典的实现…...

数据挖掘|贝叶斯分类器及其Python实现

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

Linux文件(系统)IO(含动静态库的链接操作)

文章目录 Linux文件&#xff08;系统&#xff09;IO&#xff08;含动静态库的链接操作&#xff09;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&#xff0c;server4作为测试主机&#xff0c;停掉其上后面的docker 在server2&#xff08;jenkins&#xff09;主机上安装ansible 设置jenkins用户到目标主机的免密 给测试主机创建用户并…...

内网渗透-(黄金票据和白银票据)详解(一)

目录 一、Kerberos协议 二、下面我们来具体分析Kerberos认证流程的每个步骤&#xff1a; 1、KRB_AS-REQ请求包分析 PA-ENC-TIMESTAMP PA_PAC_REQUEST 2、 KRB_AS_REP回复包分析&#xff1a; TGT认购权证 Logon Session Key ticket 3、然后继续来讲相关的TGS的认证过程…...

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

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

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

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

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...