---
title: EnvPerception_clean_2K
canonical_url: "https://www.modelscope.cn/datasets/zeeoreone/EnvPerception_clean_2K"
md_url: "https://www.modelscope.cn/datasets/zeeoreone/EnvPerception_clean_2K.md"
repository: zeeoreone/EnvPerception_clean_2K
chinese_name: "环境感知数据集 2K"
last_updated: 2026-08-26
license: Apache-2.0
downloads: 51680
stars: 0
---

# EnvPerception_clean_2K

> EnvPerception_clean_2K - zeeoreone 在 ModelScope 开源的数据集。Environmental perception cleaned image dataset.

zeeoreone/EnvPerception_clean_2K 是 ModelScope 魔搭社区上的数据集，采用 Apache-2.0 许可。

- **Repository**: zeeoreone/EnvPerception_clean_2K
- **License**: Apache-2.0
- **Downloads**: 51680
- **Stars**: 0
- **Last updated**: 2026-08-26

Source: https://www.modelscope.cn/datasets/zeeoreone/EnvPerception_clean_2K

---

# EnvPerception_clean_2K

EnvPerception_clean_2K 是一个面向多视角环境感知与场景分类的数据集。每个样本由同一场景的 3 张或 10 张图片组成，并提供中英文两套标注，可用于监督微调（SFT）和基于规则/奖励的训练（GRPO）。

模型需要综合同一 `pano_id` 下的全部视角，根据场景的主要用途输出一个类别，避免把单张图片中的局部物体误判为整个场景。

## 数据概览

| 项目 | 数量 |
| --- | ---: |
| `data` 中的场景目录 | 2,516 |
| 六分类任务标注场景 | 2,502 |
| 训练集场景 | 2,204 |
| 验证集场景 | 298 |
| 图片文件 | 24,614 |
| PNG / JPG | 21,804 / 2,810 |
| 3 视角 / 10 视角场景 | 78 / 2,438 |
| 图片总大小 | 约 4.45 GiB |

训练集与验证集以 `pano_id` 为单位划分，没有场景重叠。当前所有图片均为普通文件，不含软连接，也没有 0 字节图片。

`data` 中还保留了 14 个“电梯”场景，每个场景包含 10 张图片。由于当前任务定义为下面的六分类，这 14 个场景没有写入 SFT 和 GRPO 标注，因此图片目录数为 2,516，而六分类标注数为 2,502。

## 类别与划分

| 中文类别 | English label | 训练集 | 验证集 | 合计 |
| --- | --- | ---: | ---: | ---: |
| 会议室 | Meeting Room | 172 | 22 | 194 |
| 图书馆 | Library | 177 | 21 | 198 |
| 地铁站台 | Subway Platform | 144 | 12 | 156 |
| 学校 | School | 920 | 139 | 1,059 |
| 家 | Home | 473 | 63 | 536 |
| 公司 | Company | 318 | 41 | 359 |
| **合计** |  | **2,204** | **298** | **2,502** |

类别存在一定程度的不均衡，其中“学校”样本最多。训练分类模型时，建议同时观察 macro-F1 和各类别准确率，不要只看总体准确率。

## 目录结构

```text
EnvPerception_clean_2K/
├── data/
│   └── <pano_id>/
│       ├── <image_1>.png|jpg
│       ├── ...
│       └── <image_3_or_10>.png|jpg
├── SFT_all_label/
│   ├── train_Chinese.jsonl
│   ├── val_Chinese.jsonl
│   ├── train_English.jsonl
│   ├── val_English.jsonl
│   ├── category_proportion_pie.png
│   └── category_split_distribution.png
├── GRPO_all_label/
│   ├── train_Chinese.jsonl
│   ├── val_Chinese.jsonl
│   ├── train_English.jsonl
│   └── val_English.jsonl
├── rebase_code/
│   ├── rebase_image_paths.py
│   └── README.md
└── README.md
```

`pano_id` 是场景的唯一标识，同时也是 `data` 下对应图片目录的名称。中文和英文 JSONL 使用相同的场景划分与图片，只是提示词、推理文本和答案语言不同；SFT 与 GRPO 文件也描述同一批 2,502 个六分类场景。因此，不能把不同语言或不同训练格式中的记录相加作为独立样本数。

