YOLOv12环境配置,手把手教你使用YOLOv12训练自己的数据集和推理(附YOLOv12网络结构图),全文最详细教程

YOLOv12环境配置,手把手教你使用YOLOv12训练自己的数据集和推理(附YOLOv12网络结构图),全文最详细教程

文章目录


前言

YOLO 系统尊嘟太卷了吧,YOLOv11 还没玩明白,YOLOv12 就重磅来袭,YOLOv12 是由纽约州立大学联合中科院在 2025年2月19 日发布,从 YOLOv12 论文题目我们大概就知道做了那些更新 ,下图是YOLOv12 在 COCO 数据集上的性能表现

在这里插入图片描述

YOLOv12 创新点:

作者设计了残差高效层聚合网络 (R-ELAN):R-ELAN结构类似CSPNet,结构如下图的(d)所示,可以看到该结构中间层是A2(区域注意力机制),更多具体信息可以看 YOLOv12 的中的 A2C2f 模块代码

在这里插入图片描述


理论详解可以参考链接:论文地址

引入区域注意力机制(area-attention):通过引入十字形窗口自我注意机制,沿水平和垂直条纹计算注意力机制,纵横交错的注意机制。如下图所示,区域注意力采用最多简单的等分方法,将特征地图垂直或水平划分为 L 个区域。(默认值为4)。这样可以避免复杂操作时同时保证接收野大,效率高。

在这里插入图片描述

一、YOLOv12代码下载地址

官网的源码下载地址 :官网源码

如果官网打不开的话,我已经下载好 YOLOv12 源码+预训练模型+训练脚本+推理脚本+训练测试数据集+数据集处理脚本,从公众号发送关键字 :YOLOv12源码 ,即可获取完整源码

1.YOLOv12模型结构图

根据 yolov12.yaml 画出 yolo 整体结构图,对比 YOLOv11 网络结构,YOLOv12 网络结构做了优化,减少总层数,YOLOv12 模型结构如下图所示:

在这里插入图片描述

二、YOLO环境配置教程

YOLOv12/YOLOv11/YOLOv10/YOLOv9/YOLOv8/YOLOv7/YOLOv5 环境都是通用的,只需要安装一次就行

抖音:☑️☑️☑️YOLOv12环境配置视频版 🔜🔜🔜:YOLOv12环境配置视频版

b站:☑️☑️☑️YOLOv12环境配置视频版 🔜🔜🔜:YOLOv12环境配置视频版

我用之前的环境运行,报错:mportError: cannot import name ‘scaled_dot_product_attention’ from ‘torch.nn.functional’ ,我猜应该是 pytorch 版本太低了,没有这个模块,那我只能在创建一个虚拟环境用于YOLOv12,那么接下来重新创建新的虚拟环境

在这里插入图片描述

1.创建虚拟环境

python 版本为 3.9、 3.10、3.11 都行,我选择3.11版本的

终端输入命令创建,(-n 后面接你要创建虚拟环境的名称,这个可以自己起一个名称,不一定要跟我一样):

conda create -n yolov12 python=3.11 
在这里插入图片描述

输入 y 回车,等待下载即可

在这里插入图片描述

2.激活虚拟环境

激活虚拟环境语法是 conda activate myenv,myenv是自己的虚拟环境名称,命令如下:

conda activate yolov12 

激活成功括号变成你刚刚创建虚拟环境名字

在这里插入图片描述

3.查询自己电脑可支持最高cuda版本是多少(无显卡的同学可以跳过这个步骤)

那怎么知道电脑有没有显卡,在开始菜单搜索设备管理器打开

在这里插入图片描述
在这里插入图片描述


有显卡的同学还需要进行查询自己电脑支持最高 cuda 版本是多少,在终端输入命令 nvidia-smi 查看

在这里插入图片描述


可以看到我电脑支持最高 cuda 版本是 12.5,所以可以安装向下版本的 cuda,那么知道这个有什么用,当然有用,可以看到 pytorch 官网安装命令都带有 cuda 版本号

