深度学习-yolo实战项目【分类、目标检测、实例分割】?如何创建自己的数据集?如何对数据进行标注?没有GPU怎么办呢?

一、本地环境配置

(1)本地创建虚拟环境

(2)下载项目到本地

(3)安装依赖

(4)测试一下

二、电脑没有GPU训练不了怎么办?【不用本地环境】

(1)创建服务器实例

(2)上传项目

(3)创建环境

(4)测试一下

三、分类任务

(1)模型训练

(2)模型预测

(3)使用自己创建的数据集做训练

创建数据集

模型训练

模型预测

四、目标检测任务

(1)如何使用/预测?

(2)如何创建用于检测任务的数据集?

(3)模型训练

(4)使用模型进行检测

五、实例分割任务

(1)创建数据集

(2)模型训练(这里先使用项目自带的coco128数据集)

(3)模型预测

六、总结


一、本地环境配置

(1)本地创建虚拟环境

参考教程:https://blog.csdn.net/qq_73704268/article/details/145854625

创建一个虚拟环境用于本yolov5的项目,这里我已经创建好啦

(2)下载项目到本地

项目地址:

code: GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

使用git命令或者直接下载压缩包将项目clone到本地

(3)安装依赖

在pycharm中打开项目,选择yolov5的环境,打开pycharm终端,输入命令pip install -r requirements.txt

Python项目依赖管理:requirements.txt与environment.yml_environment.yml和requirements.txt-CSDN博客

这样就不用一个个安装库了!!

这里需要注意 torch

因为是pytorch框架,这里要求torch版本大于1.8.0,要不然不好用;

如果电脑带有GPU,会自动下载带有CUDA的torch,没有GPU会下载CPU版本的torch;

在使用模型进行检测的时候是没有任何区别的,但是CPU版本的torch是训练不了模型的(太慢了!!!!)

(4)测试一下

以检测任务为例子,找到detect.py

运行这个代码,用已经训练好的模型对data/images下的图片进行检测,可以直接在pycharm运行,运行之后检测结果存储在了

点进去看一下:

二、电脑没有GPU训练不了怎么办?【不用本地环境】

(1)创建服务器实例

这里给大家推荐Autodl服务器租用平台,可以先看这篇文章了解一下 ,讲的很详细AutoDL使用教程:1)创建实例 2)配置环境+上传数据 3)PyCharm2021.3专业版下载安装与远程连接完整步骤 4)实时查看tensorboard曲线情况-CSDN博客

这里是我创建的实例:

打开

打开终端

(2)上传项目

我这里已经上传好了,可以直接把clone下的项目压缩包拖到左侧目录区域,使用命令

unzip yolov5-master.zip 就可以解压项目

(3)创建环境

默认是在base环境中的,但是建议大家再创建一个虚拟环境,因为base环境有时候我们会权限不够【具体步骤和之前在本地的步骤是一样的】

激活你的环境 安装好依赖,就可以在yolov5的环境下运行项目了

(4)测试一下

学习一个终端命令: python detect.py --source 11.png 【python + 要运行的py文件 --source +输入图像路径】

运行结果:

根据输出结果知道检测的结果存在了 runs/detect/exps里面,打开

三、分类任务

(1)模型训练

建议大家租用GPU训练比较好【花了钱的东西就是好用的哈哈,我的电脑也有GPU但是训练起来还是不如租来的快】

输入命令:python classify/train.py --model yolov5-cls.pt**--data** cifar10 --epochs 5

  • --model yolov5-cls.pt:指定模型文件。yolov5-cls.pt 是 YOLOv5 的分类模型权重文件,用于初始化训练。如果你是第一次训练,可能需要下载预训练权重文件。

  • --data cifar10:指定数据集。cifar10 是一个常用的小型图像分类数据集,包含 10 个类别,每个类别有 6000 张 32×32 的彩色图像。

  • --epochs 5:指定训练的轮数(epoch)。这里设置为 5 轮,表示模型会在整个数据集上训练 5 次。

输出结果如下:

可以看到5个epoch分别的输出结果,第二列是训练需要的GPU大小【这里只用了1.7G的】,第三列是在训练集上的损失【逐渐减小】,第四列是在测试集上的损失【逐渐减小】,第五列是精度大小【逐渐上升】


这里显示了模型训练的结果 保存到了那个文件夹下:


这里显示了模型训练的参数保存到了哪个文件目录下:

best.pt:表示训练的5轮中效果最好的那一轮的参数

last.pt:表示训练5轮中的最后一轮的参数是什么

【注意:best.pt不一定等于last.pt,因为模型可能过拟合现象,但是我们训练的这次是相等的,因为明显5轮训练不够,所有一般我们都直接使用best.pt里面的参数】

(2)模型预测

使用我们刚刚训练好的模型进行对一张图片的预测,

直接使用命令:python classify/predict.py --source 22.jpg 用的是yolo自己训练好的模型参数,而不是我们自己训练的参数。

所以我们应该指定模型参数用的是哪个,找到刚刚运行结果输出的模型参数保存路径:pythonclassify/predict.py--weightsruns/train-cls/exp8/weights/best.pt--source****22.jpg

结果:

为什么没有person?y因为训练的轮数太少了,并且我们的5轮中不一定有人的图像标签,模型还不知道人长什么样子

(3)使用自己创建的数据集做训练

创建数据集

首先你要了解yolov5自己训练使用的数据集目录结构长什么样子,以cifar10为例

具体图像的命名规则:


了解这些,我们来创建一个自己的数据集,以猫狗分类为例子;

①在datasets文件夹下创建一个文件夹,命名为jundogcat:

