1. 环境搭建
1.1 【 设备与系统配置 】
我使用的设备配置为V100显卡双卡,总显存64GB,操作系统为Ubuntu 18.04,Python版本为3.7.10。在这样的环境下,我可以顺利地进行yolov7模型的训练。
1.2 【 代码获取与准备 】
在搭建好环境后,接下来需要获取yolov7的代码,并进行必要的安装和环境配置。同时,也需要下载预训练的权重文件,以便于模型的训练和推理。这些步骤完成后,就可以正式开始yolov7模型的训练了。
022. 代码准备
2.1 【 克隆代码 】
yolov7的代码可以在其官方仓库中获取。直接访问官方GitHub页面(
git clone
执行该命令后,代码将被下载并保存在本地,为后续的训练和推理工作做好准备。从官方GitHub页面克隆yolov7代码,并准备训练和推理的基础。
代码克隆过程
代码的克隆速度主要取决于服务器的网络速度。有时,这一过程可能需要两到三分钟,而其他时候,可能只需几十秒即可完成。一旦克隆成功,你就可以打开yolov7,并看到一系列的文件,为后续的训练和推理工作提供基础。
2.2 【 环境搭建 】
进入yolov7项目文件夹后,开始进行环境的搭建。只需依次输入以下两行代码即可完成。在yolov7项目文件夹中,通过命令进行环境搭建和依赖安装。请注意,这个过程的速度会受到服务器网络速度的影响,但通常不会花费太久的时间。
```bash
cd yolov7
pip install -r requirements.txt
```
接下来,我们将展示环境搭建完成后的截图。
环境搭建完成后,我们就可以开始进行后续的开发工作了。
2.3 【 权重下载 】
我们此次采用的预训练模型为yolov7_training.pt,该模型是在MS COCO数据集上经过精心训练的。为了便于管理,我们将此模型下载至/yolov7/weights/文件夹中。下载预训练模型yolov7_training.pt,并将其放在指定目录。
请注意,若该文件夹尚不存在,需先进行创建。以下是创建文件夹并切换至该目录的命令:
mkdir weights # 创建weights文件夹
cd weights # 进入weights文件夹
请放心,这些预训练模型均可从官网获取。在掌握数据集的训练方法后,您还可以根据个人需求对预训练模型进行定制化更改。官网的相关截图已附上,供您参考:
下载完成后(或上传至服务器后),请确保您已成功获取到预训练模型文件。接下来,您可以开始进行后续的操作,如模型训练或评估等。
执行cd ..命令,我们的预训练权重文件就已经成功下载完毕。
2.4 【 进行测试 】
这一步的关键在于验证环境的配置是否完整且无误。测试环境配置的正确性,并进行模型推断验证。
接下来,我们需要从网络上下载已经训练好的权重文件,将其保存至/weights/文件夹中。请注意,此处所下载的权重文件与Transfer Learning中使用的预训练文件并非同一份。
在完成环境配置和权重文件下载后,我们接下来将进行实际的测试。首先,使用命令cd weights进入权重文件所在的目录,然后运行`wget
请确保测试成功,运行结果将显示预测的图片已被保存在/runs/detect/exp/文件夹下。
033. 数据准备阶段
3.1 【 数据准备 】
在完成了模型推理的初步准备后,我们接下来需要聚焦于数据准备的重要环节。创建 datasets文件夹并管理训练数据。我们创建了一个名为datasets的文件夹,用于集中管理所有数据。在训练过程中,我们使用了yolo数据格式,但与常规格式有所不同的是,我们额外添加了两个.txt文件。这两个文件的主要作用是存储每张图片的路径信息,其具体用途将在后续章节中详细阐述。
3.2 【 准备yolo格式的数据 】
3.2.1 【 创建数据文件夹 】
使用mkdir datasets命令来创建一个名为datasets的文件夹,以方便我们集中管理所有数据。执行此命令后,将得到如下结果:
[成功创建datasets文件夹]
3.2.2 【 准备yolo格式数据集 】
若您对yolo格式数据集尚不了解,不妨先进行一番学习。众多CV领域专家推荐使用labelImg进行数据标注,其便捷性不言而喻。当然,此处我们不深入探讨labelImg的具体使用方法,因其使用教程在网络上不胜枚举。需注意的是,标注数据通常需借助图形交互界面,而远程服务器可能无法满足此需求,因此推荐在本地电脑完成标注后再上传至服务器。
接下来,我们将探讨如何准备已标注的yolo格式数据集。这些数据集将遵循特定的存放格式。不过,值得注意的是,train\_list.txt和val\_list.txt这两个文件需要我们后续自行生成,而并非由labelImg直接生成。至于其他由labelImg生成的文件,则会自动包含相应的标注信息。
生成这两个文件并不复杂,只需编写一个简单的循环即可完成。在完成对数据集的准备之后,我们可以继续进行下一步,即进行模型训练和评估。
044. 配置文件准备
4.1 【 简介 】
在准备训练所需配置文件时,我们主要需要关注两个文件。首先是/yolov7/cfg/training/yolov7.yaml,这是一个关于模型配置的重要文件,其中包含了模型的各项参数设置。另一个则是/yolov7/data/coco.yaml,这个文件用于指定数据集的路径和相关信息。配置训练文件,包括模型配置和数据集路径的设置。
4.2 【 配置模型文件 】
首先,将yolov7.yaml文件复制到相同路径,并重命名为yolov7-Helmet.yaml。接下来,打开这个重命名后的文件,进行简单的修改。修改yolov7-Helmet.yaml中的nc参数以适配特定任务。修改内容如下:
将nc参数的值修改为你的数据集中目标类别的总数。例如,如果你的数据集包含三个类别,那么就将nc的值设置为3。完成修改后,保存文件。
4.3 【 数据集文件配置 】
首先,将coco.yaml文件复制到相同目录下,并重命名为Helmet.yaml。接下来,打开Helmet.yaml文件,进行以下关键修改:修改Helmet.yaml,指定训练和验证数据路径。
注释掉自动下载COCO数据集的代码,以避免不必要的内存占用。
将
train路径修改为train_list.txt文件的实际路径。将
val路径修改为val_list.txt文件的实际路径。将
nc修改为数据集中目标类别的总数。将
names修改为数据集中所有目标类别的名称列表。
完成上述修改后,记得保存Helmet.yaml文件。在完成配置后,我们就可以开始进行模型训练了。
055. 训练流程
5.1 【 引言 】
在启动训练流程时,利用关键文件和超参数配置启动模型训练。我们将需要使用三个关键文件:预训练模型yolov7.pt、配置文件yolov7-Helmet.yaml以及数据集文件Helmet.yaml。
5.2 【 启动训练 】
运行train.py命令开始训练。执行以下命令:
```bash
python train.py --weights weights/yolov7.pt --cfg cfg/training/yolov7-Helmet.yaml --data data/Helmet.yaml --device 0,1 --batch-size 64 --epoch 10
```
执行上述命令后,训练界面将开始扫描数据,并在yolov7/datasets/Helmet/目录下生成两个缓存文件。这两个文件是模型进行数据读取所必需的,训练过程中请勿删除。在指定目录生成缓存文件,接着正式开始训练。
066. 模型训练结果与推理应用
6.1 【 训练结果展示 】
在模型训练完成后,显示训练完成后的最佳模型信息及其他结果文件。系统会输出最佳模型的信息,并告知最后一个epoch的模型结果保存位置,例如:
除了最后一个epoch的模型结果,系统还在/runs/train/exp/目录下保存了其他训练结果文件。
6.2 【 推理 】
推理过程与测试类似,只需将相应的训练好的模型对新的测试图片进行推理,并展示结果。运行以下命令进行推理:
```bash
python detect.py --weights runs/train/exp3/weights/best.pt --source datasets/testImages
```
通过这一系列步骤,我们能够顺利地进行yolov7模型的训练,并成功应用在实际目标检测任务中。