在这里插入图片描述


假设你电脑都不支持这么高的cuda 版本,你安装了 pytorch 那么你就用不了 GPU 了。如果你电脑支持cuda太低,你可以更新英伟达驱动,更新英伟达驱动直达地址: 英伟达驱动,根据自己电脑选择下载,安装超级简单,直接下一步下一步就行,安装完成之后重启电脑,在终端输入 nvidia-smi 命令,来查看可支持的最高 cuda 版本

4.pytorch安装

看了一眼官网的配置文件,官网安装pytorch是2.2.2的

在这里插入图片描述


电脑有英伟达显卡就安装带 cuda 的 pytorch,电脑没有显卡则安装 cpu 的 pytorch,去 pytorch 官网找到合适版本复制命令安装就行 pytorch官网直达地址是:pytorch官网,复制命令时候 -c 后面不用复制

在这里插入图片描述


复制命令到终端,出现下图这样,或者安装不了的,不急,我们换一种方式安装,就是通过离线下载安装库进行安装,我换源还是安装不了,那么我们就通过另外一种方式安装,就是下载 whl 安装包,这种成功率达到 99% 。

在这里插入图片描述

把这个下图这几个版本记住,之后离线下载对应版本就行

在这里插入图片描述

离线安装包下载地址:pytorch离线安装包下载地址

打开链接,找到版本下载即可,说一下文件名的意思,

  • cu118:是 cuda 版本是 11.8,cu102 就是 cuda 版本是 10.2 的,依次类推
  • cp311:是 Python 的版本是3.11,cp39就是Python版本是3.9,依次类推
  • win:是 Windows 操作系统的意思,这个大家应该看得懂的

因为前面我按照 python 版本为 3.11 的,那么就选择 cp311 的,系统选择 win,这个版本号一定要对上 python 的版本号哦 ,之后点击下载就行,大家根据自己需求选择安装即可

在这里插入图片描述


如果没有显卡就选择 cpu 的

在这里插入图片描述


除了下载 pytorch,还需要下载对应版本的 torchvision 和 torchaudio(前面叫你记住版本号了哦)
在下载对应版本 torchvision,我的是 torchvision==0.17.2

在这里插入图片描述

在下载对应版本的 torchaudio,我的应该是 torchaudio==2.2.2

在这里插入图片描述


下载完成,在终端进入文件所在的位置,我的在 E:\3-浏览器下载的文件,先进入E盘,再 cd 切换路径,之后 pip install 文件名 安装即可,(小技巧:打文件名时候可以用 tab 键补全,关注我不仅学到一个实用的小技巧哦)

在这里插入图片描述


记得激活虚拟环境在安装

在这里插入图片描述


把刚刚下载三个文件按照顺序安装即可,顺序是: 首先是 torch,其次是 torchvision,最后是 torchaudio

5.验证 PyTorch GPU 是否可用(没有显卡的同学不用看这个步骤)

安装完成后,测试 GPU 是否可用,如果输出为 True 则表示 GPU 可以使用,要是输出 False 代表不可以使用 GPU 加速,输出 False 也是可以使用的,一般 CPU 训练会很慢,慢到你怀疑人生那种,不过用来推理还是可以的。要是没有显卡租一个服务器训练模型就行,如果这个反响比较大,我也会出一期在服务器怎么训练的教程。

在终端输入 python

在这里插入图片描述


复制下面命令到终端即可

import torch print(torch.__version__)print(torch.cuda.is_available())print(torch.cuda.device_count())
在这里插入图片描述


看到这里 pytorch 安装完成

6.安装其他依赖

安装 requirements.txt 文件的环境,可以看到 YOLOv12 官网给出了很多库版本,其实有些我们用不到,我拿 YOLOv8 的 requirements.txt 来安装即可,到时候缺什么我们在单独安装,不仅减少电脑内存
下图是 YOLOv12 官网的 requirements.txt 文件,把里面内容删了,复制我给的库到 requirements.txt 文件里面

