# training-space **Repository Path**: Andy688/training-space ## Basic Information - **Project Name**: training-space - **Description**: yolov通用训练框架 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-24 - **Last Updated**: 2026-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # YOLOv11 目标检测训练框架使用指南 ## 项目简介 这是一个基于 YOLOv11 的目标检测训练框架,提供了完整的数据集准备、模型训练、验证和可视化界面功能。适合初学者快速上手目标检测任务。 ## 目录结构 ``` yolov-win/ ├── config/ # 配置文件目录 │ ├── configs.yaml # 主配置文件 │ └── traindata.yaml # 训练数据配置 ├── data/ # 数据集目录(需要自己准备) │ ├── train/ # 训练集 │ ├── val/ # 验证集 │ ├── test/ # 测试集 │ └── dataset.yaml # 数据集配置文件 ├── data-tool/ # 数据集工具 │ └── dataset_splitter.py # 数据集划分工具 ├── UI/ # 图形界面文件 ├── utils/ # 工具函数 ├── weights/ # 模型权重目录 ├── ultralytics/ # YOLOv11 核心代码 ├── train.py # 训练脚本 ├── val.py # 验证脚本 ├── val_custom.py # 自定义验证脚本 ├── main.py # 图形界面主程序 ├── predict.py # 预测脚本 └── requirements.txt # 依赖包列表 ``` ## 第一步:环境配置 ### 1.1 安装 Python 确保已安装 Python 3.8 或更高版本。检查 Python 版本: ```bash python --version ``` ### 1.2 创建虚拟环境(推荐) 推荐使用 uv 来创建和管理虚拟环境,速度更快: ```bash # 安装 uv(如果还没有安装) # Windows (PowerShell): powershell -c "irm https://astral.sh/uv/install.ps1 | iex" # Linux/Mac: curl -LsSf https://astral.sh/uv/install.sh | sh # 使用 uv 创建虚拟环境 uv venv # 激活虚拟环境 # Windows: .venv\Scripts\activate # Linux/Mac: source .venv/bin/activate ``` 如果不想使用 uv,也可以使用传统方式: ```bash # 使用 Python 内置的 venv python -m venv venv # 激活虚拟环境 # Windows: venv\Scripts\activate # Linux/Mac: source venv/bin/activate ``` ### 1.3 安装依赖包 使用 uv 安装依赖(推荐,速度更快): ```bash # 使用 uv 安装所有依赖 uv pip install -r requirements.txt uv pip install ultralytics PyQt5 colorama ``` 或使用传统的 pip 安装: ```bash # 安装基础依赖 pip install -r requirements.txt ``` ### 1.4 验证安装 ```bash python -c "import torch; print(torch.__version__)" python -c "import ultralytics; print(ultralytics.__version__)" ``` ## 第二步:准备数据集 ### 2.1 数据集格式要求 YOLOv11 需要以下格式的数据集: ``` your_dataset/ ├── images/ # 图片文件夹 │ ├── img001.jpg │ ├── img002.jpg │ └── ... └── labels/ # 标签文件夹 ├── img001.txt ├── img002.txt └── ... ``` 标签文件格式(每行一个目标): ``` class_id center_x center_y width height ``` 注意:所有坐标值都是相对于图片宽高的比例,范围在 0-1 之间。 示例: ``` 0 0.5 0.5 0.3 0.4 1 0.2 0.3 0.1 0.2 ``` ### 2.2 使用数据集划分工具 如果你的数据集还没有划分为训练集、验证集和测试集,可以使用项目提供的工具: ```bash # 进入数据工具目录 cd data-tool # 运行数据集划分工具(交互式) python dataset_splitter.py # 或者使用命令行参数 python dataset_splitter.py --dataset "你的数据集路径" --ratio 1 --output "../data" ``` 工具会提示你: 1. 选择输入模式(输入根路径或分别输入 images 和 labels 路径) 2. 选择划分比例(6:2:2、8:1:1、5:2:3 或 3:1:1) 3. 设置输出路径(默认为项目的 data 目录) 4. 可选:自定义类别名称 划分完成后,会在输出目录生成: ``` data/ ├── train/ │ ├── images/ │ └── labels/ ├── val/ │ ├── images/ │ └── labels/ ├── test/ │ ├── images/ │ └── labels/ └── dataset.yaml ``` ### 2.3 配置数据集文件 编辑 `data/dataset.yaml` 文件,修改类别信息: ```yaml # 数据集根路径(自动生成,通常不需要修改) path: data # 子目录配置 train: train val: val test: test # 类别数量 nc: 2 # 类别名称(请根据实际情况修改) names: - person - car ``` 重要提示: - `nc` 必须等于类别数量 - `names` 列表的顺序必须与标签文件中的 class_id 对应 - 例如:class_id=0 对应第一个类别,class_id=1 对应第二个类别 ## 第三步:模型训练 ### 3.1 检查训练配置 打开 `train.py`,确认以下配置: ```python # 数据集路径(会自动查找 data/dataset.yaml 或 config/traindata.yaml) candidate_data_paths = [ os.path.join('data', 'dataset.yaml'), os.path.join('config', 'traindata.yaml'), ] # 训练参数 model.train( data=data_path, imgsz=640, # 图片大小 epochs=300, # 训练轮次 batch=16, # 批次大小 workers=workers, # 数据加载线程数 device=device, # 使用的设备(自动检测 GPU/CPU) optimizer='AdamW', # 优化器 lr0=0.002, # 初始学习率 patience=50, # 早停轮次 project='runs/train', # 保存路径 name='yolo11s', # 实验名称 ) ``` ### 3.2 调整训练参数(根据实际情况) 如果你的数据集较小(少于 1000 张图片),建议调整: ```python epochs=100, # 减少训练轮次 batch=8, # 减小批次大小 lr0=0.001, # 降低学习率 patience=30, # 减少早停轮次 ``` 如果显存不足,可以: - 减小 `batch` 参数(如 8、4、2) - 减小 `imgsz` 参数(如 416、320) - 减少 `workers` 参数(如 4、2、0) ### 3.3 开始训练 ```bash # 确保在项目根目录 python train.py ``` 训练过程中会显示: - 当前轮次和总轮次 - 训练损失(box_loss、cls_loss、dfl_loss) - 验证指标(mAP50、mAP50-95) - 学习率变化 - 预计剩余时间 ### 3.4 训练结果 训练完成后,结果保存在: ``` runs/train/yolo11s/ ├── weights/ │ ├── best.pt # 最佳模型(验证集上表现最好) │ └── last.pt # 最后一轮模型 ├── results.png # 训练曲线图 ├── confusion_matrix.png # 混淆矩阵 ├── F1_curve.png # F1 曲线 ├── P_curve.png # 精确率曲线 ├── R_curve.png # 召回率曲线 ├── PR_curve.png # PR 曲线 └── args.yaml # 训练参数记录 ``` ## 第四步:模型验证 ### 4.1 使用验证脚本 编辑 `val.py`,设置模型路径: ```python # 模型路径 yolo11s_pt = os.path.join('weights', 'yolo11s', 'weights', 'best.pt') # 或者使用训练生成的模型 yolo11s_pt = os.path.join('runs', 'train', 'yolo11s', 'weights', 'best.pt') ``` 运行验证: ```bash python val.py ``` ### 4.2 自定义验证 使用 `val_custom.py` 进行自定义验证: ```python import os from ultralytics import YOLO # 加载模型 model = YOLO(os.path.join('runs', 'train', 'yolo11s', 'weights', 'best.pt')) # 在验证集上评估 results = model.val(data=os.path.join('data', 'dataset.yaml')) # 在测试集上预测 test_results = model.predict(os.path.join('data', 'test', 'images'), save=True) ``` 运行: ```bash python val_custom.py ``` ## 第五步:使用图形界面 ### 5.1 配置界面 编辑 `config/configs.yaml`,设置模型路径和界面参数: ```yaml MODEL: WEIGHT: 'runs/train/yolo11s/weights/best.pt' # 模型权重路径 CONF: 0.25 # 置信度阈值 IMGSIZE: 640 # 图片大小 CONFIG: camera_num: 0 # 摄像头编号 draw_chinese: True # 是否绘制中文标签 show_camera: True # 是否显示摄像头功能 chinese_name: # 中文类别名称映射 person: '人' car: '车' ``` ### 5.2 启动图形界面 ```bash python main.py ``` 界面功能: - 选择图片文件:单张图片检测 - 选择图片文件夹:批量图片检测 - 选择视频文件:视频检测 - 打开摄像头:实时检测 - 导出数据:导出检测结果为 Excel 或 CSV ## 常见问题解决 ### 问题 1:找不到 CUDA 如果提示找不到 CUDA,但你有 NVIDIA 显卡: ```bash # 检查 PyTorch 是否支持 CUDA python -c "import torch; print(torch.cuda.is_available())" # 如果返回 False,需要重新安装支持 CUDA 的 PyTorch # 访问 https://pytorch.org/ 获取安装命令 ``` ### 问题 2:显存不足(OOM) 解决方法: 1. 减小 batch 参数(train.py 中的 batch=16 改为 8 或 4) 2. 减小图片大小(imgsz=640 改为 416) 3. 减少 workers 数量(workers=8 改为 4 或 0) 4. 关闭多尺度训练(multi_scale=False) ### 问题 3:训练速度慢 优化方法: 1. 使用 GPU 训练(确保 CUDA 可用) 2. 增加 workers 数量(但不要超过 CPU 核心数) 3. 使用磁盘缓存(cache='disk') 4. 减小图片大小(如果精度要求不高) ### 问题 4:模型精度低 改进方法: 1. 增加数据集数量(至少 1000 张图片) 2. 检查标签是否正确 3. 增加训练轮次(epochs) 4. 使用数据增强 5. 调整学习率 6. 尝试更大的模型(yolo11m、yolo11l) ### 问题 5:中文路径问题 避免在路径中使用中文字符,建议: - 将项目放在英文路径下 - 数据集路径使用英文 - 如果必须使用中文,确保代码中使用了正确的编码处理 ## 进阶使用 ### 使用更大的模型 YOLOv11 提供多种模型大小: ```python # 在 train.py 中修改 yaml_yolo11s = 'ultralytics/cfg/models/11/yolo11s.yaml' # 小模型(默认) yaml_yolo11m = 'ultralytics/cfg/models/11/yolo11m.yaml' # 中等模型 yaml_yolo11l = 'ultralytics/cfg/models/11/yolo11l.yaml' # 大模型 yaml_yolo11x = 'ultralytics/cfg/models/11/yolo11x.yaml' # 超大模型 ``` 模型对比: - yolo11n:最快,精度最低,适合实时应用 - yolo11s:速度快,精度中等,推荐入门使用 - yolo11m:速度中等,精度较高 - yolo11l:速度较慢,精度高 - yolo11x:最慢,精度最高,适合离线分析 ### 使用注意力机制 项目提供了 SE 注意力机制版本: ```python # 在 train.py 中设置 USE_SE = True # 启用 SE 注意力 yaml_yolo11s_SE = 'ultralytics/cfg/models/11/det_self/yolo11s-attention-SE.yaml' ``` ### 迁移学习 使用预训练权重可以提高训练效果: ```python # 项目已配置自动使用预训练权重 weights_local = os.path.join('ultralytics', 'yolo11s.pt') ``` 如果本地没有权重文件,会自动从网络下载。 ## 技术支持 如果遇到问题: 1. 检查 Python 版本(需要 3.8+) 2. 检查依赖包是否正确安装 3. 查看错误信息,根据提示解决 4. 参考 YOLOv11 官方文档:https://docs.ultralytics.com/ ## 项目特点 1. 完整的训练流程:数据准备、训练、验证、预测 2. 图形化界面:方便非技术人员使用 3. 数据集工具:自动划分数据集 4. 中文支持:界面和标签支持中文显示 5. 灵活配置:通过配置文件轻松调整参数 6. 结果导出:支持导出检测结果为 Excel/CSV ## 快速开始总结 1. 安装依赖:`pip install -r requirements.txt && pip install ultralytics PyQt5 colorama` 2. 准备数据集:使用 `data-tool/dataset_splitter.py` 划分数据集 3. 配置类别:编辑 `data/dataset.yaml` 设置类别名称 4. 开始训练:运行 `python train.py` 5. 验证模型:运行 `python val.py` 6. 使用界面:运行 `python main.py` 祝你训练顺利!