【三维目标检测】SASSD(一)

news2024/11/26 13:43:30

        SASSD是用于点云三维目标检测模型算法,发表在CVPR 2020《Structure Aware Single-stage 3D Object Detection from Point Cloud》,论文地址为“https://www4.comp.polyu.edu.hk/~cslzhang/paper/SA-SSD.pdf”。SASSD与基于Anchor的目标检测模型的结构基本保持一致,其核心特点在于采用了一个语义分割网络来辅助候选框特征提取,使产生的候选框质量更高。辅助网络这一点与PointRCNN和VoteNet的部分思想很接近。不同之处在于,SASSD提取体素中心点特征时融合了不同尺度下近邻体素的特征,从而使得网络可以有效获取到局部结构特征(Structure Aware)。另一方面,这个辅助网络仅在训练时用到,在推理时则完全拆解下来,从而使得模型在实际部署过程种不增加额外开销。因此,SASSD辅助网络的作用在于提高模型训练精度。

1 源码与输入数据

        源码采用的是mmdetection3d框架中的SASSD模型。mmdetection3d安装和调试验证可参考本博客之前的专栏【mmdetection3d】mmdetection3d安装详细步骤_Coding的叶子的博客-CSDN博客_mmdetection3d安装,里面有详细介绍。

        数据采用的是kitti,为了快速进行算法调试、训练、评估和验证,以及快速下载,我制作了一个mini kitti数据集,数据集的文件目录结构与完整KITTI数据集保持一致。其中,小型的KITTI数据集,即 mini kitti保存了20个训练样本和5个测试样本。下载地址为:minikitti数据集-深度学习文档类资源-CSDN下载。

        下载的数据包含4个部分,即激光雷达数据velodyne、图像数据image_2、校准数据calib和标注数据label_2。如果需要对应的ImageSets,请下载:train_val_testforminikitti-深度学习文档类资源-CSDN下载,将下载的文件夹重名为ImageSets即可。

        关于KITTI各个部分的介绍请分别参考以下内容:

KITTI数据集简介(一) — 激光雷达数据_Coding的叶子的博客-CSDN博客_雷达数据集

KITTI数据集简介(二) — 标注数据label_2_Coding的叶子的博客-CSDN博客_kitti数据集标注

KITTI数据集简介(三) — 图像数据image_2_Coding的叶子的博客-CSDN博客

KITTI数据集简介(四) — 图像数据calib_Coding的叶子的博客-CSDN博客

        数据预处理部分可以参考Voxelnet的数据处理方式加以理解:【三维目标检测】VoxelNet(二):数据处理_Coding的叶子的博客-CSDN博客。

        下载后直接将数据保存在mmdetection 3工程所在目录的data文件夹下,目录结构如下图所示,然后执行下文第2节中的kitti数据预处理命令。

 2 mmdetection3d kitti数据处理与模型训练

        mmdetection3d kitti (持续更新)_Coding的叶子的博客-CSDN博客

python tools/create_data.py kitti --root-path ./data/kitti --out-dir ./data/kitti --extra-tag kitti

 3 源码运行调试

        mmdetection3d的SASSD源码运行命令如下:

python tools/train.py configs/sassd/sassd_6x8_80e_kitti-3d-3class.py

3.1 稀疏卷积版本

        SASSD采用了稀疏卷积,需要安装spconv 2.0库。安装方式如下,其中102表示cuda版本为10.2,且最低支持CUDA 10.2。

pip install cumm-cu102
pip install spconv-cu102

        如果没有安装spconv 2.0则有可能报如下错误:

        (1)RuntimeError: /tmp/mmcv/mmcv/ops/csrc/pytorch/cuda/sparse_indice.cu 123。

        (2)RuntimeError: indices must be contiguous。