在这里插入图片描述
# Ultralytics requirements# Example: pip install -r requirements.txt# Base ---------------------------------------- matplotlib>=3.3.0 numpy==1.24.4# pinned by Snyk to avoid a vulnerability opencv-python>=4.6.0 pillow>=7.1.2 pyyaml>=5.3.1 requests>=2.23.0 scipy>=1.4.1 tqdm>=4.64.0# Logging -------------------------------------# tensorboard>=2.13.0# dvclive>=2.12.0# clearml# comet# Plotting ------------------------------------ pandas>=1.1.4 seaborn>=0.11.0# Export --------------------------------------# coremltools>=7.0 # CoreML export# onnx>=1.12.0 # ONNX export# onnxsim>=0.4.1 # ONNX simplifier# nvidia-pyindex # TensorRT export# nvidia-tensorrt # TensorRT export# scikit-learn==0.19.2 # CoreML quantization# tensorflow>=2.4.1 # TF exports (-cpu, -aarch64, -macos)# tflite-support# tensorflowjs>=3.9.0 # TF.js export# openvino-dev>=2023.0 # OpenVINO export# Extras -------------------------------------- psutil # system utilization py-cpuinfo # display CPU info thop>=0.1.1# FLOPs computation# ipython # interactive notebook# albumentations>=1.0.3 # training augmentations# pycocotools>=2.0.6 # COCO mAP# roboflow

复制完如下图所示:

在这里插入图片描述

接下来正常安装就行,这个安装步骤我之前视频讲过,大家有兴趣可以看我之前的安装视频,在自己的虚拟环境里面安装,安装命令如下:

pip install -r requirements.txt 
在这里插入图片描述


安装完成我们测试推理,运行推理文件报错,人家提示你没有安装这个库,之后缺什么就安装什么库

在这里插入图片描述


安装命令如下:

pip install huggingface-hub==0.23.2
在这里插入图片描述

最后完美推理成功

在这里插入图片描述

7.补充(flash_attn环境)

从官网的环境配置文件看出还给出了 flash_attn 库,从库的名字看出是在linux 下安装的,那么在 windows 系统当然安装不了 linux 版本的库,如需在 windows 安装 flash_attn 库,则需要找 windows 版本的 flash_attn 库。网上应该有教程在 windows 版本安装 flash_attn 库(需要安装自行网上搜索找找看,后续有这个安装需求我也更新安装步骤出来),我就没有安装照样是可以训练和推理的,下文继续详细讲一下。

在这里插入图片描述


从官网代码可以看出,AAttn 类中的 forward 方法中人家已经写好了,安装有 flash_attn 的话,则使用 flash_attn_func 函数计算,未安装或未启用flash_attn,则使用标准的缩放点积注意力(sdpa)函数来计算;最后一种情况是在 cpu 训练,则是执行最后一段代码。也就说有没有安装 flash_attn库,照样可以训练,只是注意力计算方式有所区别,应该不会对结果产生很大影响吧(大家具体实验试试)。

在这里插入图片描述

如果安装有 flash_attn ,不想用 flash_attn_func 计算,可以通过 USE_FLASH_ATTN = True 参数设置,不需要设置 False 即可

在这里插入图片描述

三、数据集准备

在 YOLO 系列任务中,不同的任务(Detection, Segmentation, Keypoints, OBB)对标注格式有不同要求。我主要使用目标检测比较多,大家根据自己需求选择合适标注工具就行,网上也有很多大佬分享各种任务数据集标注教程的,大家搜索参考就行。下面分析主流的标注工具,有好的标注工具大家也可以推荐一下。

LabelImg & Labelme

LabelImg(仅限矩形检测框)

  • 适合的任务:目标检测 (Detection)
  • 优点:小巧、原生支持 YOLO 格式(.txt)。
  • 教程
    1. 安装pip install labelimg
    2. 启动:在终端输入 labelimg
    3. 配置:左侧工具栏选择 “YOLO” 格式。
    4. 操作:按 W 绘制框,A 前一张,D 后一张。
    5. 注意:生成的 classes.txt 必须与图片放在一起。

