3D目标检测实战 | KITTI数据集可视化详解(附Python实现)

news2024/11/17 20:41:59

目录

  • 1 概述
  • 2 点云可视化
    • 2.1 原始点云
    • 2.2 3D检测框+点云
    • 2.3 点云鸟瞰视图BEV
  • 3 图像可视化
    • 3.1 原始图像
    • 3.2 2D检测框+图像
    • 3.3 3D检测框+图像
    • 3.4 点云-图像对齐

1 概述

KITTI数据集是一个广泛被用于研究和开发自动驾驶和计算机视觉算法的公开数据集,其数据格式详解请参考3D目标检测实战 | 图解KITTI数据集与数据格式

通过可视化KITTI数据集,可以验证和评估针对自动驾驶和计算机视觉任务的算法的性能。可以将算法应用于数据集中的图像、点云、车辆轨迹等数据,并直观地观察算法的输出结果,从而判断算法的有效性和准确性。同时,也有助于深入理解自动驾驶和计算机视觉任务所涉及的数据类型和结构,从而为算法设计和数据处理提供洞察和启发。

2 点云可视化

2.1 原始点云

核心代码如下所示:

def drawPointCloud3d(self, pts_lidar: np.ndarray, fig: mlab.figure=None, bgcolor: tuple=(0, 0, 0),
    fgcolor: tuple=(1.0, 1.0, 1.0), show_intensity: bool=False, size: tuple=(600, 600)) -> mlab.figure: 
	if not isinstance(pts_lidar, np.ndarray):
	    pts_lidar = pts_lidar.cpu().numpy()
	
	if fig is None:
	    fig = mlab.figure(figure=None, bgcolor=bgcolor, fgcolor=fgcolor, engine=None, size=size)
	
	if show_intensity:
	    mlab.points3d(pts_lidar[:, 0], pts_lidar[:, 1], pts_lidar[:, 2], pts_lidar[:, 3],
	        mode='point', colormap='jet', scale_factor=1, figure=fig)
	else:
	    mlab.points3d(pts_lidar[:, 0], pts_lidar[:, 1], pts_lidar[:, 2],
	        mode='point', colormap='jet', scale_factor=1, figure=fig)
	
	return fig

可视化如下

在这里插入图片描述

2.2 3D检测框+点云

核心代码如下所示:

pts_lidar = d.getLidar(d.index_sample_list[index])
gt_boxes3d = d.infos[index]['annos']["gt_boxes_lidar"]
name = d.infos[index]['annos']["name"]
fig = V.drawPointCloud3d(pts_lidar, show_intensity=True)
V.drawBoxes3dInLidar(gt_boxes3d, fig, cls_type=name)
V.show()

可视化如下

在这里插入图片描述

2.3 点云鸟瞰视图BEV

核心代码如下所示:

pts_lidar_slice = d.getSlicePointCloud(d.index_sample_list[index], 0.25, 0.2, [(0, 20), (-5, 5), (-3.5, 0.6)])
gt_boxes3d = d.infos[index]['annos']["gt_boxes_lidar"]
name = d.infos[index]['annos']["name"]
V.drawBoxes3dProjectedInBev(pts_lidar_slice, gt_boxes3d, name)

可视化如下

在这里插入图片描述

3 图像可视化

3.1 原始图像

核心代码如下所示:

img, _ = d.getImage(d.index_sample_list[index])
V.drawImage(img)

可视化如下

在这里插入图片描述

3.2 2D检测框+图像

核心代码如下所示:

img, _ = d.getImage(d.index_sample_list[index])
gt_boxes2d = d.infos[index]['annos']["bbox"]
name = d.infos[index]['annos']["name"]
V.drawBoxes2dInImage(gt_boxes2d, img, cls_type=name)

可视化如下所示

在这里插入图片描述

3.3 3D检测框+图像

核心代码如下:

img, _ = d.getImage(d.index_sample_list[index])
gt_boxes3d = d.infos[index]['annos']["gt_boxes_lidar"]
name = d.infos[index]['annos']["name"]
V.drawBoxes3dInImage(gt_boxes3d, img, d.getCalib(d.index_sample_list[index]), cls_type=name)

