yolov8,yolo11,yolo12 服务器训练到部署全流程 笔记
正在进行中,随时更新
一. Anaconda配置
1.安装anaconda
(1)下载.sh文件
Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
(2)scp到服务器后,运行安装包
bash Anaconda3-2020.07-Linux-x86_64.sh
(3)安装anaconda
1.回车进入注册界面(q键跳过阅读)
2.yes
3.设置安装路径,选择默认就直接回车
4.Do you wish the installer to initialize Anaconda3 by running conda init ?
您是否希望安装程序通过运行 conda init 来初始化 Anaconda3?--yes
(4)修改环境变量,并验证安装
vim ~/.bashrc
export PATH="/home/username/anaconda3/bin:$PATH"
source ~/.bashrc
conda --version
常用conda指令
#创建
conda create -n your_env_name python=3.8
#激活
source activate your_env_name
#退出
source deactivate your_env_name
#删除
conda remove -n your_env_name --all
#安装包
conda install package_name(包名)
conda install scrapy==1.3 # 安装指定版本的包
conda install -n 环境名 包名 # 在conda指定的某个环境中安装包
#查看当前存在哪些虚拟环境
conda env list
二. yolov8、yolo11、yolo12 区别
YOLO11与YOLOv8差异可以由图中得
横坐标:处理一张图像的速度快慢(Latency),单位ms
纵坐标:COCO数据集上的平均精度(mAP),范围从0.50到0.95,越高表示模型的检测精度越好
曲线越靠右上,表示模型在保持较低Latency的同时,能够达到更高的mAP,性能越好。
1.YOLO11 改进及优劣
1.针对现代 GPU 优化训练和推理,训练速度提升 25%,延迟降低(如 Nano 模型延迟从 1.84ms 降至 1.55ms)
2.新增旋转边界框(OBB)、姿态估计等专用模型(后缀如 -obb
、-pose
)
3.通过架构优化减少参数数量,保持精度同时提升效率
优势:
- 高推理效率,尤其在 GPU 上表现出色,适合实时高负载场景
- 模型压缩技术成熟,适合资源受限的嵌入式设备
劣势:
- 超大模型(如 YOLOv11x)的延迟反而增加(11.31ms vs YOLOv10x 的 10.70ms)
- 对自定义数据集的迁移学习效果略逊于 YOLOv8(mAP 差距约 0.5)
-
YOLOv8:追求高精度和复杂任务(如实例分割、姿态估计),硬件资源充足
-
YOLOv11:需要低延迟、高吞吐量的实时应用(如工业检测、移动端部署),或需处理旋转目标
2. YOLO12
左图中,横坐标为延迟,这里指从输入到输出的处理时间。纵坐标为,模型在MS COCO数据集中的平均精度,为性能指标。
右图中,折线图横坐标为浮点运算次数,是衡量计算复杂度的指标。纵坐标何左图相同,为平均精度性能指标。
可以从两图中看出,YOLO12无论是在处理时间还是精度上,都非常强,速度快且精度高。在相同的计算复杂度时,精度也是最高的。以更少的参数来实现了更高的精度,且速度非常快,效率更高。
三. yolov8n-seg
官方文档:YOLOv8 -Ultralytics YOLO 文档
1. yolov8 环境配置
创建yolov8 conda 虚拟环境,在虚拟环境中运行以下命令
# 安装YOLOv8,直接使用命令安装
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
# 或者通过拉取仓库然后安装
git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e .
有几个库可能会用到,手动装一下。
pip install tensorboard==2.13.0
pip install onnx==1.12.0
pip install onnxsim==0.4.1
pip install pycocotools==2.0.6
环境配置部分结束。
2. yolov8 模型训练
参考官方说明文档
https://docs.ultralytics.com/modes/train/#arguments
分别配置
1)yaml模型文件
2)预训练模型(可以用默认的yolov8n-seg,会自动下载)
3)训练数据和参数
详情配置见 yolo11 模型训练部分。
四. yolo11
1. yolo11 介绍
Ultralytics YOLO11 是新一代计算机视觉模型, 在目标检测、实例分割、图像分类、姿势估计、定向物体检测和对象跟踪等计算机视觉任务上展现了卓越的性能和准确性。
整体上yolo11相较于yolov8变化不大, 主要的改变有加入多头注意力机制,分类检测头加入深度可分离卷积等等,在性能和准确度上相对于yolov8有显著提升。
官方文档:YOLO11 🚀 新 -Ultralytics YOLO 文档
2. yolo11 模型训练
2.1 yolov11 工程及环境配置
conda create -n yolo11 python=3.8
conda activate yolo11
# 配置pip源(可选)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
# 安装
pip install ultralytics
# 或者
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
pip install -e .
# 检测版本
(yolo11) yolo version
8.3.29
安装完成后,为了转onnx模型和更好的训练,建议再配置如下几个库,可以参考官方项目中的requirement.txt文件。
pip install tensorboard==2.13.0 onnx==1.12.0 onnxsim==0.4.1 pycocotools==2.0.6 -i https://pypi.tuna.tsinghua.edu.cn/simple/
2.2 yolo11 训练
进行模型推理测试:
yolo predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg'
会自动下载模型权重及测试图片。结果保存在runs/detect/predict目录下。
训练自己的数据集需要分别配置以下内容:
1)yaml模型文件
位于:./yolo11/ultralytics/ultralytics/cfg/models/11。
需要创建一个根据自己需要的yaml文件:yolo11-seg_1class.yaml
将类别修改为1。便于部署。
2)预训练模型(可以用默认文件,自动下载)
默认model=yolo11n.pt
3)训练数据和参数
在./yolo11/ultralytics/ultralytics/cfg/datasets路径下,参考coco128.yaml文件,制作一个单一类别的参数文件。需要更改类别名和训练数据路径。
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO128 dataset https://www.kaggle.com/datasets/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco/
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco128 ← downloads here (7 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: /home/username/datase
train: images/train # train images (relative to 'path') 128 images
val: images/val # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes
names:
0: qrcode
在./yolo11/ultralytics/ultralytics路径下新建一个mytrain_1c_detect.py文件。
设置输入模型的图像大小
from ultralytics import YOLO
model = YOLO('./ultralytics/cfg/models/11/yolo11-seg_1class.yaml').load('./yolo11n.pt') # build from YAML and transfer weights
results = model.train(data='./ultralytics/cfg/datasets/charge-seg.yaml', epochs=200, batch=128, imgsz=512, device=0, project='grassDetect')
在终端中运行:
python mytrain_1c_detect.py
2.3 模型转换
导出为onnx格式模型
模型导出使用专门针对rknn优化的 ultralytics_yolo11 。 该工程在基于不影响输出结果, 不需要重新训练模型的条件下, 有以下改动:
-
修改输出结构, 移除后处理结构(后处理结果对于量化不友好);
-
dfl 结构在 NPU 处理上性能不佳,移至模型外部的后处理阶段,此操作大部分情况下可提升推理性能;
-
模型输出分支新增置信度的总和,用于后处理阶段加速阈值筛选。
git clone https://github.com/airockchip/ultralytics_yolo11.git
# 修改 ./ultralytics/cfg/default.yaml中model文件路径,默认为yolo11n.pt
# 导出onnx模型
export PYTHONPATH=./
python ./ultralytics/engine/exporter.py
导出的onnx模型会在同目录下,使用 netron 查看其模型输入输出。