YOLOv11入门到入土使用教程(含结构图)


一、简介

YOLOv11是Ultralytics公司在之前的YOLO版本上推出的最新一代实时目标检测器,支持目标检测、追踪、实力分割、图像分类和姿态估计等任务。官方代码:ultralytics/ultralytics:ultralytics YOLO11 🚀 (github.com)https://github.com/ultralytics/ultralytics

二、使用教程

2.1 准备代码

首先,点击上方链接进入YOLOv11的GitHub仓库,按照图示流程下载打包好的YOLOv11代码与预训练权重文件到本地。

下载完成后解压, 使用PyCharm(或VsCode等IDE软件)打开,并将下载的预训练权重拷贝到解压的工程目录下,下文以PyCharm为例。

2.2 准备数据集

Ultralytics版本的YOLO所需格式的数据集标签为txt格式的文本文件,文本文件中保存的标签信息分别为:类别序号、中心点x/y坐标、标注框的归一化信息,每一行对应一个对象。图像中有几个标注的对象就有几行信息。

自制数据集标注教程可看此篇文章:深度学习工具|LabelImg(标注工具)的安装与使用教程_labelimg安装-CSDN博客文章浏览阅读8.7k次,点赞15次,收藏66次。软件界面上包含了常用的打开文件、打开文件夹、更改保存路径、下一张/上一张图片、创建标注的格式、创建标注框等按钮,右侧显示从文件夹导入的文件列表、标签等信息。使用时可以进行如下设置,便于快速标注。_labelimg安装https://blog.csdn.net/StopAndGoyyy/article/details/139906637 如果没有自己的数据集,本文提供一个小型数据集(摘自SIMD公共数据集)以供测试代码,包含24张训练集以及20张测试集,约17.7MB,百度云链接:https://pan.baidu.com/s/1sCivMDjfAmUZK1J2P2_Dtg?pwd=1234https://pan.baidu.com/s/1sCivMDjfAmUZK1J2P2_Dtg?pwd=1234 下载完成后将提供的datasets文件夹解压并复制到工程路径下。

创建 data.yaml文件保存数据集的相关信息,如果使用本文提供的数据集可使用以下代码:

 # dataset path
train: ./images/train
val: ./images/test
test: ./images/test

# number of classes
nc: 15

# class names
names: ['car', 'Truck', 'Van', 'Long Vehicle','Bus', 'Airliner', 'Propeller Aircraft', 'Trainer Aircraft', 'Chartered Aircraft', 'Fighter Aircraft',\
        'Others', 'Stair Truck', 'Pushback Truck', 'Helicopter', 'Boat']

2.3 模型训练

创建train.py文件,依次填入以下信息。epochs=2表示只训练两轮,通常设置为100-300之间,此处仅测试两轮。batch=1表示每批次仅训练一张图片,可按显存大小调整batchsize,一般24g卡可设置为16-64。

from ultralytics.models import YOLO
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'

if __name__ == '__main__':
    model = YOLO(model='ultralytics/cfg/models/11/yolo11.yaml')
    # model.load('yolov8n.pt')
    model.train(data='./data.yaml', epochs=2, batch=1, device='0', imgsz=640, workers=2, cache=False,
                amp=True, mosaic=False, project='runs/train', name='exp')

选择安装好的torch环境,本文无torch环境的安装教程,可按照其他博主推文或视频安装torch环境。

待软件控制台打印如下信息即为运行成功。

训练完成后在runs/train.py文件夹下保存有训练好的权重及相关训练信息。

2.4 模型验证

在工程下创建val.py文件,填入刚才训练好的权重路径及相关信息。

运行即可获得该权重针对不同目标的性能指标。本文只测试2个epochs,且数据集较小,可能无相关信息。

正常信息如下图:

2.5 模型预测

创建detect.py文件,填入训练好的权重路径及要检测的图片信息。

运行即可开始检测,本文训练次数较少,可能无法检测到目标,如图左。可通过使用完整数据集进行训练,增大epochs提高检测准确率。正常检测图片如图右。

至此,模型使用教程结束。

三、模型分析

YOLOv11的结构如下,在YOLOv8的基础上将C2f替换为C3K2模块,更改C3k2模块中子模块的重复次数,并在SPPF层之后增加C2PSA模块,其他结构改动较小(检测头增加两个DWConv卷积)。

其中YOLOv11网络及主要模块的可视化化结构如下图。

C3K2模块存在两种结构,将其中的C3k参数设置为False时等于C2f模块。

class C3k2(C2f):
    """Faster Implementation of CSP Bottleneck with 2 convolutions."""

    def __init__(self, c1, c2, n=1, c3k=False, e=0.5, g=1, shortcut=True):
        """Initializes the C3k2 module, a faster CSP Bottleneck with 2 convolutions and optional C3k blocks."""
        super().__init__(c1, c2, n, shortcut, g, e)
        self.m = nn.ModuleList(
            C3k(self.c, self.c, 2, shortcut, g) if c3k else Bottleneck(self.c, self.c, shortcut, g) for _ in range(n)
        )

C3k模块与C3模块区别为其中的BottleNeck个数,C3k为两个BottleNeck,C3默认1个,并按照模型缩放因子及重复个数变化。

C2PSA模块与C2f模块相似,结构如下:


四、博主自研模型(广告)

上文是YOLOv11的使用教程及模型分析,下文是博主的一点广告。如果你觉得YOLO日益频繁的更新频率太快或者使用人数太多,可以考虑博主的自研模型作为Baseline(2024/10/30日之前群内更新),使用人数更少,相对好发文,且在SIMD数据集上拥有与YOLOv11相差不多的性能,欢迎入群交流。后面本群将以此模型作为基线模型进行更新,结合今年顶刊定会模块,进行二创三创,并在SIMD数据集上进行测试调整好,预计每周都会更新(每月 四更,纯自研模块更新时间可能久一些),以下是测试结果图和我的QQ二维码。


此篇完

相关推荐
红色的山茶花18 小时前
YOLOv8-ultralytics-8.2.103部分代码阅读笔记-block.py
笔记·深度学习·yolo
unix2linux1 天前
YOLO v5 Series - Image & Video Storage ( Openresty + Lua)
yolo·lua·openresty
菠菠萝宝1 天前
【YOLOv8】安卓端部署-1-项目介绍
android·java·c++·yolo·目标检测·目标跟踪·kotlin
ZZZZ_Y_1 天前
YOLOv5指定标签框背景颜色和标签字
yolo
红色的山茶花2 天前
YOLOv8-ultralytics-8.2.103部分代码阅读笔记-conv.py
笔记·yolo
Eric.Lee20212 天前
数据集-目标检测系列- 花卉 鸡蛋花 检测数据集 frangipani >> DataBall
人工智能·python·yolo·目标检测·计算机视觉·鸡蛋花检查
阿_旭2 天前
【模型级联】YOLO-World与SAM2通过文本实现指定目标的零样本分割
yolo·yolo-world·sam2
CSBLOG2 天前
OpenCV、YOLO、VOC、COCO之间的关系和区别
人工智能·opencv·yolo
2zcode2 天前
基于YOLOv8深度学习的医学影像骨折检测诊断系统研究与实现(PyQt5界面+数据集+训练代码)
人工智能·深度学习·yolo
深度学习lover2 天前
<项目代码>YOLOv8 草莓成熟识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·草莓成熟识别