Labelme

  • 适配任务:语义/实例分割 (Segmentation)、关键点、目标检测。
  • 优点:支持多边形绘制等。
  • 教程
    1. 安装pip install labelme
    2. 启动:终端输入 labelme
    3. 操作:点击 “Create Polygons” 勾勒物体轮廓。
    4. 导出:保存为 .json 文件。
    5. YOLO转换:YOLO 无法直接用 JSON,需使用脚本将 Labelme JSON 转换为 YOLO Segmentation 格式(x1 y1 x2 y2… 归一化坐标)。

X-AnyLabeling

听说这是目前开发者社区最喜欢的工具,集成了大量的自动标注模型,简直是解放双手。

  • 适配任务:检测、分割、关键点、OBB (旋转框)
  • 核心优势自动标注。内置了 Segment Anything (SAM)、YOLOv8、RT-DETR 等模型,点一下就能自动抠图。
  • 教程
    1. 下载:去 GitHub 下载编译好的 .exe 或源码。
    2. 加载模型:点击左侧机器人图标,选择 “Segment Anything” 或其他预训练模型。
    3. 标注 OBB:支持绘制旋转矩形,直接导出为 YOLO OBB 格式。
    4. 导出:直接支持多种格式(JSON, YOLO, VOC)。

旋转框 (OBB) 标注工具:roLabelImg

  • 适合的任务:旋转目标检测 (Oriented Bounding Box)。
  • 场景:常用于遥感影像、倾斜文本、紧密排列的物体。
  • 教程
    1. 安装:需要从 GitHub 克隆源码编译。
    2. 操作:按 ZXCV 等快捷键调整矩形框的角度。
    3. 输出:通常输出 XML,需转换成 YOLO OBB 的格式(x1 y1 x2 y2 x3 y3 x4 y4)。

除了上述主流工具,也有一些非常实用的工具:

  1. AnyLabeling
    • 和 X-AnyLabeling 类似,也是基于 SAM 的全能标注工具,UI 非常清爽。
  2. LabelBee
    • 针对高精地图和工业场景,支持非常复杂的关键点和 3D 点云标注。
  3. IsLabeler
    • 一款支持自动标注的软件,对中文支持非常好,适合小白快速上手。
  4. Make Sense
    • 网址:makesense.ai。无需安装,直接在浏览器拖入图片即可标注,支持导出 YOLO 格式,适合临时紧急标注几张图。
  5. Label Studio
    • 适合任务有检测、分类、音频、文本、关键点。安装方法: pip install label-studio -> 浏览器打开 -> 配置 Labeling Config。

大家根据需求选择合适标注工具就行

任务类型推荐工具理由
目标检测 (Rect)LabelImgX-AnyLabeling前者极简,后者有 AI 辅助。
实例分割 (Segment)X-AnyLabeling 或 LabelmeAnyLabeling可以用 SAM (Segment Anything) 辅助,手动拉点会疯掉。
关键点 (Pose)Labelme 或 其他Labelme 需要自己定义点顺序。
旋转框 (OBB)X-AnyLabeling 或 其他支持最友好,直接出旋转框坐标。

1.目标检测数据集标注软件

我的数据是目标检测多,目标检测数据集标注我这里推荐两个标注软件,一个是 labelimg,另外一个是 labelme。大家根据自己需求选择合适标注工具就行,网上也有很多大佬分享各种任务数据集标注教程的,大家搜索参考就行。
可以在python环境,使用 pip install labelimg 或者 pip install labelme 进行安装,看你选择哪个标注工具标注了,我使用 labelimg 标注工具,安装完成在终端输入命令启动标注软件

在这里插入图片描述


下面是软件界面

在这里插入图片描述


设置自动保存标注生成的标注文件

在这里插入图片描述

