🏋️模型训练

通过深度学习网络可以从大量数据中学习数据特征,从而应用于各种检测,分割任务。想要使用深度学习解决具体问题,必须了解如何通过已知数据进行网络模型的训练。因此我们首先讲解了如何训练深度学习神经网络。本节的内容如下:

  • 在本地进行模型训练

  • 在云端进行模型训练

  • 制作自己的训练集

在本地进行模型训练

本小节介绍如何在个人PC上进行模型训练,您需要拥有以下硬件:

一台带有英伟达显卡的笔记本或台式机,安装Windows系统(如果您的电脑并不含有英伟达显卡,那么我们建议您使用云端进行模型训练。)

请安装Anaconda软件用来管理您的python环境。Anaconda有Windows,Max,Linux三个版本可以选择,请根据您的系统选择对应的版本。

安装VScode作为您的代码编辑软件。

使用anaconda创建我们训练模型要使用的环境:

下面打开Anaconda Propmt

输入以下命令,进入工作命令,激活环境,打开vscode(注意,将工作目录和环境名称替换成你自己的相应的名称)。

在Terminal里输入以下命令:

pip install ultralytics
git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e .

完成后输入

pip uninstall torch torchvision

卸载后安装GPU适用的torch版本

安装前请查看您显卡所安装的cuda驱动,安装对应cuda版本的pytorch及torchvision。例如,我的cuda版本高于12.1,所以我安装

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

这时你已经完成了模型训练所需的所有环境配置,下面就可以愉快的训练模型了😊。

训练模型需要执行以下命令:

yolo train detect model=yolov8n.pt data=coco128.yaml imgsz=192 epochs=100

其中,model为你所需要训练的模型路径,目前的Grove Vision V2只支持yolov8n.pt的部署,所以请选择yolov8n.pt。

data为模型训练所需训练集的路径,在这里我们使用一个很小的数据集作为测试,在本节的后面会讲解如何创建训练集进行训练。另外我们实现了coco数据集的自定义部分标签训练,您可以按照自己的喜好以及用途选择特定标签进行训练,实现更灵活的推理功能。

imgsz为模型输入接受的图像大小,这里必须为192

epochs为训练的次数,一般来说,训练次数越多,模型与数据拟合程度越好。

训练结束后,您可以在命令行显示的模型保存的位置找到您训练后的模型(例如我的模型保存在runs\detect\train3)

在云端进行模型训练

如果您的电脑不带有英伟达显卡,那么很可惜您无法在本地进行模型训练,不过您可以在云端进行模型训练,两种训练方法得到的模型效果是相同的。

我们使用ultralytics进行云端模型训练。以下是 Ultralytics HUB 的链接,打开链接,你就可以看到它的介绍和使用教程。

要使用 Ultralytics HUB,你需要一个 github 账户或谷歌账户或苹果账户。

Ultralytics HUB 主页
创建项目
输入项目名称并点击 "Create "
点击 "训练模型“
选择您感兴趣的数据集。

ultralytics hub支持训练用户自己的数据集,如何制作并上传数据集请查看之后章节。

选择要训练的模型,如果要部署在Grove Vision V2,我们推荐 yolov8n

设置高级模型配置(Advanced Model Configuration),如果以后使用 Google Colab 进行模型训练,建议将 Epochs 改为 30,因为虽然 Google Colab 是免费的,但使用有时间限制,30 次训练约为 2 小时,正好在时间限制范围内。如果要在 Grove Vision V2 模块上部署模型,还需要将图像大小改为 192,这更符合我们的实际应用场景。

此外,使用 Google Colab 还需要 Google 邮箱。

复制代码,然后打开此链接。
然后,您将被重定向到以下页面,在这里您需要用刚才复制的代码替换 "开始 "部分
单击 "Setup",等待设置完成,然后单击 "start"。
如果打印输出与我展示的截图相似,则说明模型训练正常。
还可以在 Ultralytics HUB 中直观地观察模型训练。
如果 google colab 中断培训,也不必担心,因为数据已被保存。只需等到 google colab 有剩余的训练资源时再继续训练。
模型训练完成后,您可以选择您想要的模型格式进行下载。

制作自己的训练集

如果您想要对开源数据集之外的标签进行检测,那么您需要自己制作数据集。数据集应该包括图像和对应标签。

下面是yolov8指定的数据集格式

我们使用Make Sense在线数据标注工具来完成训练集制作过程:

有关如何使用Make Sense,可以参考:

当您完成了数据集标签的标注,您需要将图像和标签数据合并起来,构成一个完整的数据集。

数据集需要满足以下格式:

您需要把Make Sense生成的标签数据拷贝到相应的位置。比如您标记了用于训练的标签数据,那么训练所需的图像应该位于images/train,而标签数据应该位于labels/train。另外您需要编写一个dataset.yaml文件。该文件需要放在dataset目录下,文件内容为:

(!注意:dataset.yaml命名要与文件夹命名相一致,否则数据集上传到ultralytics时会遇到问题)

train: images/train
val: images/val
test: images/test

names:
  0: class_one
  1: class_two
  2: class_three

names需要和Make Sense标注时的标签相对应。

如果您在本地进行训练,建议您将train,val,test的路径修改为绝对路径,而在云端训练则不需要。

到此步骤您已经可以使用制作好的数据集进行模型训练了,只需要将

yolo train detect model=yolov8n.pt data=coco128.yaml imgsz=192 epochs=100

中的“data=coco128.yaml”路径改为您制作的数据集中dataset.yaml即可。

如果您在云端进行训练,那么您需要将数据集上传到ultralytics hub上,上传过程非常简单:

这样Ultralytics HUB中就存有了您的数据集,您此时便可以使用您自己的数据集进行模型训练。

Last updated