Blender 数据集(NeRF 原论文用的合成数据集)内容很规范,基本每个场景的结构都是一样的。
下面我帮你详细拆一下 包含的场景、文件结构和说明:
1. 数据集包含的场景
Blender 数据集通常包含 8 个合成场景,每个场景是 Blender 渲染的 360° 环绕视图,物体静止,相机围绕中心拍摄:
-
chair
--- 椅子 -
drums
--- 架子鼓 -
ficus
--- 无花果盆栽 -
hotdog
--- 热狗 -
lego
--- 乐高机械臂 -
materials
--- 一组材质球 -
mic
--- 麦克风 -
ship
--- 船模
这些数据是 NeRF 论文作者用 Blender 渲染的,分辨率 800×800 像素,完全无噪声(路径追踪渲染)。
2. 每个场景的文件结构
以 chair
场景为例,目录结构如下:
chair/
├── train/ # 训练集图像
│ ├── r_0.png
│ ├── r_1.png
│ ├── ...
│ └── r_N.png
├── val/ # 验证集图像
│ ├── r_100.png
│ ├── ...
├── test/ # 测试集图像
│ ├── r_200.png
│ ├── ...
├── transforms_train.json # 训练集相机参数(外参+内参)
├── transforms_val.json # 验证集相机参数
├── transforms_test.json # 测试集相机参数
└── README.txt # 简要说明(有些版本可能没有)
3. JSON 文件内容结构
以 transforms_train.json
为例,主要包含:
{
"camera_angle_x": 0.6911112070083618, // 相机水平视角(弧度)
"frames": [
{
"file_path": "./train/r_0", // 对应图像路径(不带 .png)
"rotation": 0.012566370614359171, // 相机在球面上相邻视角的旋转间隔
"transform_matrix": [ // 相机外参(4×4 矩阵,世界坐标到相机坐标)
[1, 0, 0, 0.0],
[0, 1, 0, -0.5],
[0, 0, 1, 4.0],
[0, 0, 0, 1]
]
},
...
]
}
4. 文件数量与大小
-
每个场景通常:
-
训练集:100 张图片
-
验证集:50 张图片
-
测试集:50 张图片
-
-
图片格式:PNG(无压缩损失)
-
单个场景大小:约 200~300 MB
-
整个 Blender 数据集:约 2~3 GB
5.Blender 数据集结构
Blender_Dataset/
├── chair/
│ ├── train/ # 训练集图像
│ │ ├── r_0.png
│ │ ├── r_1.png
│ │ └── ...
│ ├── val/ # 验证集图像
│ │ ├── r_100.png
│ │ └── ...
│ ├── test/ # 测试集图像
│ │ ├── r_200.png
│ │ └── ...
│ ├── transforms_train.json # 相机参数 - 训练集
│ ├── transforms_val.json # 相机参数 - 验证集
│ ├── transforms_test.json # 相机参数 - 测试集
│ └── README.txt
│
├── drums/
│ ├── train/
│ ├── val/
│ ├── test/
│ ├── transforms_train.json
│ ├── transforms_val.json
│ ├── transforms_test.json
│ └── README.txt
│
├── ficus/
│ └── (同上结构)
│
├── hotdog/
│ └── (同上结构)
│
├── lego/
│ └── (同上结构)
│
├── materials/
│ └── (同上结构)
│
├── mic/
│ └── (同上结构)
│
└── ship/
└── (同上结构)
📌 重点:
-
train
/val
/test
文件夹分别存放对应数据集的图像。 -
transforms_*.json
存放相机的外参和内参。 -
每个场景目录完全独立,可以单独用于训练或测试。
如果你下载的 Blender 数据集结构不是这样,说明文件不完整或者路径解压错了。