掘金 人工智能 05月22日 17:48
开启 AI 视觉之旅:用 Python 和 YOLO v8 打造专属目标检测模型
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文引导读者使用Python和YOLO v8构建自定义的AI目标检测模型。文章首先介绍了YOLO的原理和Ultralytics库,然后详细阐述了环境搭建、预训练模型的加载、数据集的准备以及模型的训练和验证过程。通过提供代码示例和实用技巧,帮助读者快速上手,实现对图像和视频中目标的精准识别。最后,强调了训练模型的重要性,以及如何评估模型性能,为读者开启AI视觉探索之旅提供了实用的指导。

🚀 YOLO 是一种基于 CNN 的目标检测算法,由 Ultralytics 公司开发和维护,YOLO v8 是其最新稳定版本。它能够快速、准确地识别图像或视频中的多个目标。

💻 搭建开发环境是使用 YOLO v8 的第一步,需要安装 Python 解释器、PyCharm 集成开发环境,以及 Ultralytics 库。通过 pip 命令即可轻松安装 Ultralytics 库。

🧠 加载预训练模型是快速实现目标检测的关键。YOLO v8 提供了预训练模型,可以直接加载并在此基础上进行微调或训练,节省时间和计算资源。如果下载失败,可以手动下载模型文件或更换 pip 源。

🖼️ 训练模型需要准备训练图片和标注,创建数据集结构文件,并使用 YOLO 目标检测标注工具进行标注。训练完成后,使用 best.pt 文件进行验证,评估模型性能。

✅ 验证自己训练的模型,通过运行代码,观察模型对目标的识别效果。 best.pt 是训练过程中在验证集上表现「最佳」的模型权重文件,通常作为最终使用的模型。

开启 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

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

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

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

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

from ultralytics import YOLO

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

官网下载地址在这里:docs.ultralytics.com/zh/models/y…

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

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

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

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

图片验证

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

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

四、训练图片和标注

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

准备数据集结构文件

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

    images 下的 trainval 放入训练图片(png、jpg)。labels 下的 trainval 放入图片标注(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("训练完成")
    path: D:\PyProjects\yolo\xl # 预训练模型路径    train: images/train # 训练集    val: images/val # 验证集    nc: 1 # 类别数    names: ['car-number'] # 类别名

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

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

1. best.pt(最佳模型)

2. last.pt(最后模型)

总结

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

六、验证自己训练的模型

    # 加载预训练模型    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)

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

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

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

YOLO v8 目标检测 Python AI视觉
相关文章