②在jundogcat文件夹下创建一个train文件夹和一个test文件夹

③在test文件夹下建立两个文件夹: cat和dog【图像标签名称】

④按照命名规则放入具体的图像:

trian和test的一样,通常train里面的图像要比test的要多

这样我们就创建了一个自己的数据集,用于猫狗分类!!!将数据集压缩上传到服务器上解压就可以使用啦


模型训练

接下来使用我们自己创建的数据集对模型进行训练

输入命令python classify/train.py --model yolov5-cls.pt**--data ../datasets/jundogcat** --epochs 5

【这里data的目录前面有两个. 是因为datasets这个文件夹和yolov5-master项目是平级的,所以我们要先退出yolov5-master才可以进入datasets】

记住模型权重路径

模型预测

接下来使用我们刚刚训练好的模型进行预测,使用这个图片

输入命令: pythonclassify/predict.py--weightsruns/train-cls/exp9/weights/best.pt--source****data/images/dogclass.jpg

打开这个路径可以查看预测结果:

0.88 dog 0.12 cat,模型成功预测!!

四、目标检测任务

(1)如何使用/预测?

运行命令 :python detect.py --source data/images/bus.jpg

在runs/detect/exp4 查看检测结果:

可以看到红线框出了bus这辆车

代码如何预测边界框的呢?

  • (x1, y1): 左上角坐标
  • (x2, y2): 右下角坐标

(2)如何创建用于检测任务的数据集?


yolo目标检测数据集标注-CSDN博客

安装上面的博客教程来就好,将创建的数据集改个名字(jundogcatyolo)拷贝到服务器:

记得把这个data.yaml文件拷贝到 yolo-master项目文件的data 目录下:

仿照这里其他原有的任意一个数据集的yaml修改data.yaml

原来的data.yaml:

参考coco128.yaml:

修改后的yaml文件:

至此就可以使用数据集进行训练啦

(3)模型训练

确保路径在yolo-master下

运行命令 :python train.py --weightsyolov5s.pt**--img640--batch**16 --data ./data/data.yaml --epoch5

  • --weights yolov5s.pt:使用预训练的 YOLOv5 小型模型(yolov5s.pt)作为权重进行训练。
  • --img 640:将输入图像的尺寸设置为 640x640。【因为我们数据集都是640*640的】
  • --batch 16:设置每个批次的图像数量为 16。
  • --data ./data/data.yaml:指定数据集的 .yaml 配置文件,data.yaml 文件中应该定义数据集的路径以及类别。
  • --epoch 5:训练 5 个周期(epoch)。

P为精度值,R为召回率,可以看到对cat的切分比较好(P=0.813)

打开 runs/train/exp3看看

模型参数也保存在了 runs/train/exp3

(4)使用模型进行检测

刚刚训练的模型参数保存在了 runs/train/exp3

对这张图片进行检测

所以运行命令:

python detect.py --source ./data/images/catdog-d.jpg --weights runs/train/exp3/weights/best.pt

进入runs/detect/exp5查看检测结果

!!!可以看到检测结果并不是很好,很正常,毕竟我们的数据集大小了,并且只训练了5个epoch

五、实例分割任务

(1)创建数据集

使用自己的数据集的时候也需要对图像进行标注,这里 看博客

yolo目标检测、实例分割数据集标注-CSDN博客

(2)模型训练(这里先使用项目自带的coco128数据集)

输入命令:

python segment/train.py --weightsyolov5s-seg.pt --data coco128-seg.yaml --epochs5

第二列可以看到class为128【因为coco128有128个类别】 ,模型参数保存到了runs/train-seg/exp5中

(3)模型预测

输入命令: pythonsegment/predict.py--img320--weightsruns/train-seg/exp5/weights/best.pt--source****data/images/catdog-d.jpg

分割没有问题,但是把猫也识别成狗了........


六、总结

至此,通过这个项目,关于计算机视觉的分类、目标检测、实例分割三大任务的数据的创建与标注、模型的训练、使用模型进行预测已经掌握啦,还有如何在AutoDL上使用服务器,运行代码也掌握的差不多了呢!加油哦ヾ(◍°∇°◍)ノ゙

相关推荐
仙人掌_lz2 小时前
RAG(Retrieval-Augmented Generation)基建之PDF解析的“魔法”与“陷阱”
人工智能·深度学习·ai·pdf·rag
小白的高手之路2 小时前
Pytorch中的数据加载
开发语言·人工智能·pytorch·python·深度学习·机器学习
Fansv5872 小时前
深度学习框架PyTorch——从入门到精通(6.2)自动微分机制
人工智能·pytorch·经验分享·python·深度学习·机器学习
墨绿色的摆渡人2 小时前
用 pytorch 从零开始创建大语言模型(六):对分类进行微调
人工智能·pytorch·python·深度学习·语言模型·embedding
liruiqiang053 小时前
卷积神经网络 - 梯度和反向传播算法
人工智能·深度学习·神经网络·算法·机器学习·cnn
odoo中国5 小时前
深度学习 Deep Learning 第7章 深度学习的正则化
人工智能·深度学习·正则化
沉默的舞台剧6 小时前
【深度学习入门_机器学习理论】梯度提升决策树(GBDT)
深度学习·决策树·机器学习
cainiao0806056 小时前
深度学习框架对比评测:TensorFlow、PyTorch、PaddlePaddle与MXNet的技术演进与应用实践
pytorch·深度学习·tensorflow
Kriol7 小时前
深度学习复习笔记(8)特征提取与无监督学习
笔记·深度学习·学习
tRNA做科研8 小时前
Pytorch深度学习教程_9_nn模块构建神经网络
pytorch·深度学习·神经网络