---
title: bomb-people-fire-power
canonical_url: "https://www.modelscope.cn/datasets/learnai2/bomb-people-fire-power"
md_url: "https://www.modelscope.cn/datasets/learnai2/bomb-people-fire-power.md"
repository: learnai2/bomb-people-fire-power
chinese_name: "爆炸物-人-火焰-发电站"
last_updated: 2026-08-12
license: "Apache License 2.0"
downloads: 115561
stars: 0
---

# bomb-people-fire-power

> bomb-people-fire-power - learnai2 在 ModelScope 开源的数据集。每个「任务目录」内部通常遵循如下约定（以 VOC XML 类为例）：

learnai2/bomb-people-fire-power 是 ModelScope 魔搭社区上的数据集，采用 Apache License 2.0 许可。

- **Repository**: learnai2/bomb-people-fire-power
- **License**: Apache License 2.0
- **Downloads**: 115561
- **Stars**: 0
- **Last updated**: 2026-08-12

Source: https://www.modelscope.cn/datasets/learnai2/bomb-people-fire-power

---

## 1. 目录结构

```
VOCData/
├── bomb/            # 爆炸物检测（VOC XML，6 类，数字编号）
├── bomb2/           # 弹药型号检测（VOC XML，16 类）
├── fire_smoke/      # 火焰/烟雾检测（VOC XML，2 类）
├── people/          # 行人检测（自定义 JSON，2 类）
├── power/           # 电厂检测（VOC XML，1 类）
├── video/           # 推理用的源视频（非标注数据集）
└── README.md        # 本文件
```

每个「任务目录」内部通常遵循如下约定（以 VOC XML 类为例）：

```
<bomb2>/
├── images/        # 原始图片（.jpg/.jpeg/...）
├── Annotations/   # VOC 标注（.xml，与图片同名）
├── labels/        # 生成的 YOLO 标签（.txt，与图片同名）
├── bomb2.txt      # 主清单：images/ 下全部图片名（生成名字步骤产出）
├── train.txt      # 训练集清单，每行 ./images/<name>
├── val.txt        # 验证集清单
├── test.txt       # 测试集清单
└── make_label.py  # 一键标注脚本（见第 4 节）
```

> 注：`bomb2.txt` 这个主清单文件名是历史遗留命名，fire_smoke / power 目录里也沿用了它，
> 本质就是「该任务全部图片的清单」，并非仅属于 bomb2。

---

## 2. 数据集汇总

| 任务        | 图片数 | 标注数 | 标注格式 | 类别（class_id 见第 5 节）            | 标签工具                          |
|-------------|-------:|-------:|----------|--------------------------------------|-----------------------------------|
| `bomb`      |   1086 |   1086 | VOC XML  | `1,2,3,5,6,7`（跳过 4）              | 共享 `tools/make_labels.py`(voc)  |
| `bomb2`     |    833 |    833 | VOC XML  | 16 类弹药型号                         | `bomb2/make_label.py`             |
| `fire_smoke`|   5749 |   5749 | VOC XML  | `fire`, `smoke`                      | `fire_smoke/make_label.py`        |
| `people`    |    989 |    989 | JSON    | `1`, `2`                             | 共享 `tools/make_labels.py`(json) |
| `power`     |   2223 |   2223 | VOC XML  | `PowerPlant`                         | `power/make_label.py`             |
| `video`     |      — |      — | 视频    | —（推理输入，不在本仓训练）          | —                                 |

切分比例统一为 **训练 : 验证 : 测试 = 8 : 1 : 1**，随机种子 `seed=42`（可复现）。
各任务 train/val/test 实际数量：

- bomb2：666 / 83 / 84
- fire_smoke：4599 / 574 / 576
- power：1778 / 222 / 223

---

## 3. YOLO 标签格式

`labels/<image_id>.txt` 每行一个目标：

```
<class_id> <cx> <cy> <w> <h>
```

- `class_id`：从 0 开始的整数，对应第 5 节的类别顺序
- `cx, cy, w, h`：相对于图片宽高的归一化值，范围 `[0, 1]`
- 一张图多个目标 → 多行；无目标的图 → 空文件（不写行）

---

