YOLOv12代码运行

建议看完再动手,要不还要重新装一下

一:原来的安装方法,但是显示安装的是cpu版本的torch

1.下载代码

2.创建YOLOv12的环境

conda create -name yolov12 python=3.11

3.安装requirements,注释掉第三行

flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl

pip install -r requirements.txt

4.因为是Windows系统,需要下载:windows版FlashAttention

下载地址:https://github.com/kingbri1/flash-attention/releases

需要知道Cuda、Pytorch、python版本

下载后放在YOLOv12的根目录下

cuda版本,打开cmd,命令行输入nvidia-smi  我的是12.2

打开requirements,显示torch 2.2.2 所以我的pytorch是2.2.2

python我安装的是3.11 

所以下载这个

安装完成后,安装flash_attn,后面的名字按照自己的修改

pip install flash_attn-2.3.3+cu122-cp31-cp311-win_amd64.whl

5.开发环境中安装 Python 包的命令,用于开发和调试阶段

pip install -e .

剩下就可以在准备自己的数据集开始训练啦

参考:

https://blog.csdn.net/heart_warmonger/article/details/145726360

https://blog.csdn.net/r502818330/article/details/138783932

https://blog.csdn.net/heart_warmonger/article/details/145726360 

二:安装GPU版本的pytorch

删除掉刚刚安装的环境

1.创建yolov12的环境

conda create -name yolov12 python=3.11

2.进入yolov12的环境,去pytorch官网找2.2.2版本的pytorch(或者找你相应的版本)

我选择的是这个,进入你创建的环境中,下载这个

3.打开yolov12文件,删除之前的解释器,打开刚刚配置的新的。

打开解释器设置,配置新的环境,也可以将原来的环境删掉

删除掉过多的解释器

4.requirements的第一行和第二行torch和torchvision删掉,安装requirements

打开终端,找到Command Prompt,相当于 anaconda版的cmd 命令提示窗

Command Prompt是什么

pip install -r requirements.txt

5.安装flash_attn和开发环境中安装 Python 包的命令

pip install flash_attn-2.3.3+cu122-cp31-cp311-win_amd64.whl
pip install -e .

ok,可以正常运行啦

三:虽然跑起来了,但是出现了FlashAttention is not available on this device. Using scaled_dot_product_attention instead.

大概查了一下,感觉版本的问题,现在在下载pytorch的时候,cuda选择的是12.1,而之前下载的attn的cuda是12.2版本的,所以重新下载了一下,因为看到了可兼容性,而python版本是3.11,所以下载的这个

重新下载一下,还是不行。

最后查了一下他们是干什么用的。

FlashAttention:这是一种高效的注意力机制实现,它通过优化内存访问和计算过程,显著提升了注意力计算的速度和效率,尤其在处理长序列数据时优势明显。很多深度学习模型(包括目标检测领域的 YOLO 系列)会利用它来加速训练和推理过程。

FlashAttention is not available on this device:表明当前使用的设备(通常是 GPU)不支持 FlashAttention。这可能是因为 GPU 的硬件版本不满足要求、CUDA 版本不兼容或者缺少必要的依赖库等原因

Using scaled_dot_product_attention instead:由于无法使用 FlashAttention,程序会自动切换到 scaled_dot_product_attention 这种标准的点积注意力计算方式。虽然 scaled_dot_product_attention 是一种通用的注意力计算方法,但相比 FlashAttention,其性能和效率可能会有所下降。

检查了一下自己的GPU是是2080基于Turing 架构,并非 Ampere 或更高架构,因此它不满足 FlashAttention 对 GPU 架构的要求。

四:确定batch和workers

https://blog.csdn.net/flamebox/article/details/123011129

1 batch

打开任务管理器,可以看到GPU的使用或者打开cmd,输入nvidia-smi
根据显存的使用情况确定batch,训练时显存占用越大效果越好,但如果爆显存,也是会无法训练的。所以,我先增大了batch直到显存快沾满了为止。

