官方代码:GitHub - ultralytics/ultralytics: Ultralytics YOLO11 🚀
官方文档:https://docs.ultralytics.com/
YOLOv11是ultralytics公司的最新作品,此公司还出了yolov5,yolov8。不得不说,ultralytics公司出品,必是精品。相比于YOLOv8,在YOLOv11中,将c2f变为C3K2,在SPPF后面添加了C2PSA,检测头内部替换了两个DWConv,模型的宽度和深度进行了大幅度的调整。
YOLOv8与YOLOv11的比较
左图为YOLOv8的yaml文件,右图为YOLOv11的yaml文件。
网络结构解析
1.C3K2机制
提出了C3K2机制,其中C3K2有参数c3k,在网络的部分位置设置为False。
叫C3K2的原因个人认为是C3K调用时参数N设置为2。
2.C2PSA
C2机制内部嵌入了一个多头注意力机制,仔细观察把Attention哪里去掉则C2PSA机制就变为了C2所以我上面说C2PSA就是C2里面嵌入了一个PSA机制。
3.分类检测头增加了两个DWConv
在分类检测头中YOLOv11插入了两个DWConv这样的做法可以大幅度减少参数量和计算量。
代码下载,环境配置
下载代码
点击: GitHub - ultralytics/ultralytics: Ultralytics YOLO11 🚀https://github.com/ultralytics/ultralytics
下载后解压,使用Pycharm打开
配置环境
1.创建虚拟环境
conda create -n yolov11 python=3.8
2.激活虚拟环境
conda activate yolov11
3.下载pytorch,根据自己的硬件,下载pytorch
pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121
4.在项目路径下,安装ultralytics
pip install ultralytics
模型训练
方式1
通过命令直接进行训练在其中指定参数,但是这样的方式,我们每个参数都要在其中打出来。
yolo task=detect mode=train model=yolov11n.pt data=data.yaml batch=16 epochs=100 imgsz=640 workers=0 device=0
方式2
通过指定cfg直接进行训练
yolo cfg=ultralytics/cfg/default.yaml
方式3
创建py文件来进行训练.
import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO
if __name__ == '__main__':
model = YOLO('yolo11.yaml')
model.train(data=r"data.yaml",
# 如果大家任务是其它的'ultralytics/cfg/default.yaml'找到这里修改task可以改成detect, segment, classify, pose
cache=False,
imgsz=640,
epochs=100,
single_cls=False, # 是否是单类别检测
batch=4,
close_mosaic=0,
workers=0,
device='0',
optimizer='SGD',
amp=True,
project='runs/train',
name='exp',
)
无论哪一种方法,只要输出网络结构就表示成功了。
训练验证
yolo task=detect mode=val model=best.pt data=data.yaml device=0
模型推理
yolo task=detect mode=predict model=best.pt source=images device=0
推理时也可以创建py文件进行推理。
模型导出
在部署模型时,需要不同的格式
yolo task=detect mode=export model=best.pt format=onnx