3.2 标签处理

        由于程序运行采用了上述Mini Kitti数据集,并且模型将检测行人、汽车和骑手三类目标,但是训练样本种几乎不含骑手这一目标,直接运行程序可能会报以下错误:

        (1)KeyError: 'KittiDataset: \'ObjectSample: "DataBaseSampler: \\\'Cyclist\\\'"\''

        (2)ValueError: need at least one array to stack

        为了让样本种含有骑手这一目标,可在data/kitti/label_2文件夹下,将几个标注文件的部分行人或汽车标签改成骑手(Cyclist)。改完之后程序即可正常运行。

4 SASSD简介

        SASSD模型的整体结构如下图所示。SASSD与基于Anchor的目标检测模型的结构基本保持一致,其核心特点在于采用了一个类似语义分割的辅助网络(Auxiliary Network)来学习区分前景点和背景点,从而辅助候选框特征提取,使产生的候选框质量更高。辅助网络这一点与PointRCNN和VoteNet的部分思想很接近。不同之处在于,SASSD提取体素中心点特征时融合了不同尺度下近邻体素的特征,从而使得网络可以有效获取到局部结构特征(Structure Aware)。另一方面,这个辅助网络仅在训练时用到,在推理时则完全拆解下来,从而使得模型在实际部署过程种不增加额外开销。因此,SASSD辅助网络的作用在于提高模型训练精度。

5 模型结构与代码详解

        模型详细结构及推理过程请参考下一篇博客:预计本周内更新。

6​​​​​​​ 【python三维深度学习】python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_python点云拼接从三维点云基础知识到深度学习,将按照以下目录持续进行更新。更新完成的部分可以在三维点云专栏中查看。含数据与python源码。https://blog.csdn.net/suiyingy/article/details/124017716

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

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

相关文章

Kafka(四)- Kafka 生产者

