Files
Yolo/README.md
Kevin Wong fec2523b5c 再训练
2026-01-05 12:41:43 +08:00

4.9 KiB
Raw Blame History

YOLO11l-seg 室内导盲模型训练指南 (V2)

本方案针对 Dell R730 服务器RTX 3090 24GB, 192GB RAM定制使用大规模合并数据集进行 实例分割 (Instance Segmentation) 训练。

1. 硬件环境配置

1.1 系统与环境

# 1. 创建虚拟环境
conda create -n yolo python=3.10 -y
conda activate yolo

# 2. 安装 PyTorch (CUDA 12.4)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

# 3. 安装 Ultralytics
pip install ultralytics

# 4. 其它依赖
pip install opencv-python matplotlib albumentations

1.2 监控显卡

watch -n 1 nvidia-smi

2. 数据集 (V2 大规模合并版)

2.1 数据集组成

我们合并了多个来源的高质量分割数据集,总数据量约 12,400 张

数据集来源 描述 作用
MIT Indoor 室内场景分类 提供丰富背景和基础物体
Indoor Blind 早期筛选的导盲数据 基础核心数据
Stair Seg 楼梯分割 增强对楼梯的识别 (Map to stairs)
Stair Chair Couch 楼梯/椅子分割 补充高质量椅子与楼梯数据
Estima AI 室内房间分割 映射为 floor,极大增强可行走区域识别

2.2 类别定义 (20 类)

统一后的 20 个导盲核心类别:

ID 类别 说明 ID 类别 说明
0 floor 可行走地面 10 stairs 楼梯
1 corridor 走廊/通道 11 wall 墙壁
2 sidewalk 人行道 12 window 窗户
3 chair 椅子 13 cabinet 柜子
4 table 桌子 14 trash_can 垃圾桶
5 sofa_bed 沙发/床 15 person 行人
6 door 16 cup_bottle 杯子/瓶子
7 elevator 电梯 17 bag
8 plant 植物 18 electronics 电子电器
9 clock 时钟/挂钟 19 obstacle 通用障碍物

2.3 目录结构 (服务器端)

请确保服务器 /home/rongye/ProgramFiles/Yolo/ 结构如下:

/home/rongye/ProgramFiles/Yolo/
├── yolo11l-seg.pt                 # 预训练权重 (标准模型)
├── train_merged.py                # 🔥 主力训练脚本 (使用合并数据)
├── train.py                       # 🛡️ 备份训练脚本 (使用旧数据)
├── datasets/
│   ├── blind_guidance_merged/     # 🔥 V2 主力数据集 (12k images)
│   │   ├── data.yaml              # 配置 (20类)
│   │   ├── train/
│   │   ├── valid/
│   │   └── test/
│   └── indoor_blind/              # 🛡️ 备份数据集 (1.8k images)
│       └── data.yaml              # 配置 (14类)
└── blind_guide_project/           # 训练日志输出

3. 训练配置

3.1 主力配置 blind_guidance_merged/data.yaml

# 路径必须为绝对路径
path: /home/rongye/ProgramFiles/Yolo/datasets/blind_guidance_merged
train: train/images
val: valid/images
test: test/images

nc: 20
names: [floor, corridor, sidewalk, chair, table, sofa_bed, door, elevator, stairs, wall, window, cabinet, trash_can, person, cup_bottle, bag, electronics, plant, clock, obstacle]

3.2 训练脚本 train_merged.py

from ultralytics import YOLO

# 加载标准模型
model = YOLO("/home/rongye/ProgramFiles/Yolo/yolo11l-seg.pt")

# 开始训练
results = model.train(
    data="/home/rongye/ProgramFiles/Yolo/datasets/blind_guidance_merged/data.yaml",
    epochs=200,           # 数据量大跑200轮
    imgsz=640,            # 训练分辨率
    batch=16,             # 3090 24G 显存充足
    device=1,             # 指定使用 GPU 1
    workers=16,           # 多线程加载
    cache="ram",          # 192GB 内存全量缓存加速
    optimizer="AdamW",    # 优化器
    close_mosaic=15,      # 最后15轮关闭增强
    project="blind_guide_project",
    name="yolo11l_blind_v2" # V2 版本
)

4. 开始训练

步骤 1: 上传数据

将本地生成的 blind_guidance_merged 文件夹完整上传到服务器 /home/rongye/ProgramFiles/Yolo/datasets/ 目录。

步骤 2: 运行训练

conda activate yolo
cd /home/rongye/ProgramFiles/Yolo
python train_merged.py

步骤 3: 监控

使用 watch -n 1 nvidia-smi 查看显存占用,确保训练正常开始。


5. 备份方案 (旧数据)

如果需要回退到旧版本训练(仅 14 类,数据量较小):

  1. 使用备份脚本:train.py
  2. 数据路径:/home/rongye/ProgramFiles/Yolo/datasets/indoor_blind/data.yaml
  3. 运行:python train.py

6. 模型导出 (TensorRT)

训练完成后 (V2),最佳模型位于 blind_guide_project/yolo11l_blind_v2/weights/best.pt

导出命令:

from ultralytics import YOLO
model = YOLO("blind_guide_project/yolo11l_blind_v2/weights/best.pt")
model.export(format="engine", imgsz=480, half=True, device=0)