开启 AI 视觉之旅:用 Python 和 YOLO v8 打造专属目标检测模型

在如今科技飞速发展的时代,AI 视觉就像一颗闪耀的星星,照亮了无数领域。而在 AI 视觉的世界里,目标检测无疑是那最为核心的技术之一。想象一下,有这样一种神奇的能力,能够让机器快速而精准地识别出图像或视频中的各种目标,这该多么令人兴奋!今天,我们用 Python 结合 Ultralytics 库中的 YOLO v8,去训练和开发属于我们自己的 AI 视觉目标检测模型,实现动态目标检测的梦想!无论是在现实场景中,还是面对网络上的各种需求,掌握了这一技能,就仿佛拥有了一把万能钥匙,能轻松应对各种识别任务。

一、揭开 YOLO 的神秘面纱

你是否好奇,YOLO 到底是什么呢?YOLO,全称 You Only Look Once,它就像是一位超级侦探,基于 CNN(卷积神经网络)算法,在 AI 视觉模型开发领域占据着重要的地位。目前,YOLO 由 Ultralytics 公司精心开发并维护着,而 YOLO v8 版本更是其官方发布的最新稳定版本,是开源库中强大的算法工具。有了 YOLO,模型就像拥有了一双火眼金睛,能够对输入的图像或视频进行快速分析,一次性预测多个目标的类别和位置,大大提升了检测效率。

官方网站就像是通往这个神奇世界的大门: Ultralytics.com ,快去探索一番吧!

二、搭建属于我们的 “战场”

在开启 YOLO v8 的学习之旅前,我们得先为自己准备一个合适的 “战场”,也就是搭建好运行环境。这就像是在打仗前,要把武器装备都准备齐全一样。

  1. 安装 Python 解释器和 PyCharm 首先,我们要下载并安装适合自己操作系统的 Python 版本。这里建议选择较新版本,因为它们就像是升级版的武器,能带来更好的兼容性和性能。接着,我们要安装 PyCharm,它可是一款功能强大的 Python 集成开发环境(IDE),就像是一位贴心的助手,能为我们的代码编写、调试和项目管理提供诸多便利。
  2. 安装三方库:Ultralytics 打开 PyCharm 的终端或命令行界面,输入下面这个神奇的命令,就能安装 Ultralytics 库啦:

pip install ultralytics 1 当安装完成的那一刻,就意味着我们已经做好了初步的准备,可以开始使用 YOLO v8 了,是不是有点小激动呢!

三、站在 “巨人” 的肩膀上 —— 加载预训练模型

预训练模型可是 YOLO v8 快速实现目标检测的关键所在,它就像是一位经验丰富的导师,已经在大量数据上进行了训练,具备了一定的目标识别能力。我们可以直接加载这些模型,然后在此基础上进行微调或训练,这样就能节省大量的时间和计算资源。

在 Python 代码中,通过下面的方式就能导入 YOLO:

from ultralytics import YOLO 1 不过,有时候会遇到一些小状况。当 Ultralytics 库检测到本地没有yolov8n.pt预训练模型时,它会自动从官方源下载完整的模型文件。但由于网络等原因,自动下载可能会失败。别担心,这时候我们可以手动从YOLOv8  官方发布页下载yolov8n.pt,并将其放置到我们的项目目录下,这样就能顺利使用预训练模型啦!

官网下载地址在这里: https://docs.ultralytics.com/zh/models/yolov8/#performance-metrics

小贴士:如果下载速度较慢,就像是开车遇到了堵车一样,我们可以尝试更换 pip 源,使用国内镜像源,如阿里云、清华大学等镜像源,这样就能显著提升下载速度,让我们的旅程更加顺畅。

初次使用,检测是否正常加载

加载预训练模型
from ultralytics import YOLO
加载预训练模型
model = YOLO("yolov8n.pt")  # 使用YOLOv8 Nano版本作为起点
查看版本信息
print(model.info())
print("加载完成")
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

当看到 “加载完成” 这几个字的时候,是不是感觉自己离成功又近了一步呢!

图片验证

加载预训练模型
from ultralytics import YOLO
加载预训练模型
model = YOLO("yolov8n.pt")  # 使用YOLOv8 Nano版本作为起点
model('./img/r.png', save=True,show=True)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

开启 AI 视觉之旅:用 Python 和 YOLO v8 打造专属目标检测模型_yolo

开启 AI 视觉之旅:用 Python 和 YOLO v8 打造专属目标检测模型_加载_02

这里我们选中 ‘./img/r.png’ 图片做为检测目标,检测后的图将保存到 runs目录下,还会标记出检测框。save=True 表示保存检测结果,show=True 表示显示检测结果。当看到图片上那些精准的检测框时,那种成就感油然而生。