内存和显存的区别

  • 功能
    • 内存:用于存储计算机系统运行时的程序代码、数据以及操作系统等。它是 CPU 与外部存储设备(如硬盘、固态硬盘)之间的桥梁,CPU 需要处理的数据先从外部存储设备加载到内存,然后 CPU 再从内存中读取数据进行处理,处理后的数据也会先暂存于内存,最后再根据需要写回外部存储设备。
    • 显存:专门为显卡设计,用于存储显卡处理图形数据和图像信息,包括纹理、顶点数据、帧缓冲等。显卡在渲染图像时,会从显存中读取数据进行处理,然后将处理后的结果输出到显示器上显示。
  • 性能
    • 内存:内存的读写速度相对较慢,但容量较大,一般常见的计算机内存容量有 8GB、16GB、32GB 甚至更高。它主要是为了满足计算机系统整体运行对数据存储和访问的需求,需要与 CPU、硬盘等其他组件协同工作。
    • 显存:显存的读写速度非常快,能够满足显卡对图形数据的高速处理和传输要求。不过,显存的容量通常相对较小,常见的有 2GB、4GB、8GB、16GB 等,这是因为显卡在处理图形数据时,需要快速访问数据,所以对速度要求极高,而容量则根据不同的显卡应用场景和性能定位来确定。

2 workers

然后处理workers,查了很多资料,也没查出来什么,好像跟CPU的核心数有关。
一般来说, workers 的数量可以参考 CPU 的核心数。通常可以设置为 CPU 核心数的一半到全部,例如,如果你的 CPU 是 8 核的,那么  workers 可以设置为 4 - 8 之间。然后我自己的是6-12,所以我按照6-8-10-12分别尝试,同时计算第二个epoch的时间,谁最快用谁喽

CPU 的逻辑核数和核心数是不同的概念,主要区别如下:

  • 核心数:指的是物理上独立的处理单元,是 CPU 中真正执行指令和进行数据处理的硬件部分。每个核心都有自己独立的运算单元、缓存等,可以独立执行任务。例如,一颗 4 核心的 CPU,就有 4 个物理上相互独立的核心来并行处理数据,核心数越多,理论上能同时处理的任务就越多,计算能力也就越强。
  • 逻辑核数:是通过超线程技术(Hyper - Threading Technology)虚拟出来的核心。超线程技术允许每个物理核心同时运行两个或多个线程,使得操作系统和软件看起来好像有更多的核心可用。比如,一颗具有 4 核心且支持超线程技术的 CPU,通过超线程技术可以模拟出 8 个逻辑核心。这样在处理多任务时,每个物理核心可以在不同线程之间快速切换,提高 CPU 资源的利用率,但这种切换会带来一定的性能开销,所以逻辑核心的实际性能通常低于物理核心。
### 如何运行YOLOv5代码 为了成功运行YOLOv5代码,需遵循特定的操作流程以确保环境配置正确并能顺利执行目标检测任务。 #### 安装依赖库 在克隆YOLOv5仓库之后,进入项目目录下安装所需的Python包。这一步骤对于构建适合YOLOv5工作的虚拟环境至关重要[^1]: ```bash pip install -r requirements.txt ``` #### 配置数据集 针对自定义的数据集训练模型前,应当按照官方文档指导准备相应的文件结构以及标签格式[^3]。通常情况下,这意味着要准备好`data.yaml`文件来描述类别名称、图片路径等信息。 #### 训练模型 启动训练过程可以通过命令行工具完成,指定参数如批次大小(batch size)、轮次(epochs),还有最重要的就是前面提到过的数据集配置文件位置: ```bash python train.py --img 640 --batch 16 --epochs 50 --data data.yaml --weights yolov5s.pt ``` #### 执行推理 当拥有已经训练好的权重文件(.pt结尾), 可利用如下脚本快速测试单张图像或视频流中的物体识别效果[^4]: ```python from ultralytics import YOLO model = YOLO('path_to_your_weights_file') results = model(source='image.jpg', stream=True) for result in results: boxes = result.boxes # 获取边界框坐标 probs = result.probs # 获得分类概率分布 ``` 需要注意的是,在Windows操作系统上可能会遇到内存分页错误的问题,这时可以尝试调整系统的页面文件设置或者减少批处理尺寸以降低资源消耗[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值