• 正文
  • 相关推荐
申请入驻 产业图谱

Windows + PyTorch + YOLOv8:小白也能玩转AI目标检测

05/29 20:52
1.1万
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

YOLO模型YOLO(You Only Look Once)是一种高效的目标检测模型,它将图像划分为网格,并在每个网格中同时预测边界框和类别,从而实现端到端的实时目标检测。与传统方法相比,YOLO具有速度快、精度高、适用于实时应用的优点,广泛应用于视频监控、自动驾驶等领域。

博主最近也在学习神经网络相关知识,本期记录一下Windows系统训练和部署YOLO神经网络模型的过程。

系统环境:Python 3.9、PyCharm 2022

1、环境安装

Python 3.9和PyCharm的环境安装不做过多的描写,我们主要介绍搭建一个Pytorch和YOLO环境搭建。

(1-1)首先搭建一个Pycharm的基本工程,Python释器版本选择3.9版本。

图2 PyCharm默认工程图

(1-2)打开终端我们安装需要对应PyTorch和YOLO的库文件。

图3 ? 终端使用图

( GPU版本)

PyTorch的模型训练可以选择CPU训练或者GPU加速,GPU加速的情况下训练速度会比CPU快很多很多很多!!!因此我们需要查询和自己GPU适配的PyTorch版本(本文内容适用于N卡)。

(1-3可选)查询CUDA版本

?nvidia-smi

查询CUDA 版本

图4 ? CUDA版本查看

可以看到我的CUDA版本为12.6。

(1-4)接下来根据CUDA版本我们使用pip命令来安装PyTorch,大家可以根据官网推荐的版本来安装。

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

安装cuda12.1版本的pytorch (12.6兼容12.1)

图5 ? ?Pytorch安装

库文件比较大,大概有2G+,如果遇到网络问题可以多安装几次。

(1-5)查询pytorch是否安装成功

python?-c?"import torch; print(torch.cuda.is_available())"

查询pytorch并且是否支持GPU

图6 ? ?pytorch验证

返回True即可代表我们可以正常使用GPU

(1-6)安装YOLO

pip?install ultralytics

YOLO库代码安装

图7 ? ?Yolo验证

? ? 安装成功后输入yolo会返回很多内容,接下来实现模型训练。

2、训练集准备

图8 ? ?文件存放架构图

(2-1)按照这个路径我们存放训练集和验证集,images和labels分别存储图像数据和标签。train文件夹存放用于训练的数据,val存放用于验证的数据。

labels是YOLO格式的txt文件如图所示:

图9 ? ?Yolo标注格式

? ? 它表达了我们要识别的内容在图像中的位置信息,可以使用标注工具来制作(可以查询Labelimg的教学)

图10 Labelimg使用实拍

? ? (2-2)制作配置文件dataset.yaml(文件名不必相同)

train: ./data/images/train?#训练集地址val: ./data/images/val ? ?#验证集地址nc: 4?# 类别数量names: ['Chongdianbao',?'Red Tea',?'Pen',?'Upan'] ?# 类别名称

dataset.yaml配置文件用于等会模型训练

图11 ? ?yaml配置文件

? ? (2-3)模型训练代码

import?torchfrom?ultralytics?import?YOLOimport?multiprocessing
def?run():? ? model = YOLO('yolov8n.pt') ?# 直接使用预训练模型微调? ? model.train(? ? ? ? data =?'./dataset.yaml',#模型配置文件? ? ? ? epochs =?800,#总训练轮数800轮? ? ? ? imgsz = ?480,#图片缩放为480*480? ? ? ? batch =?20, ?#一批20张? ? ? ? name =?'yolov8_custom',#模型名字? ? ? ? device =?0, ?#使用GPU进行计算? ? ? ? val =?True? ?#训练过程中执行验证 ?? ? )? ??# 评估模型? ? results = model.val()? ??print(results)

if?__name__ ==?'__main__':? ? multiprocessing.freeze_support()? ? run()

模型训练Demo

图12 ? ?训练时命令行截图

? ? 接下来命令行会实时显示训练过程,等待训练结束后,可以在runs文件夹中找到我们的模型。

图13 ? ?结果图

图14 ? ?模型结果

? ? weights中存放着模型,其中best.pt为最优模型,last.pt为上一次模型。

(2-4)模型使用

from ultralytics import YOLOimport cv2# 1. 加载训练好的模型(可以是 yolov8n.pt 或你的 best.pt)model = YOLO("best.pt")?# 2. 读取一张图片img = cv2.imread("test.jpg")# 3. 进行推理(返回结果列表)results = model.predict(source=img, save=False)# 4. 将检测框画在图上并显示annotated = results[0].plot()cv2.imshow("YOLO Detection", annotated)cv2.waitKey(0)cv2.destroyAllWindows()

模型使用Demo

3、测试效果

标注过程是真的痛苦啊,感觉像是电子打螺丝

相关推荐