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


文章目录


前言

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

YOLOv12 创新点:

  • 引入区域注意力机制(area-attention):通过引入十字形窗口自我注意机制,沿水平和垂直条纹计算注意力机制,纵横交错的注意机制。如下图所示,区域注意力采用最多简单的等分方法,将特征地图垂直或水平划分为 L 个区域。(默认值为4)。这样可以避免复杂操作时同时保证接收野大,效率高。
  • 作者设计了残差高效层聚合网络 (R-ELAN):R-ELAN结构类似CSPNet,结构如下图的(d)所示,可以看到该结构中间层是A2(区域注意力机制),更多具体信息可以看 YOLOv12 的中的 A2C2f 模块代码

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

一、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

复制下面命令到终端即可

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 文件里面

python 复制代码
# 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

复制完如下图所示:

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

python 复制代码
pip install -r requirements.txt

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

安装命令如下:

python 复制代码
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. 操作 :按 Z X C V 等快捷键调整矩形框的角度。
    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 或 Labelme AnyLabeling可以用 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格式代码如下:

python 复制代码
# -*- coding: utf-8 -*-
"""
@Auth :挂科边缘
@File :xml转txt.py
@IDE :PyCharm
@Motto :学习新思想,争做新青年
@Email :179958974@qq.com
"""
import xml.etree.ElementTree as ET
import os, cv2
import numpy as np


classes = []


def convert(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)


def convert_annotation(xmlpath, xmlname):
    with open(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 not in 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]))
        if len(res) != 0:
            with open(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文件路径

    if not os.path.exists(txtpath):
        os.makedirs(txtpath, exist_ok=True)

    list = os.listdir(xmlpath)
    error_file_list = []
    for i in range(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.数据集划分

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

python 复制代码
# -*- coding: utf-8 -*-
"""
@Auth : 挂科边缘
@File :划分.py
@IDE :PyCharm
@Motto:学习新思想,争做新青年
@Email :179958974@qq.com
"""

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,如下图所示

代码如下:

python 复制代码
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文件

注意注意注意:模型路径改成你自己的路径,还有预测图像也改成你自己的路径

推理的代码如下:

python 复制代码
# -*- coding: utf-8 -*-
"""
@Auth : 挂科边缘
@File :detect.py
@IDE :PyCharm
@Motto:学习新思想,争做新青年
@Email :179958974@qq.com
"""

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文件,如果之前看过我的文章,已经复制过了就不用重新复制了,只需修改参数就行

训练的代码如下:

python 复制代码
# -*- coding: utf-8 -*-
"""
@Auth : 挂科边缘
@File :trian.py
@IDE :PyCharm
@Motto:学习新思想,争做新青年
@Email :179958974@qq.com
"""
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源码,即可获取完整源码,有问题可以留言,创作不易,请帮忙点个爱心呗,谢谢

相关推荐
lijianhua_97126 小时前
国内某顶级大学内部用的ai自动生成论文的提示词
人工智能
EDPJ6 小时前
当图像与文本 “各说各话” —— CLIP 中的模态鸿沟与对象偏向
深度学习·计算机视觉
蔡俊锋6 小时前
用AI实现乐高式大型可插拔系统的技术方案
人工智能·ai工程·ai原子能力·ai乐高工程
自然语6 小时前
人工智能之数字生命 认知架构白皮书 第7章
人工智能·架构
大熊背6 小时前
利用ISP离线模式进行分块LSC校正的方法
人工智能·算法·机器学习
eastyuxiao7 小时前
如何在不同的机器上运行多个OpenClaw实例?
人工智能·git·架构·github·php
诸葛务农7 小时前
AGI 主要技术路径及核心技术:归一融合及未来之路5
大数据·人工智能
光影少年7 小时前
AI Agent智能体开发
人工智能·aigc·ai编程
charlee447 小时前
最小二乘问题详解17:SFM仿真数据生成
c++·计算机视觉·sfm·数字摄影测量·无人机航测
ai生成式引擎优化技术7 小时前
TSPR-WEB-LLM-HIC (TWLH四元结构)AI生成式引擎(GEO)技术白皮书
人工智能