当前位置: 首页 > 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的认证过程…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...