文章目录一、生产者消息发送流程1. 发送流程2. 生产者重要参数列表二、异步发送 API1. 普通异步发送2. 带回调函数的异步发送3. 同步发送三、生产者分区1. 分区好处2. 生产者发送消息的分区策略(1)默认的分区器 DefaultPartitioner(2&#xf…

行业沙龙第四期丨企业供应链协同的数字化解痛之道

当前,数字经济正在蓬勃发展,我们正在迈向一个协同一体的全球化时代。所谓协同,协者,众和之同也,多方能够协作才能达到一个共同的目标。其中,数据是实现协同的基本要素,技术是实现协同重要途径&a…

网络安全 核心基础篇总结

目录 前言 网络安全三大要素 CIA含义 1. Confidentiality(机密性) 1.1 机密性主要三个解决方法 1.1.1 加密 1.1.2 权限管理 1.1.3 敏感信息暴露 2. Integrity(完整性) 3. Availabitity(可用性) 威胁…

基于51单片机水塔水箱液水位WIFI监控报警设计proteus仿真原理图PCB

功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.WIFI实时上传当前水位状态 2.通过液位传感器检测液位,检测到最低液位和最高液位时,超过设定阈值将声光报警 3.通过状态指示灯显示当前液位情况,三种颜色,红色代表…

快来给你的宠物视频加个表情特效吧

摘要:我们将给猫贴一张卡通脸,给 Elon Musk 贴上小胡子,给小狗贴上驯鹿角!本文分享自华为云社区《视频AI,给你的宠物加个表情特效!》,作者:HWCloudAI。 GAN 监督学习是一种联合端到…

Android适配【入坑指南+解决痛点】

Android适配是一个大坑,你可能早有耳闻。适配问题到底有多坑?为什么坑?以及如何从坑里爬出来? 概述 Android屏幕尺寸各异,而我们不可能根据各种尺寸都设计一套原型图去匹配,我们需要利用适配这一个过程把…

冷热电气多能互补的微能源网鲁棒优化调度附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

基于Session的认证与授权实践

Spring Security系列文章 认证与授权之Cookie、Session、Token、JWT基于Session的认证与授权实践 基于Session的认证方式 基于 session 的认证方式如下图: 基于 Session 的认证机制由 Servlet 规范定制,Servlet 容器已实现,用户通过 HttpSes…

Matplotlib入门[05]——注释与标签

Matplotlib入门[05]——注释与标签 参考: https://ailearning.apachecn.org/ Matplotlib官网 plt.legend参数 使用Jupyter进行练习 注释 使用文本框进行注释 import numpy.random import matplotlib.pyplot as pltfig plt.figure(1, figsize(5,5)) # plt.clf…

ag-Grid Enterprise v28.2.1 企业版注册版

世界上最好的 JavaScript 网格 ag-Grid Enterprise v28.2.1 功能丰富 ag-Grid Enterprise v28.2.1 的性能、功能集和质量在 JavaScript 数据网格中前所未见。AG Grid 中的许多功能都是 AG Grid 独有的,并且只是将 AG Grid 归为一类,而不会影响质量或性能…

(详解错误情况,及解决方法)Vue 数据更新了但页面没有更新的情况

点个关注,赞一下栓Q 背景 在vue项目中,有些我们会遇到修改完数据,但是视图却没有更新的情况。具体的场景不一样,解决问题的方法也不一样。在网上看了很多文章,在此总结汇总一下。针对,数据更新视图没有更…

你知道哪些常用快捷键?电脑快捷键大全,打工人必备!

所谓的电脑快捷键,就是利用电脑键盘上的一个或几个按键组合完成一个功能命令,从而提高电脑的操作速度,带给我们更便捷的操作方式。电脑常用的快捷键是什么?以下是一些常用电脑快捷键的使用和功能的简要介绍。希望电脑快捷键大全能…

演讲实录 | OpenMLDB 整合自动特征工程

本文整理自 OpenMLDB 社区开发者、伊利诺伊大学 徐鹏程 在 OpenMLDB Meetup No.7 中的分享——《OpenMLDB 整合自动特征工程》。 大家好,我是来自伊利诺伊大学的硕士在读学生,也是 OpenMLDB 开源社区的贡献者——徐鹏程。我参与开发的项目,也…

RabbitMQ——RabbitMQ的六种工作模式详解

RabbitMQ 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang(高并发语言)语言来编写的,并且RabbitMQ是基于AMQP协议的 AMQP协议 Advanced Message Queuing Protocol(高级消…

JVM之垃圾回收器一

如何判断对象是否存活 引用计数器 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的对象就是不可能再被使用的。 Java语言中没有选用引用计数算法…

对比分析小游戏引擎孰优孰劣

随着微信生态中,小程序应用指数级的增长,许多休闲游戏变成为了众多游戏厂商流量变现的新手段。以近期很火的“羊了个羊”为例,它便是我们常常所说的小游戏。 游戏和小游戏的区别 要盘点小游戏开发引擎之前,我们得先来了解下游戏…

leetcode 638. 大礼包-思路整理

题目 在 LeetCode 商店中, 有n件在售的物品。每件物品都有对应的价格。然而,也有一些大礼包,每个大礼包以优惠的价格捆绑销售一组物品。 给你一个整数数组price表示物品价格,其中price[i]是第i件物品的价格。另有一个整数数组nee…

扩散模型(Diffusion)最新综述+GitHub论文汇总-A Survey On Generative Diffusion

扩散模型(Diffusion Model)最新综述GitHub论文汇总-A Survey On Generative Diffusion 本综述来自香港中文大学Pheng-Ann Heng、西湖大学李子青实验室和浙江大学陈广勇团队,对现有的扩散生成模型进行了全面的回顾。本文首先提出了diffusion model改进算法的细化分类…

Thread类及常见方法

文章目录一、Thread常见构造方法二、Thread常见属性三、Thread常见方法start()获取当前线程休眠当前线程中断线程join()一、Thread常见构造方法 Thread类是JVM用来管理线程的一个类,每个线程都有唯一一个Thread对象与之对应,JVM会将这些对象组织起来&am…

世界杯征文活动 | 神奇!一段JavaScript代码生成会动的足球

世界杯征文活动 | 神奇!一段JavaScript代码生成会动的足球 文章目录前言一、效果展示二、代码解析1.把足球图片转换为base64格式2.根据base64格式的字符串,创建img标签图片对象3.创建存放图片img的div标签对象4.使div旋转起来总结前言 花有重开日&#…