2.voc数据集格式转换

标注格式如果选择VOC格式,后面需要代码转换格式,如果选择yolo格式就不用转换,voc格式转换yolo格式代码如下:

# -*- coding: utf-8 -*-""" @Auth :挂科边缘 @File :xml转txt.py @IDE :PyCharm @Motto :学习新思想,争做新青年 @Email :[email protected] """import xml.etree.ElementTree as ET import os, cv2 import numpy as np classes =[]defconvert(size, box): dw =1./(size[0]) dh =1./(size[1]) x =(box[0]+ box[1])/2.0-1 y =(box[2]+ box[3])/2.0-1 w = box[1]- box[0] h = box[3]- box[2] x = x * dw w = w * dw y = y * dh h = h * dh return(x, y, w, h)defconvert_annotation(xmlpath, xmlname):withopen(xmlpath,"r", encoding='utf-8')as in_file: txtname = xmlname[:-4]+'.txt' txtfile = os.path.join(txtpath, txtname) tree = ET.parse(in_file) root = tree.getroot() filename = root.find('filename') img = cv2.imdecode(np.fromfile('{}/{}.{}'.format(imgpath, xmlname[:-4], postfix), np.uint8), cv2.IMREAD_COLOR) h, w = img.shape[:2] res =[]for obj in root.iter('object'): cls = obj.find('name').text if cls notin classes: classes.append(cls) cls_id = classes.index(cls) xmlbox = obj.find('bndbox') b =(float(xmlbox.find('xmin').text),float(xmlbox.find('xmax').text),float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text)) bb = convert((w, h), b) res.append(str(cls_id)+" "+" ".join([str(a)for a in bb]))iflen(res)!=0:withopen(txtfile,'w+')as f: f.write('\n'.join(res))if __name__ =="__main__": postfix ='png'# 图像后缀 imgpath =r'E:\A-毕业设计代做数据\helmet\test\images'# 图像文件路径 xmlpath =r'E:\A-毕业设计代做数据\helmet\test\annotations'# xml文件文件路径 txtpath =r'E:\A-毕业设计代做数据\helmet\test\labels'# 生成的txt文件路径ifnot os.path.exists(txtpath): os.makedirs(txtpath, exist_ok=True)list= os.listdir(xmlpath) error_file_list =[]for i inrange(0,len(list)):try: path = os.path.join(xmlpath,list[i])if('.xml'in path)or('.XML'in path): convert_annotation(path,list[i])print(f'file {list[i]} convert success.')else:print(f'file {list[i]} is not xml format.')except Exception as e:print(f'file {list[i]} convert error.')print(f'error message:\n{e}') error_file_list.append(list[i])print(f'this file convert failure\n{error_file_list}')print(f'Dataset Classes:{classes}')

代码需要修改的地方如下:
1.postfix参数填图片的后缀,需要注意图片格式要统一,是png格式就写png,是jpg格式就写jpg
2.imgpath参数填图片所在的路径
3.xmlpath参数填标注文件的路径
4.txtpath参数填生成的yolo格式的文件

在这里插入图片描述

3.数据集划分

划分训练集和验证集代码如下:

