YOLO11n图片识别模型训练及使用
2026-09-06 10:37:19 1
1. 环境搭建
当前环境:
● Windows 10
● Python 3.12
● NVIDIA RTX 3050 8GB
● PyTorch 2.11.0+cu128
● Ultralytics 8.4.135
创建并激活虚拟环境:
cd D:\project\others\cv-test
py -3.12 -m venv .venv
..venv\Scripts\Activate.ps1安装依赖:
python -m pip install --upgrade pip
python -m pip install -r requirements.txt检查 GPU:
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"预期是这个
PyTorch: 2.11.0+cu128
CUDA available: True
CUDA version: 12.8
GPU: NVIDIA GeForce RTX 30502. AnyLabeling 数据标注
提前拍摄了80张关于纸巾的照片
1. 下载并解压 AnyLabeling-Windows-GPU-x64
2. 打开 AnyLabeling
3. 导入原始图片目录
4. 创建目标类别:target
5. 使用矩形框框选目标
6. 保存并导出为 YOLO 格式
数据目录:
data/raw/images/
data/raw/labels/图片和标签必须同名:
IMG_001.jpg
IMG_001.txtYOLO 标签格式:
0 center_x center_y width height3. 生成训练数据集
python scripts/prepare_full_dataset.py默认划分:
● train:80%
● val:10%
● test:10%
重新生成数据集:
python scripts/prepare_full_dataset.py --overwrite4. 训练模型
python scripts/train.py默认参数:
● 模型:YOLO11n
● 输入尺寸:1280
● Batch Size:2
● Epoch:150
● GPU:0
训练权重:
runs/detect/target_yolo11n_full/weights/best.pt显存不足时:
python scripts/train.py --imgsz 1024 --batch 15. 验证模型
python scripts/validate.py --split test6. 单张图片识别
python scripts/predict.py
--model runs/detect/target_yolo11n_full/weights/best.pt
--source data/raw/images/test.jpg识别结果:
runs/predict/7. 批量图片识别
python scripts/predict.py
--model runs/detect/target_yolo11n_full/weights/best.pt
--source data/raw/images
--output runs/predict_result
--save-txt8. 示例
重新拍5张图片测试识别





结果
置信度: 0.50

置信度: 0.72

置信度: 0.86

置信度: 0.64

置信度: 0.31

AI总结
训练配置
- 环境:Python 3.12、PyTorch 2.11、CUDA 12.8
- GPU:NVIDIA RTX 3050,显存 8 GB
- 模型:YOLO11n,约 259 万参数,使用预训练权重
- 数据:64 张训练图、8 张验证图,共 1 个类别;未发现损坏图片或空标注
- 输入尺寸:1280
- Batch size:2
- 最大训练轮数:150
- 优化器:自动选择为 AdamW,初始学习率约 0.002
- 开启 AMP 混合精度训练
- Early stopping:连续 30 个 epoch 没有提升就停止
训练过程
训练初期指标波动较大,但模型很快学会了目标位置:
- 第 1 轮:mAP50 = 0.771,mAP50-95 = 0.469
- 第 16 轮:mAP50 = 0.872,mAP50-95 = 0.630
- 第 22 轮:mAP50 = 0.955,mAP50-95 = 0.730
- 后期 mAP50 基本稳定在 0.982~0.995
- 损失整体下降:
- box_loss:约 1.45 → 0.45
- cls_loss:约 5.08 → 0.63
- dfl_loss:约 2.07 → 1.12
实际训练到第 124/150 轮 时触发早停,原因是最近 30 轮没有刷新最佳结果。最佳模型出现在第 94 轮。
最终验证结果
best.pt 在验证集上的结果为:
- Precision:0.989
- Recall:1.000
- mAP50:0.995
- mAP50-95:0.943
单张图片推理耗时约 22 ms,预处理和后处理后总耗时约 25 ms。
模型文件保存在:
D:\project\others\cv-test\runs\detect\target_yolo11n_full\weights\best.pt
D:\project\others\cv-test\runs\detect\target_yolo11n_full\weights\last.pt
总体来看,训练流程正常完成,验证集表现非常好。
不过验证集只有 8 张图片、8 个目标实例,样本量很小,因此指标可能偏乐观且波动较大,不能仅凭这个结果判断真实场景的泛化能力。
日志中也没有看到独立 test 集评估,下一步最好使用更多独立测试图片进行验证。




