2026-01-05 17:49:10 +08:00
2026-01-05 17:49:10 +08:00
2025-12-31 16:28:37 +08:00
2026-01-05 17:49:10 +08:00
2026-01-05 14:06:53 +08:00
2026-01-05 12:19:48 +08:00
2025-12-31 16:31:46 +08:00
2026-01-04 17:41:25 +08:00

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 tqdm opencv-python pyyaml

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

1.2 监控显卡

watch -n 1 nvidia-smi

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

2.1 数据集组成

我们合并了多个来源的高质量分割数据集,数据源经过精心清洗和重映射:

数据集来源 描述 作用
MIT Indoor 室内场景分类 核心补充:提供 appliance, tableware, furniture 等日常物品
Indoor Blind 早期筛选的导盲数据 基础核心数据 (Walkable areas)
Washroom 卫浴分割 覆盖 toilet, sink 等卫生间关键设施
Spoon Fork Chopstick 餐具特写 极大增强 tableware 中细小餐具的识别 (筷子/勺子/叉子)
Stair Seg 楼梯分割 增强对楼梯的识别
Stair Chair Couch 楼梯/椅子分割 补充高质量椅子与楼梯数据

已移除:

  • Estima AI: 因全部为平面设计图而非实景图,已移除。

2.2 类别定义 (22 类)

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

ID 类别 中文 ID 类别 中文
0 floor 地面 11 wall 墙壁
1 corridor 走廊 12 window 窗户
2 sidewalk 人行道 13 cabinet 柜子
3 chair 椅子 14 trash_can 垃圾桶
4 table 桌子 15 person 行人
5 sofa_bed 沙发/床 16 bag 包/背包
6 door 17 electronics 电子电器
7 elevator 电梯 18 plant 植物
8 stairs 楼梯 19 obstacle 通用障碍
9 appliance 家电 20 toilet 卫生间/马桶
10 sink 洗手台 21 tableware 餐具/物品

: tableware (ID 21) 包含杯子、碗、盘子、勺子、筷子、瓶子等。

2.3 目录结构 (服务器端)

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

/home/rongye/ProgramFiles/Yolo/
├── yolo11l-seg.pt                 # 预训练权重 (标准模型)
├── train_merged.py                # 🔥 主力训练脚本 (使用合并数据)
├── datasets/
│   └── blind_guidance_merged/     # 🔥 V2 主力数据集
│       ├── data.yaml              # 配置 (22类, 路径必须正确)
│       ├── train/
│       ├── valid/
│       └── test/
└── blind_guide_project/           # 训练日志输出

3. 训练配置

3.1 主力配置 blind_guidance_merged/data.yaml

关键点path 必须是服务器上的绝对路径。

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

nc: 22
names: [floor, corridor, sidewalk, chair, table, sofa_bed, door, elevator, stairs, wall, window, cabinet, trash_can, person, bag, electronics, plant, obstacle, appliance, toilet, sink, tableware]

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 版本
    amp=False             # ⚠️ 关键:必须关闭混合精度以防止 Loss NaN/Inf
)

注意: 如果训练出现 Loss NaN/Inf,请确保设置 amp=False。混合精度虽然省显存,但在某些特定数据集分布下会导致梯度溢出。


4. 开始训练流程

步骤 1: 上传数据

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

⚠️ 特别提醒: 上传后,请务必检查服务器上的 data.yaml 中的 path 字段是否为 /home/rongye/ProgramFiles/Yolo/datasets/blind_guidance_merged。如果还是 Windows 路径,请手动修改或上传正确的版本。

步骤 2: 运行训练

cd /home/rongye/ProgramFiles/Yolo
python train_merged.py

步骤 3: 监控

使用 watch -n 1 nvidia-smi 查看显存占用。


5. 模型导出 (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")
# 导出为 TensorRT engine, 半精度 fp16, 动态尺寸固定为 480 (或 640 根据推理端需求)
model.export(format="engine", imgsz=480, half=True, device=0)

目标文件名:yolo11l-seg-indoor.engine (导出后重命名)

Description
Yolo模型训练
Readme 54 MiB
v1.1.3 Latest
2026-01-06 17:11:20 +08:00
Languages
Python 100%