# -*- coding: utf-8 -*-""" @Auth : 挂科边缘 @File :划分.py @IDE :PyCharm @Motto:学习新思想,争做新青年 @Email :[email protected] """import os, shutil from sklearn.model_selection import train_test_split val_size =0.2 postfix ='jpg' imgpath =r'E:\A-毕业设计代做数据\datasets\images' txtpath =r'E:\A-毕业设计代做数据\datasets\labels' output_train_img_folder =r'E:\A-毕业设计代做数据\datasets\dataset_kengwa/images/train' output_val_img_folder =r'E:\A-毕业设计代做数据\datasets\dataset_kengwa/images/val' output_train_txt_folder =r'E:\A-毕业设计代做数据\datasets\dataset_kengwa\labels/train' output_val_txt_folder =r'E:\A-毕业设计代做数据\datasets\dataset_kengwa\labels/val' os.makedirs(output_train_img_folder, exist_ok=True) os.makedirs(output_val_img_folder, exist_ok=True) os.makedirs(output_train_txt_folder, exist_ok=True) os.makedirs(output_val_txt_folder, exist_ok=True) listdir =[i for i in os.listdir(txtpath)if'txt'in i] train, val = train_test_split(listdir, test_size=val_size, shuffle=True, random_state=0)for i in train: img_source_path = os.path.join(imgpath,'{}.{}'.format(i[:-4], postfix)) txt_source_path = os.path.join(txtpath, i) img_destination_path = os.path.join(output_train_img_folder,'{}.{}'.format(i[:-4], postfix)) txt_destination_path = os.path.join(output_train_txt_folder, i) shutil.copy(img_source_path, img_destination_path) shutil.copy(txt_source_path, txt_destination_path)for i in val: img_source_path = os.path.join(imgpath,'{}.{}'.format(i[:-4], postfix)) txt_source_path = os.path.join(txtpath, i) img_destination_path = os.path.join(output_val_img_folder,'{}.{}'.format(i[:-4], postfix)) txt_destination_path = os.path.join(output_val_txt_folder, i) shutil.copy(img_source_path, img_destination_path) shutil.copy(txt_source_path, txt_destination_path)

需要修改的地方如下

在这里插入图片描述


下面四个参数只需在自己电脑任意位置新建一个文件夹就行,用于存放生成的训练集和验证集,比如新建一个文件夹叫dataset_kengwa,后面的路径不用动,如下图左边的框出来的路径覆盖成你的就行

在这里插入图片描述


数据集有以下两种方式放置,都可以进行训练,常见的数据集放置是第一种,也有开源的数据集按照第二种方式放置的,我都遇见过,也能训练起来

在这里插入图片描述

4.修改yolo的训练配置文件

我们需要在项目下创建一个 data.yaml 的文件,文件名根据数据集名称取,我这里方便演示直接叫data.yaml,如下图所示

在这里插入图片描述


代码如下:

train: E:\Desktop\new-yolov9\yolotest\images\train # train images (relative to 'path') 4 images val: E:\Desktop\new-yolov9\yolotest\images\val # val images (relative to 'path') 4 images nc:2# class names names:['dog','cat']

四、YOLOv12推理

(1)官网的预训练模型下载

进入官网的源码下载地址 :官网模型下载地址,往下面拉,看到模型位置,YOLOv12 针对不同的场景和应用提供了 YOLOv12n、YOLOv12s 等不同大小的模型,具体看官网提供的,需要下载哪个,鼠标左键单击下载就行。

在这里插入图片描述

我的源码包已经下载好了模型了,如果需要其他权重自行下载就行

(2)在根目录新建一个python文件,取名为:detect.py

在这里插入图片描述


(3)把推理代码复制到detect.py文件
注意注意注意:模型路径改成你自己的路径,还有预测图像也改成你自己的路径
推理的代码如下:

# -*- coding: utf-8 -*-""" @Auth : 挂科边缘 @File :detect.py @IDE :PyCharm @Motto:学习新思想,争做新青年 @Email :[email protected] """from ultralytics import YOLO if __name__ =='__main__':# Load a model model = YOLO(model=r'D:\2-Python\1-YOLO\YOLOv11\ultralytics-8.3.2\yolo11n-seg.pt') model.predict(source=r'D:\2-Python\1-YOLO\YOLOv11\ultralytics-8.3.2\ultralytics\assets\bus.jpg', save=True, show=False,)

推理代码的参数解释
1.model参数:该参数可以填入模型文件路径
2.source参数:该参数可以填入需要推理的图片或者视频路径,如果打开摄像头推理则填入0就行
3.save参数:该参数填入True,代表把推理结果保存下来,默认是不保存的,所以一般都填入True
4.show参数:该参数填入True,代表把推理结果以窗口形式显示出来,默认是显示的,这个参数根据自己需求打开就行,不显示你就填False就行