可视化如下所示

在这里插入图片描述

3.4 点云-图像对齐

核心代码如下:

img, _ = d.getImage(d.index_sample_list[index])
pts_lidar_fov = d.getFovPointCloud(d.index_sample_list[index])
V.drawLidarInImage(pts_lidar_fov, img, d.getCalib(d.index_sample_list[index]))

可视化如下所示

在这里插入图片描述

完整工程代码请联系下方博主名片获取


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

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

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

相关文章

[HNCTF 2022 WEEK2]easy_unser - 反序列化+wakeup绕过+目录绕过

题目代码&#xff1a; <?php include f14g.php;error_reporting(0);highlight_file(__FILE__);class body{private $want,$todonothing "i cant get you want,But you can tell me before I wake up and change my mind";public function __construct($want){…

一文讲清楚网络安全是什么?网络安全工程师需要学什么?就业前景如何?

前言 什么是网络安全&#xff1f; 网络安全是指网络系统的硬件、软件及其系统中的数 据受到保护&#xff0c;不因偶然的或者恶意的原因而遭受到破坏、 更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;网络服务不中断。 网络安全是指通过各种技术、措施和行为来保…

解决Ubuntu系统字体太小的问题

使用一个工具即可 sudo apt install gnome-tweaks安装成功之后&#xff1a; 在终端输入下面的命令 gnome-tweaks 这里可以将缩放比例调大&#xff0c;整个字体就放大了&#xff01;

MySQL数据库入门到精通——进阶篇(2)

黑马程序员 MySQL数据库入门到精通——进阶篇&#xff08;2&#xff09; 1. SQL优化1.1 插入数据1.2 主键优化1.3 order by优化1.4 group by优化1.5 limit优化1.6 count优化1.7 update优化 2. 视图2.1 视图-介绍及基本语法2.2 视图-检查选项(cascaded)2.3 视图-检查选项(local)…

MATLAB学习

前言 MATLAB是“MATrix LABoratory”的缩写&#xff0c;它是由美国Mathworks公司于1984年推出的一种科学计算软件。 语言及其特点 1.功能强大 (1)运算功能强大。MATLAB是以复数矩阵为基本编程单元的程序设计语言其强大的运算功能使其成为世界顶尖的数学应用软件之一。 (2)功能…

自动化测试 selenium+Junit 总结知识

文章目录 Selenium 自动化测试什么是selenium&#xff1f;selenium的原理是什么&#xff1f;Selenium 自动化测试的流程是什么&#xff1f;Selnium还有一些其他的操作 Selenium 如何定位动态元素&#xff1f; Junit 测试框架注解断言执行顺序测试套件参数化单参数多参数动态参数…

ELFK(filebeat)部署

部署环境 主机名ip地址主要软件系统node1192.168.154.70ElasticSearh、KibanaCentos7.5node2192.168.154.60ElasticSearhCentos7.5Apache192.168.154.50Logstash、ApacheCentos7.5Filebeat192.168.154.40FilebeatCentos7.5 Node1节点上安装Filebeat #上传软件包 filebeat-6.2…

jmeter,性能测试,Locust

一。性能测试的概念 1.性能&#xff1a;就是软件质量属性中的 “ 效率 ” 特性 2.效率特性&#xff1a; 时间特性&#xff1a;指系统处理用户请求的响应时间 资源特性&#xff1a;指系统在运行过程中&#xff0c;系统资源的消耗情况 CPU 内存 磁盘IO&#xff08;磁盘的写…

【Spark学习笔记】- 4运行架构核心组件核心概念

目录标题 1 运行架构2 核心组件2.1 Driver2. 2 Executor2. 3 Master & Worker2. 4 ApplicationMaster 3 核心概念3.1 Executor 与 Core3. 2 并行度(Parallelism)3. 3 有向无环图(DAG) 4 提交流程4.1 Yarn Client 模式4. 2 Yarn Cluster 模式 5 分布式计算模拟5.1 Driver5.2…

