4D毫米波雷达——RADIal数据集、格式、可视化 CVPR2022

前言

本文介绍RADIal数据集,来自CVPR2022的。

  • 它是一个收集了 2 小时车辆行驶数据的数据集,采集场景包括:城市街道、高速公路和乡村道路。
  • 采集设备包括:摄像头、激光雷达和高清雷达等,并且还包括了车辆的 GPS 位置和行驶信息。
  • 总共有 91 个视频序列,每个视频时长从 1 分钟到 4 分钟不等,加起来一共是 2 小时。这些视频详细记录了车辆在不同地点和环境下的行驶情况。
  • 在大约 25,000 个录制的画面中,有 8,252 个画面被用来标记了 9,550 辆车。

 论文地址:【CVPR2022】Raw High-Definition Radar for Multi-Task Learning

如下图所示,展示了相机图像,红色为投影的激光点云,靛蓝色为雷达点云,橙色为车辆标注,绿色为自由行驶空间标注。

如下图所示,展示了雷达功率谱、鸟瞰图、雷达的距离-方位图、GPS 轨迹和里程计轨迹。

  • (b) 雷达功率谱,包含边界框注释;
  • (c) 鸟瞰视图中的自由行驶空间注释,车辆用橙色边界框标注,雷达点云为靛蓝色,激光点云为红色;
  • (d) 笛卡尔坐标系中的距离-方位图(Range-azimuth map),叠加雷达点云和激光点云;
  • (e)GPS 轨迹以红色表示,里程计轨迹重建以绿色表示

公开可用的带雷达的驾驶数据集,如下表所示:

数据集规模被定义为“小”是指<15k 帧、“大”是指>130k 帧、“中等”是介于两者之间。

雷达分为低清晰度‘LD’、高清晰度‘HD’或扫描型‘S’,其数据以不同的表示形式发布,涉及不同的信号处理流程:

  • 模拟至数字转换器‘ADC’信号
  • 距离-方位-多普勒‘RAD’张量
  • 距离-方位‘RA’视图
  • 距离-多普勒‘RD’视图、点云‘PC’

多普勒信息的存在取决于雷达传感器。其他传感器模态包括相机‘C’、激光雷达‘L’和里程计‘O’。

RADIal 是唯一提供高清雷达的每种表示形式,并结合相机、激光雷达和里程计的数据集,同时在论文中提出检测和自由空间分割任务。

1、传感器规格

这里的高清雷达,全称为High-definition (HD)  radar,简称为HD radar。(是4D毫米波雷达的一种)

  • HD radar安装在前通风格栅的中间,如下图所示。
  • 它是RADIal数据集的核心,由NRx=16个接收天线和NTx=12个发射天线组成,形成NRx·NTx= 192 个虚拟天线。
  • 这种虚拟天线阵列能够达到高分辨率的水平方位角,同时估计物体的垂直仰角

由于雷达信号难以被标注和直观理解,因此还提供了16线激光扫描仪 LiDAR5 Mpix RGB 摄像头

16线的激光雷达,对应 laser scanner (LiDAR) ,安装在前通风格栅的中间下方。摄像头安装在挡风玻璃后面的内后视镜附近。

三个传感器具有平行的水平视线,指向行驶方向。

RADIal还提供同步GPSCAN轨迹,可以访问车辆的地理参考位置及其驾驶信息,如速度方向盘角度偏航角,传感器的规格如下表所示。

 2、采集场景

 采集场景主要包括城市街道、高速公路和乡村道路,如下图所示,是各个场景的数据占比。

3、数据集结构

RADIal是一个独立的文件夹,包含所有记录的序列。每个序列都是一个文件夹,其中包含:

  • 现场预览视频(低分辨率);
  • 相机数据以MJPEG格式压缩;
  • 激光扫描仪点云数据保存在二进制文件中;
  • 保存在二进制文件中的ADC雷达数据。总共有4个文件,每个雷达芯片一个文件,每个芯片包含4个Rx天线;
  • 以 ASCII 格式保存的 GPS 数据
  • 以二进制格式保存的车辆的CAN轨迹
  • 最后,一个日志文件,提供每个传感器事件的时间戳。

 RADIal代码地址:https://github.com/valeoai/RADIal/tree/main

在 Python 库 DBReader 中提供了读取数据。 由于所有雷达数据都以 RAW 格式记录,即模数转换 (ADC) 后的信号,因此也提供了一个优化的 Python 库 SignalProcessing 来处理雷达信号并生率谱、点云或距离-方位角图。

4、下载数据集

RADIal数据集分为“原始数据”和“即用型数据”。

 原始数据集下载地址:GoogleDrive,然后需要使用 SignalProcessing 库为每种模态生成数据。原始数据需要申请的。

 即用型数据下载地址:https://drive.google.com/drive/folders/1UJAQMr1Hv2KWsqgv_JYGd9TWea2v-Tqb 可以使用 Loader 文件夹中提供的 PyTorch 数据加载器示例进行加载。