目标检测模型推理结果如下:

在这里插入图片描述

五、YOLOv12训练

(1)在根目录新建一个python文件,取名为:train.py,如果之前看过我的文章,已经新建过就不用重新新建了

在这里插入图片描述

(2)把训练代码复制到train.py文件,如果之前看过我的文章,已经复制过了就不用重新复制了,只需修改参数就行
训练的代码如下:

# -*- coding: utf-8 -*-""" @Auth : 挂科边缘 @File :trian.py @IDE :PyCharm @Motto:学习新思想,争做新青年 @Email :[email protected] """import warnings warnings.filterwarnings('ignore')from ultralytics import YOLO if __name__ =='__main__': model = YOLO(model=r'D:\2-Python\1-YOLO\YOLOv12\yolov12-main\ultralytics\cfg\models\v12\yolov12.yaml')# model.load('yolo11n.pt') # 加载预训练权重,改进或者做对比实验时候不建议打开,因为用预训练模型整体精度没有很明显的提升 model.train(data=r'data.yaml', imgsz=640, epochs=50, batch=4, workers=0, device='', optimizer='SGD', close_mosaic=10, resume=False, project='runs/train', name='exp', single_cls=False, cache=False,)

注意注意注意:模型配置路径改成你自己的路径,还有数据集配置文件也修改成你自己的路径

在这里插入图片描述


训练代码的参数解释:

  • model参数:该参数填入模型配置文件的路径,改进的话建议不需要填预训练模型权重
  • data参数:该参数可以填入训练数据集配置文件的路径
  • imgsz参数:该参数代表输入图像的尺寸,指定为 640x640 像素
  • epochs参数:该参数代表训练的轮数
  • batch参数:该参数代表批处理大小,电脑显存越大,就设置越大,根据自己电脑性能设置
  • workers参数:该参数代表数据加载的工作线程数,出现显存爆了的话可以设置为0,默认是8
  • device参数:该参数代表用哪个显卡训练,留空表示自动选择可用的GPU或CPU
  • optimizer参数:该参数代表优化器类型
  • close_mosaic参数:该参数代表在多少个 epoch 后关闭 mosaic 数据增强
  • resume参数:该参数代表是否从上一次中断的训练状态继续训练。设置为False表示从头开始新的训练。如果设置为True,则会加载上一次训练的模型权重和优化器状态,继续训练。这在训练被中断或在已有模型的基础上进行进一步训练时非常有用。
  • project参数:该参数代表项目文件夹,用于保存训练结果
  • name参数:该参数代表命名保存的结果文件夹
  • single_cls参数:该参数代表是否将所有类别视为一个类别,设置为False表示保留原有类别
  • cache参数:该参数代表是否缓存数据,设置为False表示不缓存。

注意注意注意:一般做科研改进工作时候可以不用预训练权重,因为用预训练模型整体精度很难提高

没有加载预训练模型,训练成功:

在这里插入图片描述

我这里演示加载预训练权重,训练输出如下所示:

在这里插入图片描述

六、解决训练过程中断怎么继续上次训练

在训练过程不小心中断了,那怎么继续上次的训练了,这里先不慌,官网也的代码写得非常好,它有这个断点训练功能,那么 YOLOv8 v10 v11 v12 处理的方法都是一模一样,接下来直接看图操作就行:

在这里插入图片描述
  • model参数:该参数填入上次中断的模型,为 last.pt
  • resume参数:该参数设置为True,则会加载上一次训练的模型权重和优化器状态,继续训练。

总结

YOLOv12 训练自己数据集和推理到此结束,我已经下载好 YOLOv12 源码+预训练模型+训练脚本+推理脚本+训练测试数据集+数据集处理脚本,从公众号发送关键字 :YOLOv12源码,即可获取完整源码,有问题可以留言,创作不易,请帮忙点个爱心呗,谢谢

在这里插入图片描述