## SFT 标注格式

SFT 文件每行是一个 JSON 对象，字段如下：

| 字段 | 说明 |
| --- | --- |
| `messages` | `system`、`user`、`assistant` 三轮消息；回答包含简短的 `<think>` 分析和最终类别 |
| `images` | 与用户消息中 `<image>` 占位符一一对应的图片绝对路径 |
| `pano_id` | 场景唯一标识 |

简化示例：

```json
{
  "messages": [
    {"role": "system", "content": "场景分类规则与六个候选类别……"},
    {"role": "user", "content": "<image><image><image>\n请综合全部视角判断场景类别。"},
    {"role": "assistant", "content": "<think>根据多个视角中的场景证据进行判断。</think>\n\n地铁站台"}
  ],
  "images": [
    "/absolute/path/data/<pano_id>/<image_1>.png",
    "/absolute/path/data/<pano_id>/<image_2>.png",
    "/absolute/path/data/<pano_id>/<image_3>.png"
  ],
  "pano_id": "<pano_id>"
}
```

## GRPO 标注格式

GRPO 文件保留待回答的 `system` 和 `user` 消息，并将标准答案单独存放在 `solution` 字段中：

| 字段 | 说明 |
| --- | --- |
| `messages` | `system`、`user` 两轮输入消息 |
| `images` | 与 `<image>` 占位符一一对应的图片绝对路径 |
| `solution` | 用于计算奖励或评估的标准类别答案 |
| `pano_id` | 场景唯一标识 |

简化示例：

```json
{
  "messages": [
    {"role": "system", "content": "场景分类规则与六个候选类别……"},
    {"role": "user", "content": "<image><image><image>\n请综合全部视角判断场景类别。"}
  ],
  "images": [
    "/absolute/path/data/<pano_id>/<image_1>.png",
    "/absolute/path/data/<pano_id>/<image_2>.png",
    "/absolute/path/data/<pano_id>/<image_3>.png"
  ],
  "solution": "地铁站台",
  "pano_id": "<pano_id>"
}
```

## 下载或移动后的路径更新

JSONL 的 `images` 字段保存的是绝对路径。数据集下载到其他位置或整个目录被移动后，应先刷新 SFT 和 GRPO 文件中的路径。

进入数据集根目录，先执行只读检查：

```bash
cd /path/to/EnvPerception_clean_2K
python rebase_code/rebase_image_paths.py \
  --data-dir "$(pwd)/data" \
  --dry-run
```

确认没有缺失图片或其他错误后，原地更新全部 8 个 JSONL：

```bash
python rebase_code/rebase_image_paths.py \
  --data-dir "$(pwd)/data"
```

脚本只更新顶层 `images` 字段，不修改 `messages`、`solution` 或 `pano_id`。它会先检查所有目标图片是否存在且非空，全部通过后再以原子替换方式更新文件；重复运行也是安全的。更多参数见 `rebase_code/README.md`。

## Python 读取示例

```python
import json
from pathlib import Path

dataset_root = Path("/path/to/EnvPerception_clean_2K")
label_file = dataset_root / "SFT_all_label/train_Chinese.jsonl"

with label_file.open("r", encoding="utf-8") as file:
    sample = json.loads(next(file))

print("pano_id:", sample["pano_id"])
print("视角数:", len(sample["images"]))
print("图片路径:", sample["images"])
print("监督答案:", sample["messages"][-1]["content"])
```

训练时应将一条 JSONL 记录视为一个多视角场景样本，并保持同一 `pano_id` 的图片在同一个数据划分中。

## 完整性说明

当前版本已完成以下检查：

- 训练集 2,204 条、验证集 298 条，且 `pano_id` 均唯一；
- 训练集与验证集的 `pano_id` 交集为 0；
- SFT 和 GRPO 的中英文文件记录数一致；
- 六分类标注引用的所有图片均存在且文件大小大于 0；
- 数据目录中没有软连接。
