AFDet: Anchor Free One Stage 3D Object Detection

news2024/11/27 14:27:32

论文链接:https://arxiv.org/pdf/2006.12671v1.pdf


前言

在嵌入式系统上操作的高效点云3D目标检测对于包括自动驾驶在内的许多机器人应用来说都是重要的。

大多数以前的工作都试图使用基于Anchor的检测方法来解决这个问题,这些方法有2个缺点:

  1. 后处理相对复杂且计算昂贵
  2. 调整Anchor参数很复杂

本文是第一个使用Anchor-free和NMS-Free的单阶段检测器AFDet解决这些缺点的算法

整个AFDet可以通过简化的后处理在CNN加速器或GPU上高效处理。

在没有附加功能的情况下

本文提出的AFDet在KITTI验证集和Waymo开放数据集验证集上与其他基于Anchor的方法相比也具有一定的竞争力。


简介

检测点云中的3D目标是自动驾驶最重要的感知任务之一

为了满足功率和效率的限制,大多数检测系统都在车辆嵌入式系统上运行

开发嵌入式系统友好的点云3D检测系统是实现自动驾驶的关键步骤

由于点云的稀疏性,直接在原始点云上应用3D或2D卷积神经网络(CNN)是低效的

一方面,引入了许多点云编码器来将原始点云编码为3D或2D CNN可以有效处理的数据格式

另一方面,一些工作直接从原始点云中提取特征用于3D检测,这是PointNet的启发

但在检测部分,大多数采用了在图像目标检测任务中被证明有效的基于Anchor的检测方法

基于Anchor的方法有2个主要缺点:

第一

非最大抑制(NMS)是基于Anchor的方法抑制重叠的高置信度检测边界框所必需的

但它可能会引入比较大的计算成本,尤其是对于嵌入式系统

即使在具有高效实现的现代高端桌面CPU上,处理一个KITTI点云帧也需要20毫秒以上,更不用说通常用于嵌入式系统的CPU了

第二

基于Anchor的方法需要Anchor选择,这既复杂又耗时,因为调整的关键部分可能是手动试错过程

每次向检测系统添加新的检测类别时,都需要选择诸如合适的Anchor数量、Anchor尺寸、Anchor角度和Anchor密度等超参数


可以摆脱NMS,设计一个高效的嵌入式系统友好的Anchor-Free点云3D检测系统吗?

图像检测中的Anchor-Free方法取得了显著的性能

在这项工作中,作者提出了一种具有简单后处理的Anchor-Free和无NMS的单阶段端到端点云3D目标检测器(AFDet)

在作者的实验中,使用PointPillars将整个点云编码为鸟瞰图(BEV)中的伪图像或类似图像的特征图

然而,AFDet可以与生成伪图像或类似图像的2D数据的任何点云编码器一起使用

编码后,应用具有上采样Neck的CNN输出特征图

该特征图连接到5个不同的头部,以预测BEV平面中的目标中心,并回归3D边界框的不同属性

最后,将5个头的输出组合在一起以生成检测结果

关键点热图预测头用于预测BEV平面中的目标中心

它将把每个物体编码成一个以heatmap为中心的小区域

在推断阶段,每一个heatmap值都将通过最大池化操作进行挑选

在此之后,不再将多个回归Anchor平铺到一个位置,因此不需要使用传统的NMS

这使得整个检测器可以在典型的CNN加速器或GPU上运行,为自动驾驶中的其他关键任务节省了CPU资源


总结

  1. 提出了一种Anchor-Free和无NMS检测器,用于简化后处理的点云3D目标检测
  2. AFDet是嵌入式系统友好的,可以以更少的工程工作量实现高处理速度
  3. 在KITTI验证集上,AFDet可以实现与以前的单阶段检测器相比具有竞争力的精度
  4. AFDet的一种变体在Waymo验证上超越了最先进的单阶段3D检测方法

相关工作

LiDAR-based 3D Object Detection

由于长度和顺序不固定,点云呈稀疏且不规则的格式,需要在输入神经网络之前对其进行编码

一些工作利用网格网格对点云进行体素化

诸如密度、强度、高度等特征在不同的体素中被连接为不同的通道

体素化点云被投影到不同的视图,例如BEV、距离视图(RV)等