Read more

AMD MI50 在Ubuntu 24.04下安装驱动和ROCm

MI50,千元能买到的HBM2 32G显存图形加速卡 目前这个GCN架构已经是淘汰架构了,只有CDNA(Compute DNA 专业级)和RDNA(Radeon DNA 消费级)才能安装最新的ROCm。这一代架构最后支持的版本为6.3.x。 目前推荐安装在系统Ubuntu24.04,有专门的驱动。 逐条执行以下命令: sudo apt update sudo apt install "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)" sudo apt install python3-setuptools python3-wheel sudo usermod -a -G render,video $LOGNAME wget https:

By Ne0inhk
【Linux指南】Linux命令行进度条实现原理解析

【Linux指南】Linux命令行进度条实现原理解析

引言 在Linux命令行环境中,进度条是一种直观展示任务执行进度的重要方式。 本文将通过一个简单的C语言进度条程序,深入解析其实现原理和优化过程。 文章目录 * 引言 * 进度条基础原理 * 基础版进度条实现 * 解耦与通用化设计 * 回调机制与业务集成 * 进阶优化思路 * 总结 进度条基础原理 进度条的核心功能是将一个耗时操作的完成情况以可视化的方式展示给用户。在命令行环境中,我们通常使用字符界面来实现这一功能。 一个基本的进度条需要包含以下元素: * 进度指示条:通常用字符填充表示已完成部分 * 百分比数值:精确显示当前完成比例 * 动画效果:通过字符变化提供视觉反馈 * 动态刷新:实时更新显示内容 基础版进度条实现 我们先来看第一个版本的进度条实现: // process.h#pragmaonce#include<stdio.h>//v1voidprocess(); // process.c (v1部分)#include"process.h"#include<string.h>

By Ne0inhk
工业物联网时代时序数据库选型指南:从大数据架构视角深度解析Apache IoTDB

工业物联网时代时序数据库选型指南:从大数据架构视角深度解析Apache IoTDB

👨‍🎓博主简介 🏅ZEEKLOG博客专家 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支持,我们一起进步!😄 🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗 文章目录 * 一、引言:时序数据管理的范式转移 * 二、时序数据库选型的六大核心维度 * 2.1 写入吞吐性能:高并发数据洪流的承载能力 * 2.2 查询响应延迟:实时业务决策的时效保障 * 2.3 存储压缩效率:TCO控制的关键杠杆 * 2.4 数据模型灵活性:物理世界的数字化映射 * 2.5 端边云协同架构:全场景部署的适应能力 * 2.6 生态集成能力:技术栈的无缝融合 * 三、国际主流时序数据库技术路线分析 * 3.1

By Ne0inhk
26年网络建设与运维样题一的网络建设与调试模块完整配置方案(深一职-华为)

26年网络建设与运维样题一的网络建设与调试模块完整配置方案(深一职-华为)

模块一:网络建设与调试 任务描述: 某集团公司原在城市A成立了总公司,后在城市B成立了分公司,又在城市 C 建立了办事处。集团设有产品、营销、法务、财务、人力5 个部门,统一进行 IP 及业务资源的规划和分配,全网采用 OSPF、 RIP、ISIS、BGP 路由协议进行互联互通。 随着企业数字化转型工作进一步推进,为持续优化运营创新,充分激活数据要素潜能,为社会创造更多价值,集团决定在总公司建立两个数据中心,在某省建立异地灾备数据中心,以达到快速、可靠交换数据,增强业务部署弹性的目的,完成向两地三中心整体战略架构演进,更好的服务于公司客户。 网络拓扑图: 模块一网络建设与调试 完整配置方案 本配置方案基于赛题要求,涵盖交换配置、路由调试、策略调试三大核心部分,采用华为设备命令行体系(大赛主流设备体系),按赛题要求完成所有配置项,同时附关键解析说明。 通用前提配置 所有设备先完成基础初始化: sysname 设备名 // 如CE-1、

By Ne0inhk