## 4. 一键标注脚本 `make_label.py`（bomb2 / fire_smoke / power）

这三个任务各自有一份**独立副本**的 `make_label.py`，按顺序执行三步：

1. **生成名字** —— 扫描 `images/` 写出主清单 `bomb2.txt`
2. **分割数据集** —— 按 8:1:1 切分，写出 `train.txt` / `val.txt` / `test.txt`
3. **标签转化** —— 把 `Annotations/*.xml` 转成 `labels/*.txt`（VOC→YOLO）

所有「因数据集而异」的参数集中在脚本顶部的 `CONFIG` 字典，也可命令行覆盖。

```bash
cd VOCData/fire_smoke        # 进入对应任务目录后运行
python make_label.py                       # 默认 8:1:1, seed=42
python make_label.py --split-ratio 0.8 0.1 0.1 --seed 7
python make_label.py --dry-run             # 仅预览切分，不写文件
python make_label.py --no-convert          # 只生成名字+切分，不转标签
```

常用可覆盖参数：`--data-root` `--images-dir` `--ann-dir` `--labels-dir`
`--list-file` `--split-names` `--split-ratio` `--seed` `--classes` `--dry-run` `--no-convert`。

> ⚠️ **重跑会覆盖** 该目录下的 `bomb2.txt` / `train.txt` / `val.txt` / `test.txt` 与 `labels/`。

---

## 5. 各类别明细

### bomb2（16 类，class_id 顺序即下列下标）
```
0  PF89S-80      1  GLD213_DL     2  GLD120_DL    3  82S
4  PP89S         5  PHL03S-300    6  PP87S-82     7  PHL81S-122
8  66S-152       9  70_QLD       10  52S-57      11  CJD
12 80_SSD       13  SBRD-90      14 2.5kg-I     15  HK-23
```

### fire_smoke（2 类）
```
0  fire
1  smoke
```
> 个别标注把 `smoke` 误写成 `smog`，脚本已自动归并到 `smoke`，不会丢样本。

### power（1 类）
```
0  PowerPlant
```

### bomb（6 类，XML 中以数字字符串标注，刻意跳过 4）
```
XML 名称: 1  2  3  5  6  7
```
> bomb 不在 VOCData 内放独立 `make_label.py`，而是用共享工具生成（见第 6 节）。

### people（2 类，自定义 JSON）
```
1  行人类别 1
2  行人类别 2
```
> 标注不是 VOC XML，而是 `people/json_det/<id>_det.json`，结构为
> `{name, size, objects:[{category, box2d:{x1,y1,x2,y2}, ...}]}`。

---

## 6. bomb / people 的标签生成（共享通用工具）

`bomb` 与 `people` 使用仓库根目录的共享工具 `tools/make_labels.py`
（全参数化，支持 voc / json 两种格式），不在 VOCData 内各放一份。
其中 `bomb/make_labels.py` 是对该通用工具的薄封装（写死 bomb 默认值）。

```bash
# bomb（voc 格式）
python tools/make_labels.py --data-root VOCData/bomb --format voc \
       --classes 1 2 3 5 6 7 --list-file bomb_pic.txt

# people（json 格式）
python tools/make_labels.py --data-root VOCData/people --format json \
       --classes 1 2 --list-source file --list-file people.txt
```

具体参数以 `python tools/make_labels.py -h` 为准。

---

## 7. 重要注意事项

1. **`make_label.py` 是按数据集硬编码类目的独立副本**，bomb2 / fire_smoke / power
   三份互不相同。**切勿跨数据集套用**——曾因把 bomb2 的 16 类列表复制到
   fire_smoke / power，导致所有标签被静默跳过、文件全空。改类目请只改对应那份脚本的
   `CONFIG['classes']`。

2. **坐标修正**：VOC→YOLO 转换中中心点公式为 `(xmin+xmax)/2 / w`，
   不要多加 `-1`（旧脚本曾有该 bug，已修正）。

3. **标注越界会自动裁剪**到图片边界（`xmax>width` 等情形）。

4. **空标注/解析失败**会被跳过并提示，不会中断整批转换。

5. `video/` 只放推理用的源视频，不参与训练数据集统计。
