v1.1.1
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 类,数据量较小):
- 使用备份脚本:
train.py - 数据路径:
/home/rongye/ProgramFiles/Yolo/datasets/indoor_blind/data.yaml - 运行:
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)
Description