目标检测之YOLO
1.安装依赖
安装依赖,我也是废了很久的时间,还真是扯淡啊,总是有各种各样的问题,最后终于还是解决了。
window
windos 安装GPU比较简单,安装 NVIDIA 驱动, nvidia-smi 查看 CUDA 版本, CUDA官网 找到对应版本,然后下载安装,使用nvcc -V查看是否安装成功即可。Linux
也是先安装英伟达的驱动,安装驱动,然后下载 cuda ,安装。
1 | # 查看 cuda 版本,前提已经安好了GPU的各项驱动 |
【1】.解决无法将“yolo”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
【2】.Windows 11系统更新CUDA并安装PyTorch环境
【3】.Start Locally 这里指导了如何进行安装GPU
【4】.超详细的YOLOv8安装与测试指南:让计算机视觉任务变得简单 pip安装,Conda安装、Git克隆、Docker安装
【5】.anaconda虚拟环境管理,从此Python版本不用愁
【6】.conda建立虚拟环境并安装相应包
【7】.CUDA安装教程(超详细Windows版) 输入 nvidia-smi 回车得到以下窗口,这里的12.2就是驱动对应的最高版本,我们所安装的CUDA版本小于等于它即可.COUA下载官网(点击跳转) 选择任意版本号小于等于上述最高版本的即可,按 Win键 + R键,打开Windows命令运行框,并输入 cmd 回车(Enter)
打开Windows控制台命令窗口,输入 nvcc -V (注意-前有空格)回车得到以下窗口
【8】.Linux 下的 CUDA 安装和使用指南 传统上,安装 NVIDIA Driver 和 CUDA Toolkit 的步骤是分开的,但实际上我们可以直接安装 CUDA Toolkit,系统将自动安装与其版本匹配的 NVIDIA Driver。
【9】.Linux下安装NVIDIA显卡驱动(全流程通俗教程) 前往官方网站:NVIDIA官网
【10】.Linux安装Nvidia显卡驱动+CUDA+cuDNN+PyTorch 这里步骤也挺详细的。
2.YoloV11
最新的Yolo V11版本出来了,我还要去学习这个东西,虽然很多东西都不太懂,但是实践还是要进行的。文章 Ultralytics YOLO V11 初体验—训练COCO数据集—全流程记录 总结了使用 YoloV11 的步骤,其中有些地方我觉得可能不需要了,比如:运行生成训练集txt文件形式代码、制作存储图片路径的txt文件,这两步我都安排到了直接。
1.新建Conda 虚拟环境
1
2
3
4# 创建虚拟环境
conda create -n yolo11 python=3.11
# 切换
conda activate yolo112.安装GPU pytorch
这里需要根据不同的 cuda 版本,安装不同的 pytorch-cuda。1
2
3
4
5
6
7
8
9
10
11# 安装
conda install pytorch pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
# 查看是否可用
# 如果报错可以加下面两行
import os
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
import torch
print(torch.__version__)
print(torch.cuda.is_available())3.安装Utralytics
这里我有一个疑问,就是我明明就是要安装 yolo v11 ,但是截止到2025年01月的时候,我使用 中科大源,还是清华源,最后安装的版本都是 8.3.58。后来我去官方仓库看了看,好像最新的就是 v8.3.58 这个版本,看来是我多虑了。1
4.下载YOLO V11 模型
n、s、m、l、x 分别代表不同的尺寸,尺寸越大,精度越高,相应的也是越慢的。5.下载COCO数据集
网上下载就可以了。6.下载 COCO.yaml
地址7.搭建训练文件目录
训练目录大致上就是这么做的1
2
3
4
5
6
7
8
9
10
11
12datasets
|
coco
|
images
|
train2017
val2017
labels
|
train2017
val20178.将coco数据集转为yolo数据集
COCO格式转化为YOLOv8格式 这里提供了代码,如何将 coco 的json格式,转为yolo的txt格式8.修改yaml文件
修改下载的 coco.yaml 配置文件,指定训练集和测试集。1
2
3path: D:/zlc/drone/drone-train/data/coco2017/ # dataset root dir
train: D:/zlc/drone/drone-train/data/coco2017/images/train2017 # train images (relative to 'path') 118287 images
val: D:/zlc/drone/drone-train/data/coco2017/images/val2017 # val images (relative to 'path') 5000 images11.Code训练代码
可以使用命令行直接训练,或者直接编辑 train.py 文件,如下代码1
2
3
4
5
6
7
8
9
10from ultralytics import YOLO
import multiprocessing
if __name__ == "__main__":
multiprocessing.freeze_support()
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco.yaml", epochs=8, imgsz=640)
【1】.YOLOv11 | 一文带你深入理解ultralytics最新作品yolov11的创新 | 训练、推理、验证、导出 (附网络结构图) 1.YOLOv11和YOLOv8对比。2.YOLOv11的网络结构解析。3.YOLOv11下载、环境安装、数据集获取。4.模型训练。5.模型验证/测试。6.模型推理。7.模型输出。
【2】.超详细教程YoloV11官方推荐免费数据集网站Roboflow一键导出Voc、COCO、Yolo、Csv等格式 YoloV8官方推荐了一个数据集网站,就是Roboflow。Roboflow是一个数据集管理平台,提供了免费的数据集,同时也支持上传自己的数据集进行格式转换。使用Roboflow,开发者可以方便地获取所需格式的数据集,无需手动转换格式。此外,Roboflow还提供了多种数据预处理、数据增强等功能,可帮助开发者更好地优化训练数据
【3】.YOLOv11与YOLOv8详细对比分析:mAP、Speed、Params、FLOPs 这里对比了 yolov8 和 yolov11 的区别,从性能、速度和准确率上进行对比。
【4】.目标检测:YOLOv11(Ultralytics)环境配置,适合0基础纯小白,超详细 这里进行了多个软件安装:Anaconda3安装、Pycharm安装、安装cuda及cudnn、创建虚拟环境
【5】.PyTorch训练YOLOv11—训练篇(detect)—Windows系统
【6】.【pytorch】查看torch的gpu是否可用 torch.cuda.device_count()
3.YoloV12
【1】.YOLO已经悄悄来到v12,首个以Attention为核心的YOLO框架问世 YOLO 系列模型的结构创新一直围绕 CNN 展开,而让 transformer 具有统治优势的 attention 机制一直不是 YOLO 系列网络结构改进的重点。这主要的原因是 attention 机制的速度无法满足 YOLO 实时性的要求。本周三放出的 YOLOv12 着力改变这一现状并取得具有优势的性能。
【2】.革新突破!YOLOv12携注意力机制震撼登场,实时检测快如闪电! YOLOv12提出了以注意力为中心的实时目标检测框架,通过方法论创新和架构改进,打破了传统CNN在YOLO系列中的主导地位。YOLOv12设计了区域注意力模块(A2),将特征图划分为简单的垂直或水平区域,减少了注意力机制的计算复杂度,同时保持了较大的感受野。该模块将注意力机制的计算成本从2n2hd降低到21n2hd,显著提升了检测精度和推理速度。为解决传统ELAN模块在大规模模型中的优化不稳定性问题,YOLOv12引入了R-ELAN。它通过块级残差设计和特征聚合方法,增强了特征提取能力,降低了计算成本,同时提高了训练稳定性。
4.中断训练
如果一个训练花费了很长时间,那么中间突然关机了,如何继续的训练呢?通过设置 resume=True,…… train 函数将使用存储在 “path/to/last.pt “文件中的状态,从中断处继续训练。如果 resume 参数被省略或设置为 False,…… train 功能将开始新的培训课程。
1 | from ultralytics import YOLO |
【1】.YOLO训练中断如何继续训练?
【2】.恢复中断的培训
【3】.YOLOV7断点续训和训练完成后增加epochs继续训练 增加训练
【4】.yolov5ds-断点训练、继续训练、先终止训练并调整最终epoch(yolov5同样适用)
问题
(1) No module named ‘torch’
非常的奇怪,明明使用conda安装了依赖,结果还是不行。
【解决方案】
1 | # 删除 |
(2) Can’t get attribute ‘C3k2’ on ‘ultralytics.nn.modules.block’
这个问题不知道为什么本地测试没有问题,但是到了服务器上就出现问题了。
【解决方案】
升级 ultralytics 版本
1 | pip install -U ultralytics |