利达卓越团队:打造投资界“天花板”,用行动创造财富

在这个充满竞争与挑战的新时代下,众多投资者纷纷开始寻找高收益项目。尽管拥有前卫的理想抱负和专业的投资经验,但抵不过一路上的“畔脚石”,大部分投资者会因为项目不稳定和风控经验不足等问题提前退场,未能在投资市场上获取红利。为了能够给这些投资者创造盈利机会,郑建祥、林…

Qt扫盲-QListView理论总结

QListView理论总结 一、概述二、提高性能三、使用注意 一、概述 QListView显示存储在model 中的item&#xff0c;要么是一个简单的非层次列表&#xff0c;要么是一个图标集合。这个类用于提供列表和图标视图&#xff0c;之前像这些 列表 和 图标视图 之前是由QListBox和 QIcon…

android 12 U盘 /mnt/media_rw 下读取文件异常 没有权限

现象 storage下可读取&#xff0c;但/mnt/media_rw不可读取 /mnt/media_rw/A009-1B4F/rk3568_s-ota-20230704.zip (Permission Denied&#xff09; 解决方法 把/mnt/media_rw/ 替换为 /storage

基于知识蒸馏的两阶段去雨去雪去雾模型学习记录(三)之知识测试阶段与评估模块

去雨去雾去雪算法分为两个阶段&#xff0c;分别是知识收集阶段与知识测试阶段&#xff0c;前面我们已经学习了知识收集阶段&#xff0c;了解到知识阶段的特征迁移模块&#xff08;CKT)与软损失&#xff08;SCRLoss&#xff09;,那么在知识收集阶段的主要重点便是HCRLoss(硬损失…

JavaScript中的模块化编程,包括CommonJS和ES6模块的区别。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 模块化编程概述⭐ CommonJS 模块⭐ ES6 模块⭐ 区别⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、…

苹果恢复微信聊天记录的3个实用方法!

愁死我了&#xff01;朋友们&#xff01;把手机借给了亲戚家的小孩玩&#xff0c;拿回手机后发现很重要的聊天记录丢失了&#xff0c;怎么办呀&#xff0c;有什么方法能够恢复回来吗&#xff1f; 微信是架起我们与家人、朋友、同事之间沟通的桥梁&#xff0c;无论是工作还是生活…

【软考】8.1 程序语言基本概念-成分-函数

《程序设计语言的基本概念》 汇编&#xff1a;将汇编语言翻译成目标程序执行编译&#xff1a;生成独立的可执行文件&#xff08;逻辑上与源程序等价的目标程序&#xff09;&#xff1b;直接运行&#xff1b;运行时无法控制源程序&#xff1b;效率高解释&#xff1a;不生成可执行…

mmap底层驱动实现(remap_pfn_range函数)

mmap底层驱动实现 myfb.c&#xff08;申请了128K空间&#xff09; #include <linux/init.h> #include <linux/tty.h> #include <linux/device.h> #include <linux/export.h> #include <linux/types.h> #include <linux/module.h> #inclu…

Mybatis 使用参数时$与#的区别

之前我们介绍了mybatis中参数的使用&#xff0c;本篇我们在此基础上介绍Mybatis中使用参数时$与#的区别。 如果您对mybatis中参数的使用不太了解&#xff0c;建议您先进行了解后再阅读本篇&#xff0c;可以参考&#xff1a; Mybatis参数(parameterType)https://blog.csdn.net…

知识图谱和大语言模型的共存之道

源自&#xff1a;开放知识图谱 “人工智能技术与咨询” 发布 导 读 01 知识图谱和大语言模型的历史 图1 图2 图3 图4 图5 02 知识图谱和大语言模型作为知识库的优缺点 图6 图7 表1 表2 图8 图9 03 知识图谱和大语言模型双知识平台融合 图10 图11 04 总结与展望 声明:公众号转…

C# OpenCvSharp Yolov8 Pose 姿态识别

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace OpenC…