推荐使用即用型数据,数据整体比较大

    

 解压后,文件夹目录:

5、标签格式

在 25,000 个同步帧中,有 8,252 个帧被标记。 车辆的标签存储在单独的 csv 文件中。每个标签都包含以下信息:

  • numSample:所有传感器之间当前同步样本的数量。这个标签可以投射到每个具有共同dataset_index值的传感器中。
  • [x1_pix, y1_pix, x2_pix, y2_pix]:相机坐标中车辆2D框的二维坐标;
  • [laser_X_m、laser_Y_m、laser_Z_m]:激光扫描仪坐标系统中车辆的 3D 坐标。其中 3D点是车辆后部或前部可见面的中间;
  • [radar_X_m, radar_Y_m, radar_R_m, radar_A_deg, radar_D, radar_P_db]:雷达坐标系中车辆的二维坐标(鸟瞰图),采用笛卡尔坐标 (X,Y) 或极坐标 (R,A) 坐标。radar_D是多普勒值,radar_P_db是反射信号的功率;
  • dataset:所属序列名称;
  • dataset_index:当前序列中的帧索引;
  • 难度:0 或 1

请注意,所有字段中的 -1 表示没有任何标签的帧。Free-driving-space 的标签以保存在 png 文件中的分段掩码形式提供。

看一下示例标签数据:

前20行的标签数据:

numSample	x1_pix	y1_pix	x2_pix	y2_pix	laser_X_m	laser_Y_m	radar_X_m	radar_Y_m	radar_R_m	radar_A_deg	radar_D_mps	radar_P_db	dataset	index	Annotation	Difficult
0	844	515	1109	738	0.223501295	11.29125881	0.076785527	11.75940418	11.77699757	-0.400000006	2	39021448	RECORD@2020-11-21_13.44.44	0	weak	0
0	1302	507	1715	782	3.363449097	8.576388359	3.097865582	9.105825424	9.780896187	-19.39999962	18	16052051	RECORD@2020-11-21_13.44.44	0	weak	0
0	1118	471	1337	649	3.596418381	19.73351669	3.409848452	20.58024979	20.95906448	-9.600000381	23	12053775	RECORD@2020-11-21_13.44.44	0	weak	0
0	1022	461	1226	590	0.733993292	11.46860218	0.143846378	11.75940418	11.77699757	-0.699999988	1	39016960	RECORD@2020-11-21_13.44.44	0	weak	0
1	1296	498	1682	774	3.50564456	9.0008955	3.1194942	9.522439957	10.18011665	-19	16	28089750	RECORD@2020-11-21_13.44.44	1	weak	0
1	845	513	1109	738	0.207299277	11.31393433	0.153437644	11.57518196	11.57738781	-0.800000012	2	47227612	RECORD@2020-11-21_13.44.44	1	weak	0
1	1081	481	1333	635	3.748978138	20.33323669	3.880532265	21.17062378	21.358284	-10.30000019	24	12500830	RECORD@2020-11-21_13.44.44	1	weak	0
1	150	539	356	666	-4.101474762	9.354154587	-4.025963783	9.301595688	10.18011665	23.79999924	231	9294597	RECORD@2020-11-21_13.44.44	1	weak	0
2	1287	504	1662	771	3.376296043	9.347215652	3.166516781	9.876775742	10.37972641	-18.5	14	15918269	RECORD@2020-11-21_13.44.44	2	weak	0
2	1088	490	1328	643	3.693201303	20.82712746	2.918206215	21.59820557	21.75750351	-7.900000095	23	9053354	RECORD@2020-11-21_13.44.44	2	weak	0
2	839	529	1108	749	0.184757978	11.30931473	0.009909126	11.57499123	11.57738781	-0.100000001	254	43487396	RECORD@2020-11-21_13.44.44	2	weak	0
3	1287	500	1643	762	3.571326494	9.718420982	3.179746628	10.1349535	10.77894688	-18.20000076	11	16983782	RECORD@2020-11-21_13.44.44	3	incomplete	0
3	1121	491	1313	648	3.642369747	21.34195518	3.518688202	22.15653038	22.35633469	-8.899999619	23	9565411	RECORD@2020-11-21_13.44.44	3	incomplete	0
3	840	531	1108	754	0.171368822	11.28709698	0.48467654	11.74184513	11.77699757	-2.400000095	253	41596980	RECORD@2020-11-21_13.44.44	3	incomplete	0
3	1042	473	1259	624	3.308105707	21.3476162	3.39677763	22.07584953	22.35633469	-8.899999619	23	10476272	RECORD@2020-11-21_13.44.44	3	incomplete	0
4	1279	496	1624	760	3.568714619	9.981954575	3.266343117	10.52410889	10.97855663	-17.5	11	13230800	RECORD@2020-11-21_13.44.44	4	weak	0
4	1098	493	1308	654	3.63789463	21.84522438	3.582220554	22.63541985	22.95516396	-9.199999809	22	12159406	RECORD@2020-11-21_13.44.44	4	weak	0
4	836	528	1102	752	0.160191536	11.23595238	-0.05933357	11.73429203	11.77699757	0.300000012	252	32141952	RECORD@2020-11-21_13.44.44	4	weak	0
4	34	561	204	643	-4.098292828	7.273369312	-4.110992432	7.242799282	8.383625031	30.10000038	224	10218513	RECORD@2020-11-21_13.44.44	4	weak	0

