yolov12:YOLOv12: 以注意力为中心的实时目标检测器 - GitCode --- yolov12:YOLOv12: Attention-Centric Real-Time Object Detectors - GitCode

一、环境

环境配置

YOLOv12保姆级教程(win系统和ubuntu系统均可使用)_yolov12代码-CSDN博客

git clone 代码

权重下载: 此处直接选择权重文件【YOLO12n】下载即可
在这里插入图片描述

wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl

conda create -n yolov12 python=3.11

conda activate yolov12

在pycharm中添加解释器

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

----------安装requirements.txt文件,后面加清华的镜像源效果更好。

pip install -e .

先检查下torch的版本以及cuda是否可用

搭建YOLOv8实现裂缝缺陷识别全流程教程:从源码下载到模型测试_python 3.12.3 yolo8-CSDN博客

根目录创建一个py文件,名为cuda检查.py,放置如下代码并且执行:

import torch
import numpy as np
 
# 检查GPU、Cuda
 
print("numpy版本:"+np.__version__)
print("CUDA是否可用=>", torch.cuda.is_available())
print("pytorch版本=>"+torch.__version__)
print("是否支持CUDA=>"+str(torch.cuda.is_available()))
# 如果有 GPU 可用,打印 GPU 数量和名称
if torch.cuda.is_available():
    print("GPU设备数量=>", torch.cuda.device_count())
    print("当前使用GPU=>", torch.cuda.get_device_name(torch.cuda.current_device()))
else:
    print("没有GPU可用,当前将运行在CPU上")

如果没问题,会显示如下

如果你的pytorch显示cpu版本的,且numpy提示报错了,看博客解决

二、数据集

【免费下载】 YOLO地面裂缝数据集-CSDN博客

搭建YOLOv8实现裂缝缺陷识别全流程教程:从源码下载到模型测试_python 3.12.3 yolo8-CSDN博客

我选择第二个链接的数据集,下载splitata,换成下图的结构

想将 project_old目录移动到 /home/username/workspace/目录下,并重命名为 project_new

mv project_old /home/username/workspace/project_new

crack_segmentation.yaml

# 数据集路径
path: /home/qsl/3dgs-code/yolov12/splitData(3)  # 数据集根目录
train: images/train    # 训练集图像相对路径
val: images/val        # 验证集图像相对路径
test: images/test      # 测试集图像相对路径 (可选)

# 类别信息
names:
  0: crack  # 类别名称,索引从0开始

制作数据集

YOLOV9保姆级教程-CSDN博客

YOLOv5图像识别教程:成功识别桥墩缺陷详细步骤分享

三、运行

train.py

from ultralytics import YOLO


if __name__ == '__main__':

    model = YOLO('/home/qsl/3dgs-code/yolov12/ultralytics/cfg/models/v12/yolov12n.yaml')
    # 代表使用yolov12n的神经网络结构
    model.load('/home/qsl/3dgs-code/yolov12/yolov12n.pt')
    # 代表使用yolov12n的预训练权重
    model.train(data='/home/qsl/3dgs-code/yolov12/splitData(3)/splitData/crack_segmentation.yaml', # 数据集yaml路径
                imgsz=640, # 输入图像的尺寸为 640x640 像素
                epochs=200, # 训练300轮
                batch=16, # 每一批样本的数量
                workers=8, # 同时32个线程
                device="0", #只使用第一张显卡进行训练
                project='/home/qsl/3dgs-code/yolov12/train',
                name='yolov12n',
                )

 python train.py ,运行了3小时,输出在 /home/qsl/3dgs-code/yolov12/train/yolov12n5

结果分析参考一条视频讲清楚yolo训练结果的含义 - Coding茶水间 - 博客园 - 愿你无忧yyyyyyy - 博客园

 cmd打开终端,在终端输入nvidia-smi,回车执行命令就能看到GPU利用率66%:

如果电脑不太好的话,会出现GPU容量不足的情况,尽量调整数据输入量和线程,减少电脑负担,在train文件里调小workers、batch

报错Could not load library libcudnn_cnn_train.so.8

您遇到的错误,核心问题在于环境中的CUDA和cuDNN库版本存在冲突。从您提供的版本信息来看,PyTorch期望使用CUDA 12.1,但系统却错误地加载了来自CUDA 11.8路径下的旧版cuDNN库。

echo $LD_LIBRARY_PATH

echo $CUDA_HOME

  • conda activate yolov12
  • unset CUDA_HOME
  • export LD_LIBRARY_PATH=

更稳妥的做法(每次激活环境自动生效)(可以试试):

  • mkdir -p $CONDA_PREFIX/etc/conda/activate.d
  • 创建文件 vim  $CONDA_PREFIX/etc/conda/activate.d/cuda_clean.sh,内容:
    • unset CUDA_HOME
    • export LD_LIBRARY_PATH=

验证:

  • python -c "import torch, os; print(torch.version, torch.version.cuda); print('CUDA_HOME=', os.environ.get('CUDA_HOME')); print('LD_LIBRARY_PATH=', os.environ.get('LD_LIBRARY_PATH'))"

predict.py

from ultralytics import YOLO
from PIL import Image
import cv2


model = YOLO('train/yolov12n5/weights/best.pt')
results = model.predict(source='splitData(3)/images/test/1-59-_jpg.rf.88757267d8830b549d4b2eadb5febba9.jpg', save=True,save_txt=True, imgsz=640, conf=0.25)#单张图片,source也可以是文件夹

# 结果可视化
for r in results:

    # 方法1: 使用Ultralytics内置的plot方法 (快速显示)
    im_array = r.plot()  # 绘制边界框、分割掩码、标签
    im = Image.fromarray(im_array[..., ::-1])  # BGR to RGB
    cv2.imshow('result', im_array) # 显示图像
    # 等待按键,0表示无限等待直到按键
    key = cv2.waitKey(0)  # 程序会停在这里等待用户按键
    # 关闭所有OpenCV窗口
    cv2.destroyAllWindows()

控制台提示识别的结果在runs\detect\predict目录下,发现图中出现多个裂缝时不能准确识别

【图像算法 - 14】精准识别路面墙体裂缝:基于YOLO12与OpenCV的实例分割智能检测实战(附完整代码)_crack500数据集宽度测量-CSDN博客

四、autodl部署

可尝试参考

YOLOv12快速复现部署&训练测试 - 知乎

01 YOLOv12快速复现部署&训练测试_哔哩哔哩_bilibili

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