自动驾驶-nuScenes 数据探索
现在让我们动手操作 nuScenes 数据集,看看真实数据长什么样。
nuScenes 数据集深度实操
nuScenes_test.py 脚本
# nuScenes 数据探索脚本
from nuscenes.nuscenes import NuScenes
from nuscenes.utils.data_classes import LidarPointCloud
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
nusc = NuScenes(version='v1.0-mini',
dataroot='./data/nuscenes/v1.0-mini',
verbose=True)
# 查看第一个场景的第一个样本
sample = nusc.sample[0]
# 获取 6 个摄像头的图像
cam_names = ['CAM_FRONT_LEFT', 'CAM_FRONT', 'CAM_FRONT_RIGHT',
'CAM_BACK_LEFT', 'CAM_BACK', 'CAM_BACK_RIGHT']
fig, axes = plt.subplots(2, 3, figsize=(18, 8))
for i, cam in enumerate(cam_names):
cam_data = nusc.get('sample_data', sample['data'][cam])
img = Image.open(f"./data/nuscenes/v1.0-mini/{cam_data['filename']}")
axes[i//3, i%3].imshow(img)
axes[i//3, i%3].set_title(cam, fontsize=12)
axes[i//3, i%3].axis('off')
plt.tight_layout()
plt.savefig('6_cameras.png', dpi=150)
print('✅ 6 个摄像头图像已保存')
# 查看相机内外参数(BEVFormer 用它来做 3D→2D 投影)
cam_token = sample['data']['CAM_FRONT']
cam_data = nusc.get('sample_data', cam_token)
calibrated = nusc.get('calibrated_sensor',
cam_data['calibrated_sensor_token'])
print(f"相机内参 (3x3):")
print(np.array(calibrated['camera_intrinsic']))
print(f"\n相机外参 (平移): {calibrated['translation']}")
print(f"相机外参 (旋转): {calibrated['rotation']}")
# 这些参数就是 BEVFormer 做空间交叉注意力时
# 把 3D 参考点投影到 2D 图像上的关键输入
# 查看 3D 框标注
for ann_token in sample['anns'][:5]:
ann = nusc.get('sample_annotation', ann_token)
print(f"类别: {ann['category_name']:<30} "
f"位置: ({ann['translation'][0]:.1f}, "
f"{ann['translation'][1]:.1f}, "
f"{ann['translation'][2]:.1f}) "
f"尺寸: {ann['size']}")
进行 debug 调试,下边为打印日志:
(python311) ➜ autoLab cd /Users/kaiyi/Work/AI/autoLab ; /usr/bin/env /Users/kaiyi/miniconda3/envs/python31
1/bin/python /Users/kaiyi/.vscode/extensions/ms-python.debugpy-2025.18.0-darwin-x64/bundled/libs/debugpy/ada
pter/../../debugpy/launcher 56136 -- /Users/kaiyi/Work/AI/autoLab/nuScenes_test.py
Backend macosx is interactive backend. Turning interactive mode on.
======
Loading NuScenes tables for version v1.0-mini...
23 category,
8 attribute,
4 visibility,
911 instance,
12 sensor,
120 calibrated_sensor,
31206 ego_pose,
8 log,
10 scene,
404 sample,
31206 sample_data,
18538 sample_annotation,
4 map,
Done loading in 0.521 seconds.
======
Reverse indexing ...
Done reverse indexing in 0.3 seconds.
======
✅ 6 个摄像头图像已保存
相机内参 (3x3):
[[1.26641720e+03 0.00000000e+00 8.16267020e+02]
[0.00000000e+00 1.26641720e+03 4.91507066e+02]
[0.00000000e+00 0.00000000e+00 1.00000000e+00]]
相机外参 (平移): [1.70079118954, 0.0159456324149, 1.51095763913]
相机外参 (旋转): [0.4998015430569128, -0.5030316162024876, 0.4997798114386805, -0.49737083824542755]
类别: human.pedestrian.adult 位置: (373.3, 1130.4, 0.8) 尺寸: [0.621, 0.669, 1.642]
类别: human.pedestrian.adult 位置: (378.9, 1153.3, 0.9) 尺寸: [0.775, 0.769, 1.711]
类别: vehicle.car 位置: (353.8, 1132.4, 0.6) 尺寸: [2.011, 4.633, 1.573]
类别: human.pedestrian.adult 位置: (376.1, 1158.5, 0.9) 尺寸: [0.752, 0.819, 1.637]
类别: movable_object.trafficcone 位置: (410.1, 1196.8, 0.7) 尺寸: [0.427, 0.359, 0.794]
(python311) ➜ autoLab



为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)