以通过2D卷积处理,或者被保持在3D坐标中,以通过稀疏3D卷积处理

PointNet提出了一种使用原始点云作为输入进行3D检测和分割的有效解决方案

PointNet使用多层感知器和最大池化操作来解决点云的无序和非均匀性,并提供了令人满意的性能

基于原始点云输入的连续3D检测解决方案提供了有前景的性能,如PointNet++、Frustum PointNet、PointR CNN和STD

VoxelNet结合了体素化和PointNet,提出了体素特征提取器(VFE),其中在每个体素内实现了PointNet风格的编码器

尽管稀疏3D卷积被用于在VFE之后在z轴上进一步提取和下采样信息,但在SECOND中使用了类似的思想

VFE显著提高了基于LiDAR的检测器的性能,然而,使用从数据中学习的编码器,检测流水线变得更慢

PointPillars建议将点云编码为pillar而不是体素。结果,整个点云变成BEV伪图像,其通道等效于VFE的输出通道,而不是3个

在基于Anchor的方法中,为边界框编码提供预定义的框

然而,使用密集Anchor会导致大量潜在目标对象,这使得NMS成为一个不可避免的问题

之前的一些工作提到了Anchor-free概念

PointRCNN提出了一种基于全场景点云分割的Anchor-free box的3D proposals生成子网络

VoteNet从投票的兴趣点而不是预定义的Anchor框构建3D边界框

但它们都不是无NMS的,这使得它们效率较低,对嵌入式系统也不友好

此外,PIXOR是一个BEV检测器,而不是3D检测器

Camera-based 3D Object Detection

基于摄像头的解决方案随着降低成本的意愿而蓬勃发展

随着越来越复杂的网络的设计,基于摄像头的解决方案正在迅速赶上基于激光雷达的解决方案

MonoDIS利用了2D和3D检测损失的新颖解纠缠变换和3D边界框的新颖自监督置信分数

它在nuScenes 3D目标检测挑战中排名第一

CenterNet从特征图上的边界框中心预测目标的位置和类别

虽然最初设计用于2D检测,但CenterNet也有可能使用单摄像头进行3D检测

TTFNet提出了缩短训练时间和提高推理速度的技术

RTM3D预测图像空间中3D边界框的9个透视关键点,并利用几何规则恢复3D边界框


方法

在这里插入图片描述
将从3个方面详细介绍AFDet:点云编码器、Anchor-free检测器以及Backbone and Necks

点云编码器

为了进一步挖掘Anchor-free检测器的效率潜力,本文使用PointPillars作为点云编码器,因为其速度快

首先,将检测范围离散为鸟瞰图(BEV)平面(也是x-y平面)中的pillar

不同的点根据其x-y值指定给不同的pillar。在这一步骤中,每个点也将增加到D=9维

其次,具有足够数量点的预定义P数量的pillar将应用于线性层和最大池化操作,以创建大小为 F ∗ P F*P FP的输出张量

其中F是PointNet中线性层的输出通道数

由于P是所选pillar的数量,因此它们在整个检测范围内与原始pillar不是一一对应的

因此,第三步是将选定的Ppillar散射到它们在检测范围上的原始位置

之后,可以得到伪图像 I I I

尽管使用PointPillars作为点云编码器,但Anchor-free检测器与生成伪图像或类似图像的2D数据的任何点云编码器兼容

Anchor Free检测器

Anchor-free检测器由5个头组成

它们是keypoint heatmap head、 local offset head、z-axis location head、 3D object size head 和orientation head

关键点heatmap用于查找目标中心在BEV中的位置

offset regression图有助于heatmap在BEV中找到更精确的目标中心,也有助于恢复pillar化过程导致的离散化误差

在这里插入图片描述

对于 offset regression head,有两个主要功能

首先,它用于消除由pillar化过程引起的误差,在pillar化过程中,将浮动目标中心分配给BEV中的整数pillar位置

第二,它在细化heatmap目标中心的预测中起着重要作用,特别是当heatmap预测错误的中心时

具体而言,一旦heatmap预测到距离GT中心数个像素的错误中心,offset head就能够减轻甚至消除对GT目标中心的数个像素误差

在offset regression 图中围绕目标中心像素选择半径为R的正方形区域。到目标中心的距离越远,偏移值就越大

在这里插入图片描述
z轴位置回归

