Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型

简介: 本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。

Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型

在 AI 视觉领域,目标检测无疑是核心技术之一。而 YOLO 系列算法凭借其高效、精准的特点,一直备受青睐。今天,就让我们深入学习如何使用 Python 结合 Ultralytics 库中的 YOLO v8,训练和开发属于自己的 AI 视觉模型,实现动态目标检测!无论应用于现实场景,还是满足网络需求,掌握这一技能都能让你轻松应对各种识别任务。

一、什么是 YOLO?

YOLO,全称 You Only Look Once,是基于 CNN(卷积神经网络)的算法,在 AI 视觉模型开发领域占据着重要地位。目前,YOLO 由 Ultralytics 公司开发并维护,而 YOLO v8 版本是 Ultralytics 官方发布的最新稳定版本,也是其开源库中强大的算法工具。通过 YOLO,模型能够对输入的图像或视频进行快速分析,一次性预测多个目标的类别和位置,极大地提升了检测效率。

官方网站Ultralytics.com

二、环境搭建:准备好你的 “战场”

在开启 YOLO v8 的学习之旅前,我们需要先搭建好运行环境。具体步骤如下:

1. 安装 Python 解释器和 PyCharm

  • 下载并安装适合你操作系统的 Python 版本,建议选择较新版本,以获取更好的兼容性和性能。
  • 安装 PyCharm,它是一款功能强大的 Python 集成开发环境(IDE),能为我们的代码编写、调试和项目管理提供诸多便利。

2. 安装三方库:Ultralytics

打开 PyCharm 的终端或命令行界面,输入以下命令安装 Ultralytics 库:

pip install ultralytics

安装完成后,我们就可以开始使用 YOLO v8 了!

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

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

1. 导入 YOLO

在 Python 代码中,通过以下方式导入 YOLO:

from ultralytics import YOLO

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

官网下载https://docs.ultralytics.com/zh/models/yolov8/#performance-metrics

小贴士:如果下载速度较慢,可以尝试更换 pip 源,使用国内镜像源,如阿里云、清华大学等镜像源,能显著提升下载速度。

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

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

3. 图片验证

# 加载预训练模型
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. 准备数据集结构文件

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

  • images 下的 trainval 放入训练图片(png、jpg)。
  • labels 下的 trainval 放入图片标注(txt)。

2. 标注照片素材

准备一些照片素材,通过 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进行训练
                      )  
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.ptlast.pt 是两种自动生成的模型权重文件,主要区别如下:

1. best.pt(最佳模型)

  • 定义:训练过程中在验证集上表现「最佳」的模型权重文件(通常以验证指标如 mAP(平均精度均值)或损失值为判断标准)。
  • 特点:保存的是训练过程中验证指标最优时的模型状态(例如某一 epoch 验证损失最低或 mAP 最高时的权重)。
  • 用途:通常作为最终使用的模型(如推理、部署),因为它代表了训练过程中模型的最佳性能。

2. last.pt(最后模型)

  • 定义:训练结束时最后一个 epoch 保存的模型权重文件。
  • 特点:保存的是训练终止时的模型状态(可能不是验证指标最优的,但包含完整的训练状态,如优化器参数、当前 epoch 等)。
  • 用途:主要用于恢复训练(如训练中断后继续从该状态续训),或用于观察模型最终的收敛情况(可能不如 best.pt 效果好)。

总结

  • 推理/部署时优先使用 best.pt(性能更优);
  • 恢复训练或调试时使用 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)

通过以上步骤,你就可以使用 Python 和 YOLO v8 训练出属于自己的 AI 视觉目标检测模型啦!赶紧动手试试吧!


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

