🏋️模型训练

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

  • 在本地进行模型训练

  • 在云端进行模型训练

  • 制作自己的训练集

在本地进行模型训练

本小节介绍如何在个人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支持训练用户自己的数据集,如何制作并上传数据集请查看之后章节。

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

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

制作自己的训练集

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

下面是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