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 3050

2. 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.txt

YOLO 标签格式:

0 center_x center_y width height

3. 生成训练数据集

python scripts/prepare_full_dataset.py

默认划分:

● train:80%

● val:10%

● test:10%

重新生成数据集:

python scripts/prepare_full_dataset.py --overwrite

4. 训练模型

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 1

5. 验证模型

python scripts/validate.py --split test

6. 单张图片识别

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-txt

8. 示例

重新拍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 集评估,下一步最好使用更多独立测试图片进行验证。


 YOLO11n图片识别模型训练及使用

YOLO11n图片识别模型训练及使用

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 -
2026-09-06

freemarker 时间显示不正常 设置时区

项目在本地开发的时候显示正常,部署上服务器就一直差8个小时,最后发现freemarker官方文档有这样的说明time_zone:时区的名称来显示并格式化时间。 默认情况下,使用JVM的时区。 也可以是 Java 时区 API 接受的值,或者 "JVM default" (从 FreeMarker 2
2020-03-28
IDEA 2019.1 xml 不高亮

IDEA 2019.1 xml 不高亮

前几天更新了idea后,发现xml里的代码都没有了高亮,变得跟记事本一个德性了打开setting ,搜索 File Types,找到xml项, 查看下方的匹配格式,果然没有xml,(idea真是厉害)点击右方的+,输入*.xml,点击ok,解决问题
2020-03-28

npm install 淘宝镜像

npm install --registry=https://registry.npm.taobao.org
2020-03-28
Java中方法的参数传递机制

Java中方法的参数传递机制

来看一段代码 public class Man { private String name; private Integer age; public String getName() { return name; } publi
2020-03-28
基于自定义注解手写权限控制

基于自定义注解手写权限控制

方法一: AOP 方法二: 拦截器项目结构项目依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-w
2020-03-28

Docker 部署 详细全过程 附代码

Docker 部署本站 全过程环境:CentOS7.61. 安装Docker其他版本CentOS可以参考这个https://help.aliyun.com/document_detail/187598.html查看本机内核版本,内核版本需高于 3.10uname -r 确保 yum 包最新yum u
2020-03-28

SpringBoot 启动普通java工程

引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.0.9</version> </dependency>
2020-03-28

Vue.js DOM操作

<template> <input type="button" @click="reply($event)" value="回复"> </template> export default { methods: { replyFun(e) {
2020-03-29
CentOS7编译调试OpenJDK12

CentOS7编译调试OpenJDK12

1. 下载源码https://hg.openjdk.java.net/jdk/jdk12点击左侧的browse,再点击zip,就可以下载zip格式的源码压缩包。unzip xxx.zip 解压文件2. 安装jdkyum install java-11-openjdk-devel -y3. 运行con
2020-04-23
编写自己的Spring Boot Starter

编写自己的Spring Boot Starter

1.新建一个maven项目命名规则统一是xxx-spring-boot-starter完整pom.xml<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
2020-06-29