目录
相关文章
|
14天前
|
人工智能 运维 安全
基于合合信息开源智能终端工具—Chaterm的实战指南【当运维遇上AI,一场效率革命正在发生】
在云计算和多平台运维日益复杂的今天,传统命令行工具正面临前所未有的挑战。工程师不仅要记忆成百上千条操作命令,还需在不同平台之间切换终端、脚本、权限和语法,操作效率与安全性常常难以兼顾。尤其在多云环境、远程办公、跨部门协作频繁的背景下,这些“低效、碎片化、易出错”的传统运维方式,已经严重阻碍了 IT 团队的创新能力和响应速度。 而就在这时,一款由合合信息推出的新型智能终端工具——Chaterm,正在悄然颠覆这一现状。它不仅是一款跨平台终端工具,更是业内率先引入 AI Agent 能力 的“会思考”的云资源管理助手。
58 6
|
2月前
|
人工智能 Java API
Spring AI 实战|Spring AI入门之DeepSeek调用
本文介绍了Spring AI框架如何帮助Java开发者轻松集成和使用大模型API。文章从Spring AI的初探开始,探讨了其核心能力及应用场景,包括手动与自动发起请求、流式响应实现打字机效果,以及兼容不同AI服务(如DeepSeek、通义千问)的方法。同时,还详细讲解了如何在生产环境中添加监控以优化性能和成本管理。通过Spring AI,开发者可以简化大模型调用流程,降低复杂度,为企业智能应用开发提供强大支持。最后,文章展望了Spring AI在未来AI时代的重要作用,鼓励开发者积极拥抱这一技术变革。
718 71
Spring AI 实战|Spring AI入门之DeepSeek调用
|
22天前
|
机器学习/深度学习 人工智能 API
基于昇腾适配Meta AI在Science正刊发表的蛋白质结构预测模型ESMFold
ESMFold是由Meta AI团队开发的一种基于深度学习的高效蛋白质结构预测模型,其核心目标是利用大规模蛋白质语言模型(ESM)直接从氨基酸序列快速推断蛋白质的三维结构。ESMFold通过预训练的语言模型捕捉序列中的进化与结构关联性,结合几何优化模块生成高精度原子坐标,显著降低了传统方法对多重序列比对(MSA)和模板依赖的计算成本。该模型在蛋白质从头预测(de novo prediction)、功能位点解析、突变效应模拟等领域具有重要价值,以高效的推理性能,推动结构预测技术的普惠化应用。
|
1月前
|
机器学习/深度学习 人工智能 PyTorch
200行python代码实现从Bigram模型到LLM
本文从零基础出发,逐步实现了一个类似GPT的Transformer模型。首先通过Bigram模型生成诗词,接着加入Positional Encoding实现位置信息编码,再引入Single Head Self-Attention机制计算token间的关系,并扩展到Multi-Head Self-Attention以增强表现力。随后添加FeedForward、Block结构、残差连接(Residual Connection)、投影(Projection)、层归一化(Layer Normalization)及Dropout等组件,最终调整超参数完成一个6层、6头、384维度的“0.0155B”模型
113 11
200行python代码实现从Bigram模型到LLM
|
16天前
|
人工智能 缓存 监控
构建企业级AI智能体(Spring AI Alibaba + JManus实战)
本内容深入探讨了基于Spring AI Alibaba 1.2 + JManus 0.9 + DeepSeek-V3等技术栈构建的电商客服工单智能处理系统。通过分析传统AI应用的三重困境,介绍了JManus智能体架构的核心突破,包括动态任务分解、状态持久化和服务热插拔等优势。同时详细展示了企业级环境配置、智能体行为设计及多智能体协作全流程,并提供了性能优化、生产部署与监控方案。最后,结合压力测试结果和调优策略,总结了企业级智能体设计原则与未来演进方向,为实现从“AI试验”到“AI生产”的转变提供了实践指导。
269 13
|
1月前
|
人工智能 程序员 应用服务中间件
何谓AI编程建官网实战【01】AI编程企业官网建设实践-以优雅草星云智控为例-优雅草卓伊凡
何谓AI编程建官网实战【01】AI编程企业官网建设实践-以优雅草星云智控为例-优雅草卓伊凡
41 1
何谓AI编程建官网实战【01】AI编程企业官网建设实践-以优雅草星云智控为例-优雅草卓伊凡
|
14天前
|
数据采集 存储 人工智能
智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答
智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答
|
2月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
155 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
28天前
|
人工智能 前端开发 搜索推荐
LangGraph实战教程:构建会思考、能记忆、可人工干预的多智能体AI系统
本文介绍了使用LangGraph和LangSmith构建企业级多智能体AI系统的完整流程。从简单的ReAct智能体开始,逐步扩展至包含身份验证、人工干预、长期内存管理和性能评估的复杂架构。文章详细讲解了状态管理、工具集成、条件流程控制等关键技术,并对比了监督者架构与群体架构的优劣。通过系统化的方法,展示了如何构建可靠、可扩展的AI系统,为现代AI应用开发提供了坚实基础。*作者:Fareed Khan*
94 0
LangGraph实战教程:构建会思考、能记忆、可人工干预的多智能体AI系统
|
2月前
|
人工智能 PyTorch TensorFlow
AI界的"翻译官":ONNX如何让各框架模型和谐共处
还在为不同框架间的模型转换头疼?ONNX让你在PyTorch训练的模型可以无缝在TensorFlow部署,甚至能让模型在手机上飞速运行。本文带你了解这个AI领域的'瑞士军刀',轻松实现跨平台高性能模型部署。
166 12

热门文章

最新文章

推荐镜像

更多