四、训练图片和标注 接下来,我们要为训练模型准备好 “弹药”,也就是训练图片和标注。

准备数据集结构文件

开启 AI 视觉之旅:用 Python 和 YOLO v8 打造专属目标检测模型_v8_03

根目录创建 1 个文件夹(可自定义名称),如:xl,下面再创建 2 个文件夹(images 和 labels),images 和 labels 下再分别创建 2 个文件夹(train 和 val)。

images 下的 train 和 val 放入训练图片(png、jpg)。 labels 下的 train 和 val 放入图片标注(txt)。 然后,我们要准备一些照片素材,通过 YOLO 目标检测标注工具进行标注。这里可以使用作者写的标注工具《YOLO 目标检测标注工具》。当我们认真地为每一张图片进行标注时,就像是在为模型传递知识,那种期待模型成长的心情难以言表。

五、开始训练模型

# 加载预训练模型
from ultralytics import YOLO

# 加载预训练模型
model = YOLO("yolov8n.pt")  # 使用YOLOv8 Nano版本作为起点

# 训练模型
results = model.train(data="data.yaml",  # 使用自定义数据集进行训练
          epochs=500,  # 训练500个周期
          imgsz=640,  # 调整图像大小
          batch=16,  # 减少批次大小
          device='cpu',  #  使用CPU进行训练
           )  # 训练30个周期,图像大小为640x640

print("训练完成")
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
path: D:\PyProjects\yolo\xl # 预训练模型路径
train: images/train # 训练集
val: images/val # 验证集
nc: 1 # 类别数
names: ['car-number'] # 类别名
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

开启 AI 视觉之旅:用 Python 和 YOLO v8 打造专属目标检测模型_yolo_04

开启 AI 视觉之旅:用 Python 和 YOLO v8 打造专属目标检测模型_加载_05

这里为了截图,只开了 30 个周期,但建议大家在实际操作中,训练更多的周期次数,多找一些图片内容进行标注,这样在检测的时候就能更接近预期效果。当看到训练过程中那些不断变化的数据,就像是在见证一个生命的成长,充满了希望。

训练完成的结果会显示在runs\detect\train\weights下,我们要找到best.pt来测试一下验证结果。在 YOLO(如 YOLOv8)训练过程中,  best.pt last.pt 是两种自动生成的模型权重文件,它们有着不同的特点和用途。

  1.  best.pt(最佳模型) 定义 :它就像是班级里的学霸,是训练过程中在验证集上表现「最佳」的模型权重文件(通常以验证指标如 mAP(平均精度均值)或损失值为判断标准)。 特点 :保存的是训练过程中验证指标最优时的模型状态(例如某一 epoch 验证损失最低或 mAP 最高时的权重)。 用途 :通常作为最终使用的模型(如推理、部署),因为它代表了训练过程中模型的最佳性能。
  2.  last.pt(最后模型) 定义 :它就像是记录成长过程的日记,是训练结束时最后一个 epoch 保存的模型权重文件。

特点 :保存的是训练终止时的模型状态(可能不是验证指标最优的,但包含完整的训练状态,如优化器参数、当前 epoch 等)。

用途 :主要用于恢复训练(如训练中断后继续从该状态续训),或用于观察模型最终的收敛情况(可能不如  best.pt 效果好)。

总结:

推理 / 部署时优先使用  best.pt (性能更优);

恢复训练或调试时使用  last.pt (保留最新训练状态)。

我们当前代码中加载  best.pt 是合理的,符合「使用最佳模型推理」的常规场景。

开启 AI 视觉之旅:用 Python 和 YOLO v8 打造专属目标检测模型_加载_06

开启 AI 视觉之旅:用 Python 和 YOLO v8 打造专属目标检测模型_v8_07

六、验证自己训练的模型

# 加载预训练模型
from ultralytics import YOLO
# 加载预训练模型
# model = YOLO(r'D:\PyProjects\yolo\runs\detect\train\weights\best.pt')  # 使用自己训练的模型
model = YOLO("best.pt")  # 使用自己训练的模型

# model('./img/1.png', save=True)
# model('./img/2.png', save=True)
# model('./img/3.png', save=True)
# model('./img/4.png', save=True)
# model('./img/5.png', save=True)
# model('./img/6.png', save=True)
# model('./img/7.png', save=True)
# model('./img/8.png', save=True)
# model('./img/9.png', save=True)
# model('./img/2.mp4', save=True,show=True)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

当我们运行这些代码,看到自己训练的模型能够准确地识别出目标时,那种喜悦和成就感是无法用言语来形容的。这就像是我们亲手种下的种子,经过精心的培育,终于开出了美丽的花朵。现在,就赶紧动手,开启属于你自己的 AI 视觉之旅吧!

示例源码:关注公众号“Harry技术”,回复 YOLO 获取源码地址。