6、读取数据和可视化

这里使用官方代码,读取图像数据、激光点云数据、Radar点云数据,然后可视化。

RADIal代码地址:https://github.com/valeoai/RADIal/tree/main

1)图像数据

import numpy as np
from dataset import RADIal
from loader import CreateDataLoaders
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
from torch.utils.data import Dataset, DataLoader, random_split,Subset
dataset = RADIal(root_dir = './RADIal',difficult=True)
# pick-up randomly any sample
data = dataset.__getitem__(np.random.randint(len(dataset)))

image = data[0]
boxes = data[5]

fig, ax = plt.subplots(figsize=(20,20))
ax.imshow(image)

for box in boxes:
    if(box[0]==-1):
        break # -1 means no object
    rect = Rectangle(box[:2]/2,(box[2]-box[0])/2,(box[3]-box[1])/2,linewidth=3, edgecolor='r', facecolor='none')
    ax.add_patch(rect)
    
# Note, coordinates are divided by 2 as image were saved in quarter resolution

效果如下图所示

2)激光点云数据

laser_pc = data[3]

plt.plot(-laser_pc[:,1],laser_pc[:,0],'.')
for box in boxes:
    if(box[0]==-1):
        break # -1 means no object
    plt.plot(box[4],box[5],'rs')
plt.xlim(-20,20)
plt.ylim(0,100)
plt.grid()

效果如下图所示

3)Radar点云数据

radar_pc = data[2]

plt.plot(-radar_pc[:,1],radar_pc[:,0],'.')
for box in boxes:
    if(box[0]==-1):
        break # -1 means no object
    plt.plot(box[7],box[8],'ro')
plt.xlim(-20,20)
plt.ylim(0,100)
plt.grid()

效果如下图所示


 

本文先介绍到这里,后面会分享4D毫米波雷达的其它数据集、算法、代码、具体应用示例。

对于4D毫米波雷达的原理、对比、优势、行业现状,可以参考我这篇博客。

