# 保存类型选择功能说明

## 功能概述

新增`--save-types`参数，可以选择性地保存可视化结果，节省磁盘空间和处理时间。

## 使用方法

### 1. 只保存组合图（默认）

```bash
python scripts_for_gt/visualize_filtered_train.py \
    --data data/mono3d.yaml \
    --target-class bicycle \
    --x-range -10 10 \
    --z-range 0 50 \
    --max-samples 30
    # 默认只保存 *_combined.jpg
```

### 2. 保存多种类型

```bash
# 保存2D和组合图
python scripts_for_gt/visualize_filtered_train.py \
    --data data/mono3d.yaml \
    --target-class bicycle \
    --save-types 2d combined

# 保存3D、BEV和组合图
python scripts_for_gt/visualize_filtered_train.py \
    --data data/mono3d.yaml \
    --target-class pedestrian \
    --save-types 3d bev combined

# 保存所有类型
python scripts_for_gt/visualize_filtered_train.py \
    --data data/mono3d.yaml \
    --target-class vehicle \
    --save-types 2d 3d bev combined
```

## 可选类型说明

| 类型 | 文件名模式 | 说明 |
|------|-----------|------|
| `2d` | `*_2d_gt.jpg` | 仅2D边界框可视化 |
| `3d` | `*_3d_gt.jpg` | 3D框投影到图像 |
| `bev` | `*_bev_gt.jpg` | 鸟瞰图视角 |
| `combined` | `*_combined.jpg` | 2D+3D+BEV组合图 |

## 性能优势

| 场景 | 磁盘空间节省 | 处理速度提升 |
|------|-------------|-------------|
| 只保存combined | ~75% | ~20% |
| 只保存2d | ~75% | ~60% |
| 保存2d+combined | ~50% | ~40% |

## 适用场景

### 只保存combined
- **适用场景**：快速浏览数据分布
- **优点**：节省最多空间，一图看全
- **推荐用于**：数据质量检查、分布分析

### 保存所有类型
- **适用场景**：详细分析、问题排查
- **优点**：每个角度都有单独的图
- **推荐用于**：深度调试、论文图片准备

### 自定义组合
- **适用场景**：特定需求
- **示例**：只关心2D框位置 → `--save-types 2d`
- **示例**：只关心3D空间位置 → `--save-types 3d bev`

## 与其他脚本的兼容性

此功能也适用于其他可视化脚本：

```bash
# visualize_batch.py
python scripts_for_gt/visualize_batch.py \
    --image-dir /path/to/images \
    --label-dir /path/to/labels \
    --save-types combined

# visualize_single_frame.py（需要手动修改代码传递参数）
# 在代码中调用时：
visualize_single_frame(
    image_path=...,
    label_path=...,
    output_dir=...,
    save_types=['combined']  # 只保存组合图
)
```

## 注意事项

1. **默认行为改变**：`visualize_filtered_train.py`默认只保存combined，与之前的"保存所有类型"不同
2. **性能提升**：只生成需要的可视化，不会生成后再删除
3. **依赖关系**：combined类型需要2d、3d、bev都生成，但不单独保存它们
4. **磁盘空间**：如果样本很多，建议只保存combined
