YOLOv12


github地址:https://github.com/sunsmarterjie/yolov12
YOLOv12是由纽约大学、北京中国科学院大学和布法罗大学团队联合打造的最新目标检测YOLO框架,是一种以以注意力为核心的检测方法。
本文不是研究文章,仅作为使用教程。
一、下载安装YOLOv12
下载
通过github将YOLOv12进行clone或者下载到本地,进入到相应的目录下:

安装
进入到 YOLOv12目录,调用pip安装:
pip install -r requirements.txt
pip install thop
官方推荐 python 3.11 版本。thop 有可能会提示缺失问题,所以也需要安装。
如果你是linux可以直接安装,但如果你是windows请按以下步骤安装。
windows安装
-
github下载 flash_attn windows版本地址:https://github.com/kingbri1/flash-attention/releases?page=1
-
选择相应版本,它与 安装pytorch版本选择 相类似(如果不太清楚版本选择,可以看本博客 《为模型训练做准备:CUDA环境配置流程》 文章有相应介绍)。

3. 放置在项目文件夹目录下,修改 requirements.txt ,将原来的 flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl 替换为你下载的版本:

4. 安装:
pip install -r requirements.txt
二、准备数据集
从网络上寻找熊猫图片,并进行打标(如果不太清楚如何打标,可以看Python卡皮巴拉公众号 《目标检测打标神器MakeSense.ai:零门槛、免费、高效的AI数据标注工具》 文章有相应介绍)。
将数据集以类似以下文件结构配置:

主要结构如下:
- 主文件夹
- images
- test
- train
- val
- labels
- test
- train
- val
images 放置图片,labels 放置打标数据。
-
test:测试数据
-
train:训练数据
-
val:验证数据
接着将准备好的数据集放入 datasets 文件夹即可:

三、开始训练
创建一个 train.py 文件:
# -*- coding: utf-8 -*-
from ultralytics import YOLO
if __name__ == '__main__':
# 使用YOLOv12
model = YOLO(r'ultralytics\cfg\models\v12\yolov12.yaml')
# 预训练模型
model.load(r'yolov12n.pt')
model.train(
data=r'config.yaml', # 数据集配置
imgsz=640, # 输入图像尺寸
epochs=100, # 训练轮次
batch=16, # 每批数量
workers=10, # 线程数量
scale=0.5, # 图像缩放因子
mosaic=1.0, # Mosaic 数据增强,1.0完全启用
mixup=0.0, # MixUp 数据增强比例,0.0不启用
copy_paste=0.1, # Copy-Paste 数据增强的概率
device='gpu', # 训练设备 cpu gpu
project=r'train', # 项目保存文件夹
name='n', # 训练结果文件夹
)
预训练模型
这里使用了预训练模型,需要在 YOLOv12的github 上下载:
预训练模型列表
config.yaml配置文件
train: pandas/images/train
val: pandas/images/val
test: pandas/images/test
nc: 1 # 类别有几个就填几个
names: ['熊猫'] # 每个类别的名称
训练结束
训练结束后你将获得如下的文件内容:
训练成果
四、预测图片
创建一个 predict.py ,写入代码:
# -*- coding: utf-8 -*-
from ultralytics import YOLO
import cv2
if __name__ == '__main__':
model = YOLO(r'train\n4\weights\last.pt')
results = model.predict(r'test.jpeg')
annotated_image = results[0].plot()
image = annotated_image[:, :, ::-1]
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
rate = image.shape[0] / image.shape[1]
image = cv2.resize(image, (int(500), int(500 * rate)))
cv2.imshow('Predictions', image)
cv2.waitKey(0)
cv2.destroyAllWindows()


五、结尾
恭喜你已经学会了如何使用 YOLOv12 来检测可爱的大熊猫。
如果你喜欢这篇文章就给我一个点赞,那将是我的创作动力!