无人驾驶中的激光雷达(四)Pointpillar+CenterNet实现的3D点云目标检测网络

本文主要是介绍无人驾驶中的激光雷达(四)Pointpillar+CenterNet实现的3D点云目标检测网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简要介绍

  • 引言
    • 基本思路
    • 一一说明
    • 未完成的东西

引言

好久没总结过新东西了,这次就把最近自己通过拼凑代码实现的一个点云目标检测网络现在这做个总结吧。
不过我的网络还没来得及改进,大思想就和别人的撞车了,人家已经发了CVPR,对于自己这个半成品网络也没什么兴趣继续改进了。
CVPR2021的论文是:
Center-based 3D Object Detection and Tracking
代码:https://github.com/tianweiy/CenterPoint
我搭的网络目前叫CenterPillar,当然也就图一乐。。。我是在KITTI数据集上跑的,先把结果放出来吧:
在笔记本的RTX2060mq上可以跑18fps左右。
在这里插入图片描述
代码链接放这:https://github.com/wangx1996/CenterPillarNet

基本思路

其实思路很简单,pointpillar加centernet构成,pointpillar用来作为点云的编码网络,centernet用来做特征提取的backbone和neck以及head部分。整体思路基本与去年地平线的AFdet方法一致,不过我没有将centernet网络的输出再上采样回原有尺寸,而是1/2大小,并且backbone用的也不同,目标角度编码方式也不同。

一一说明

网络头采用pointpillar没啥好说的,编码为pesudo image
在这里插入图片描述
之后将pesudo image输入backbone中,这里不同原有的centernet 的DLA34seg,原有的网络的层数很多,执行效率不是很高,试验了多种组合后最终才确定了一个效率和准确度在这之中算是好的。
具体DLA的结构以及上采样部分可查看Centernet:
在这里插入图片描述
最后的neck和head与AFdet中的基本一致:
在这里插入图片描述

不过角度的编码用的是cos与sin来表示目标的角度值,没有用论文中的方法,因为试了这种方式,发现loss很难下降,仔细查明后这种方法一般多用在二维图像转三维目标的角度编码中,应该不太适用于点云的编码。

未完成的东西

代码的大框架用的是:
second-pytorch
SFA3D
没有像pointpillar一样加入随机真值增减的数据增强部分,这部分也不想再加了,如果谁有兴趣可以试试效果。
后期也想过先找heatmap目标再对目标box尺寸用pointnet进一步做调整,不过CVPR21中的论文以及做了,我就没必要再做下去了。

放一下在测试集上的结果:
Car AP(Average Precision)@0.70, 0.70, 0.70:
bbox AP:78.04, 73.71, 66.88
bev AP:79.25, 73.67, 66.84
3d AP:60.75, 55.75, 51.03
Car AP(Average Precision)@0.70, 0.50, 0.50:
bbox AP:78.04, 73.71, 66.88
bev AP:82.64, 77.12, 69.38
3d AP:82.31, 76.68, 69.07
可以看到在BEV上效果还行,3Dbox不太行,所以我后期想加入pointnet再做一次回归,不过现在不用了。。。

不过如果你有兴趣可以在我的基础上继续改进,说不定能改出什么比较好的检测方法。

这篇关于无人驾驶中的激光雷达(四)Pointpillar+CenterNet实现的3D点云目标检测网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/824203

相关文章

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

PyQt6/PySide6中QTableView类的实现

《PyQt6/PySide6中QTableView类的实现》本文主要介绍了PyQt6/PySide6中QTableView类的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录1. 基本概念2. 创建 QTableView 实例3. QTableView 的常用属性和方法

PyQt6/PySide6中QTreeView类的实现

《PyQt6/PySide6中QTreeView类的实现》QTreeView是PyQt6或PySide6库中用于显示分层数据的控件,本文主要介绍了PyQt6/PySide6中QTreeView类的实现... 目录1. 基本概念2. 创建 QTreeView 实例3. QTreeView 的常用属性和方法属性

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

pandas中位数填充空值的实现示例

《pandas中位数填充空值的实现示例》中位数填充是一种简单而有效的方法,用于填充数据集中缺失的值,本文就来介绍一下pandas中位数填充空值的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是中位数填充?为什么选择中位数填充?示例数据结果分析完整代码总结在数据分析和机器学习过程中,处理缺失数