MonoScene中的NYU数据集
MonoScene中的NYU数据集
MonoScene中论文中提到了两个数据集: SemanticKITTI 和 NYUv2;因为SemanticKITTI数据集太大了,所以只下载学习了NYU数据集。
1. SemanticKITTI 和 NYUv2 数据集
SemanticKITTI:
- The **Semantic Scene Completion dataset v1.1** (SemanticKITTI voxel data (700 MB)) from [SemanticKITTI website]
- (http://www.semantic-kitti.org/dataset.html#download)
- The **KITTI Odometry Benchmark calibration data** (Download odometry data set (calibration files, 1 MB))
and the **RGB images** (Download odometry data set (color, 65 GB)) from [KITTI Odometry website]
- (http://www.cvlibs.net/datasets/kitti/eval_odometry.php)
NYUv2:
- https://www.rocq.inria.fr/rits_files/computer-vision/monoscene/nyu.zip
2. NYUv2
下载后的NYU_dataset文件夹中存在depthbin文件夹,depthbin文件夹下存在NYUtest和NYUtrain文件夹,这两个文件夹中有 xx.bin、xx.png、xx_color.jpg文件;xx.bin存储的内容为RLE压缩数据,其中包括 体素坐标系相对于世界坐标系的原点坐标、相机位姿相对于世界坐标系的位姿、带语义信息的栅格数据。xx.png、xx_color.jpg用于我们可视化场景。
2.1 RLE编码
RLE(Run-Length Encoding,行程长度编码)是一种简单的无损数据压缩方法,其基本原理是将连续的重复数据值序列用一个"数据值+重复次数"的组合来代替。
原始数据: 111110000001111
RLE编码过程:
5个1 → 15
6个0 → 06
4个1 → 14
编码结果:150614
2.2 NYUv2 bin文件的可视化
import argparse
import numpy as np
import numpy.matlib # 显式导入matlib模块
from mayavi import mlab
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
# NYUv2 12类标准配色(与seg_class_map对应)
nyu12_colors = np.array([
[0, 0, 0], # 0: 未标注/背景
[100, 40, 40], # 1: 墙
[80, 70, 50], # 2: 地板
[60, 60, 60], # 3: 家具
[140, 100, 80], # 4: 物体
[200, 100, 0], # 5: 天花板
[150, 120, 90], # 6: 窗
[40, 40, 100], # 7: 门
[200, 200, 0], # 8: 装饰
[150, 150, 200], # 9: 建筑
[80, 80, 200], # 10: 植物
[200, 80, 80], # 11: 其他
[255, 255, 255] # 255: 无效区域
]) / 255.0 # 归一化到[0,1]
# 类别映射表:将 NYU 原始 37 类标签映射到 12 类,用于简化语义分割任务。
seg_class_map = [
0, 1, 2, 3, 4, 11, 5, 6, 7, 8, 8, 10, 10, 10, 11, 11, 9, 8, 11, 11,
11, 11, 11, 11, 11, 11, 11, 10, 10, 11, 8, 10, 11, 9, 11, 11, 11
]
def visualiz