在BEV中定位目标之后,只有目标的x-y位置。因此,有z轴的位置头来回归z轴的值。使用L1损失直接回归z值

在这里插入图片描述
大小回归

回归的训练损失也是L1的损失

在这里插入图片描述

方向预测

目标k的方向是围绕垂直于地面的z轴旋转的标量角度

按照CenterNet将其编码为8个标量,每个bin有4个标量

2个标量用于softmax分类,另外2个用于角度回归

2个bin的角度略有重叠

损失函数

已经描述了每个损失。总的训练损失函数是

在这里插入图片描述
其中,λ表示每个头的权重。对于所有的回归头,包括局部偏移量、z轴位置、大小、方向回归

收集索引并解码

在训练阶段,不对整个特征映射进行反向传播。相反,只反向传播作为所有回归头的目标中心的索引

在推理阶段,使用最大池化和and操作来寻找在CenterNet之后的预测heatmap中的峰值,这比基于iou的NMS更快、更有效

在最大池化和and操作之后,可以从关键点heatmap中轻松地收集每个中心的索引

Backbone and Necks

在这项工作中对主干进行了几个关键修改,以支持Anchor-free检测器。网络包括主干部分和neck部分

主干部分类似于分类任务中使用的网络,该网络用于提取特征

neck部分用于对特征进行上采样,以确保来自主干的不同块的所有输出具有相同的空间大小,以便可以沿一个轴连接它们

图2显示了主干和neck的细节。

在这里插入图片描述

在生成特征图的过程中,不进行降采样,这对于保持KITTI数据集的类似检测性能至关重要

减少下采样步长只会增加FLOP,因此作者还减少了主干和Neck的过滤器数量。事实证明,主干和Neck的FLOP较少


实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《MySQL的基础语法》

【一】现实当前的数据库 show databases:记住这里的databases是复数形式,你可以简单理解为它不仅仅含有一个数据库,所以需要用到可数名词复数形式。 【二】创建数据库 create database 数据库的名字:记住这里的database用的是单数形式&#…

Django demo项目搭建

安装 Django 在应用程序开发中,分别创建env文件夹和wordspace文件夹。 env文件夹用于存放创建的虚拟环境,wordspace用于存放项目代码,至此实现虚拟环境和应用程序代码的分隔。 步骤1:创建文件夹,创建命令为mkdir en…

静态链接:空间与地址分配

前言 我们终于走到了链接这一步,对于链接这一步,它是将多个输入目标文件链接后输出一个可执行文件。我们拿两个程序a.c和b.c来举例说明链接的过程。 a.c: /* a.c */ extern int shared;int main(){int a 100;swap(&a,&shared); }…

从Mybatis到Mybatis-Plus学习

从Mybatis到Mybatis-PlusMybatis的入门Mybatis的配置解析核心配置文件分页配置注解开发mybatis的执行流程多对一一对多动态SQLmybatis 的缓存Mybatis-plus快速入门mybatis-plus的框架结构图分页查询和删除执行SQL分析打印条件构造器Wrapper代码生成器Mybatis的入门 环境&#…

io复用函数的使用

目录 一、概念 二、使用 1.select系统调用 代码实现 前言: 一般多客户端在和服务器通信时,服务器在执行recv时会先阻塞,然后按照顺序依次处理客户端,无论客户端有无数据都会被处理,这样大大降低了执行效率。此时就引…

代理 模式

代理模式 Proxy Pattern 为其他对象提供一个代理以控制对这个对象的访问 可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。 静态代理 直接写死的代码的代理逻辑 动态代理 动态…

12.2、后渗透测试--令牌窃取

攻击机kali:192.168.11.106靶机windows server 2008 R2:192.168.11.134(包含ms17_010漏洞)一、令牌简介与原理 令牌(Token) 就是系统的临时密钥,相当于账户名和密码,用来决定是否允许这次请求和判断这次请求…

二进制搭建k8s——部署node节点

上篇:二进制搭建k8s——部署etcd集群和单master 二进制搭建k8s——部署node节点二进制搭建k8s——部署node节点环境部署node节点部署网络组件方法一:部署Flannel方法二:部署 CalicoCNI网络插件介绍Kubernetes的三种网络K8S 中 Pod 网络通信&a…

浅浅讲解下Linux内存管理之CMA