分享完成,本文只供大家参考与学习,谢谢~

  • 20
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
大数据背景下数据可视化方法研究 作者:黄堰 程晓荣 来源:《电脑知识与技术》2016年第17期 摘要:大数据时代数据飞速增长,高维数据越来越多迫切需要新的数据可视化 方法对高维数据进行处理。本文在传统的Radviz数据可视化方法基础上,结合弹簧模型 ,给出了一种改进的Radviz数据可视化方法,并通过两种模型之间的比较,证明了改进 的Radviz可视化方法增强了属性间的合力,降低了数据遮盖度,更好地保持了原有数据 集的特征。 关键词:大数据;数据可视化;Radviz;弹簧模型 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)17-0231- 03 随着大数据时代的到来,数据产生的速度呈直线上升,数据海量化已成为不可 避免的发展趋势。数据急剧增加对数据处理、数据挖掘以及数据可视化等都是一个极大 的挑战。目前,数据可视化面临高维数据越来越多,数据量越来越大,数据种类越来越 多等多种挑战。针对这些问题,提出了一种Radviz数据可视化方法,将高维数据样本非 线性的投影到二维目标空间,能够快速找到容易被领域专家认可的可视化模型。但是传 统的Radviz可视化方法将属性值均匀分布在圆周上造成属性间的值相互抵消,从而导致 数据遮盖度较大及可视化图形有内缩趋势等问题。本文提出了一种新的改进的Radviz可 视化方法,改进的方法增强属性了间的合力,降低了数据遮盖度,使得原始数据集的特 征能够更好地保持。 1 数据可视化 数据可视化技术诞生于二十世纪八十年代,是运用计算机图形学和图像处理等 技术,以图表、地图、动画或其他使内容更容易理解的图形方式来表示数据,使数据所 表达的内容更加容易被处理。数据可视化技术与虚拟现实技术、数据挖掘、人工智能, 甚至与人类基因组计划等前沿学科领域都有着密切的联系[1]。目前数据可视化技术大体 可以分为5类:基于几何投影可视化技术、面向像素可视化技术、基于图标可视化技术、 基于层次可视化技术以及基于图形可视化技术[2]。 数据可视化的简易工作图如图1所示: 2 传统的Radviz可视化方法分析 Radviz(Radial Coordinate Visualization)是一种基于弹簧模型的可视化方法,Radviz是将一系列多维空间的点通 过非线性方法映射到二维空间,实现在平面中对多维数据可视化的一种数据分析方法。 自从Ankerst于1996年提出Radviz技术以来,Radviz技术取得了很大的发展,被广泛应用 于可视化分析和数据挖掘等领域。近年来更是把Radviz技术运用到基因表达数据的分类 上,且取得了良好的分类效果[3]。 2.1 传统Radviz模型 经典的Radviz方法通常运用在平行坐标系上,将一系列具有多维度属性的点通 过非线性方法映射到二维空间,使人们得以用肉眼观察。如图2所示,设n个特征变量随 机均匀地分布在单位圆周上(如n= 6),记为~,现在假设n个弹性系数不同的弹簧一端全部固定在一个小球上,另一端分 别固定在~。假定第j根弹簧对于观测点i的弹性系数为,如果观测点固定在圆内的一个 平衡位置,那么(,)就是n维空间(,…,)在二维空间的投影,便实现了一个n维数据 转化到二维坐标的Radviz可视化[3]。 其中,表示随机均匀分布在单位圆周上的特征向量;单位圆周表示一个二维空 间;O表示特征向量映射在二维空间上的平衡点。 根据胡克定律,对一个弹簧而言,小球所受到的弹力取决于弹簧拉伸的长度( 矢量)和弹簧的弹性系数(标量) ,当小球静止不动时,则表明其受到所有弹簧的合力为零。对此可得到如下公式: 其中xj表示第j个变量在二维空间的圆周上的坐标,pi表示第i个观测点在圆内 二维空间平衡位置的坐标。公式(2-2)表示第i个观测的平衡位置,式(2- 3)表示观测平衡位置向量pi为各变量的坐标位置的加权平均。为了避免负值的出现,常 常采用归一化的方法,即将最大值和最小值归为1和0,归一化后的所有得数值都位于[0 ,1]之间[4]。归一化公式为: 从上述公式分析,我们可以得出如下结论: (1)维度值越大,那么该投影位置将更靠近该维度在圆周上的位置; (2)改变圆周上的属性,将影响投影的位置; 传统的Radviz可视化方法计算复杂度低;可显示维度大;相似多维对象的投影 点十分接近,容易发现聚类信息;直观便于理解。但是传统的Radviz方法也存在一些不 足,该方法受数据本身及数据集的类型影响,当相似的数据集或成比例的数据集较多时 ,数据遮盖度会很大,将会影响对原始数据集的特征保持[5.6]。 3 改进的Radviz可视化方法分析 传统的Radviz可视化方法受数据本身和数据集类型的影响,一旦相似数据集或 成比例的数据集较多,数据遮盖度就会很大,那么原始数据集的特征将会被影响,造
MNIST数据集是一个手写数字图像数据集,包括60,000个训练样本和10,000个测试样本。这里我们使用R语言搭建支持向量机(SVM)模型来实现该数据集的分类。 首先,我们需要导入MNIST数据集。R语言中提供了许多方法可以导入MNIST数据集,这里我们使用`read.table`函数以及`matrix`函数来导入数据集。 ```R # 导入训练集 train_data <- as.matrix(read.table("train-images-idx3-ubyte", skip = 16, col.names = paste0("V", 1:784))) train_labels <- read.table("train-labels-idx1-ubyte", skip = 8)$V1 # 导入测试集 test_data <- as.matrix(read.table("t10k-images-idx3-ubyte", skip = 16, col.names = paste0("V", 1:784))) test_labels <- read.table("t10k-labels-idx1-ubyte", skip = 8)$V1 ``` 接下来,我们需要对数据进行归一化处理,将数据范围缩放到[0, 1]之间,这样可以提高SVM模型的效果。 ```R train_data <- train_data / 255 test_data <- test_data / 255 ``` 然后,我们可以使用`e1071`库中的`svm`函数来训练SVM模型。在这里,我们使用径向基函数(RBF)内核,这是一种常用的内核函数。 ```R library(e1071) # 训练SVM模型 svm_model <- svm(train_data, train_labels, kernel = "radial", cost = 5) ``` 最后,我们可以使用`predict`函数来对测试集进行预测,并计算模型的准确率。 ```R # 预测测试集 test_pred <- predict(svm_model, test_data) # 计算准确率 accuracy <- sum(test_pred == test_labels) / length(test_labels) print(paste0("Accuracy: ", accuracy)) ``` 以上就是使用R语言搭建支持向量机实现MNIST数据集分类的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗小树x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值