说明: Kernel版本:4.14ARM64处理器,Contex-A53,双核使用工具:Source Insight 3.5, Visio 1. 概述 Contiguous Memory Allocator, CMA,连续内存分配器,用于分配连续的大块内存。CMA…

c语言内存和文件处理有关知识

内存 分配内存的函数calloc&#xff0c;malloc 定义于头文件 <stdlib.h>功能malloc分配内存(函数)calloc分配并清零内存(函数)realloc扩充之前分配的内存块(函数)free归还还之前分配的内存(函数)aligned_alloc(C11)分配对齐的内存(函数) 函数原型 void *malloc(unsigne…

Java基础之Collection的ArrayList

Java基础之Collection的ArrayList一、add()与addAll()二、remove()三、trimToSize()1、案例一、add()与addAll() 跟C 的vector不同&#xff0c;ArrayList没有push_back()方法&#xff0c;对应的方法是add(E e)&#xff0c;ArrayList也没有insert()方法&#xff0c;对应的方法是…

Oracle---初学篇

Oracle初学篇 Oracle的启动&#xff0c;监听&#xff0c;用户 文章目录Oracle初学篇Oracle的启动Oracle的监听监听服务的主要文件1.listener.ora2.tnsnames.ora3.sqlnet.oraOracle用户Oracle安装成功后默认的三个用户创建用户Oracle的启动 之前写了关于如何在CentOS7上搭建Ora…

2021年全国研究生数学建模竞赛华为杯D题抗乳腺癌候选药物的优化建模求解全过程文档及程序

2021年全国研究生数学建模竞赛华为杯 D题 抗乳腺癌候选药物的优化建模 原题再现&#xff1a; 一、背景介绍   乳腺癌是目前世界上最常见&#xff0c;致死率较高的癌症之一。乳腺癌的发展与雌激素受体密切相关&#xff0c;有研究发现&#xff0c;雌激素受体α亚型&#xff0…

LeetCode 0547. 省份数量:图的连通分量

【LetMeFly】547.省份数量 力扣题目链接&#xff1a;https://leetcode.cn/problems/number-of-provinces/ 有 n 个城市&#xff0c;其中一些彼此相连&#xff0c;另一些没有相连。如果城市 a 与城市 b 直接相连&#xff0c;且城市 b 与城市 c 直接相连&#xff0c;那么城市 a …

Windows文件夹开启大小写敏感

Windows 的文件系统的文件名&#xff0c;是大小写不敏感的&#xff0c;也就是你的文件名是 a.txt 或者 A.txt&#xff0c;在 Windows 中都是一视同仁&#xff0c;认为是同一个文件。 自从 Windows 10 引入 Linux 子系统&#xff08;WSL&#xff09;后&#xff0c;有越来越多开…

JAVA毕业设计——基于ssm的汽车租赁管理系统 (源代码+数据库)

代码地址 https://github.com/ynwynw/carRental-public 毕业设计所有选题地址 https://github.com/ynwynw/allProject 基于Springboot的汽车租赁管理系统 (源代码数据库)601 一、系统介绍 汽车租赁系统总共分为两个大的模块&#xff0c;分别是系统模块和业务模块。其中系统模…

基于混沌原子搜索优化的电力系统(HPS)负载频率自动控制(ALFC)(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

Spring Security 中的四种权限控制方式

Spring Security 中对于权限控制默认已经提供了很多了&#xff0c;但是&#xff0c;一个优秀的框架必须具备良好的扩展性&#xff0c;恰好&#xff0c;Spring Security 的扩展性就非常棒&#xff0c;我们既可以使用 Spring Security 提供的方式做授权&#xff0c;也可以自定义授…

如何实现外网访问API接口

Application Programming Interface 缩写为API&#xff0c;中文翻译为“应用程序接口”&#xff0c;是一些预先定义的函数&#xff0c;或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&…

TVS管开关电源防护应用及电源防护元件的品类

瞬态抑制二极管简称TVS管。其作用原理是能够在极短的时间内承受反向电压的冲击&#xff0c;使得两极之间的电压钳位在特定电压水平上&#xff0c;有效避免了对后面电路的冲击&#xff0c;从而保护了被保护电子线路中的精密元件不受其损害。 瞬态抑制二极管TVS的钳位响应速度为为…