欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

一步一步详解如何在CPU上训练YOLO v7模型(实战并分享注意事项)

最编程 2024-02-16 08:29:55
...

我正在参加「掘金·启航计划」

开发所处环境:

  1. python版本3.8
  2. Inter或者AMD的CPU

对于一些朋友写代码用的笔记本,可能和我一样,显卡不支持cuda或者没有独立显卡,但是想用cpu简单训练一下,看看效果,借掘金社区活动的机会,这里我给大家分享一下自己的踩坑记录。

这里我训练了YOLOv7的人脸检测模型,运行良好,在文末我会提供模型给大家测试使用。

一、创建虚拟环境

使用conda就可以了,我这里选择miniconda,因为更干净。

1.下载miniconda

下载地址:Miniconda — conda documentation把安装位置改为D盘,其他都默认。

安装后只有终端,没有其他的软件,非常的干净。

2.pycharm新建项目

在pycharm中使用conda即可,快捷方便。(以往是在命令号中)

image.png

二、下载源码

下载地址:

WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors (github.com)

不要忘记下载pt权重文件,下好之后放在根目录下面。下载YOLOv7这个model就可以了。

image.png

三、安装依赖

安装依赖要分为两步,第一步是torch的安装,第二步是其他依赖库的安装。

1.安装torch

下载官网地址:PyTorch

image.png

2.下载其他依赖

使用YOLOv7提供的requirement.txt文件下载其他内容。

pip install -r requirements.txt

image.png

四、准备数据集

YOLOv7的数据集格式是这样的,images里面是jpg文件,labels里面是txt文件。

我这里准备了149张训练集,22张测试集。数据量比较小,但是效果最后还凑合。

注意:val是必须的,如果没有val的话,就不能正常训练。

image.png

我这里是使用Make Sense进行标注,大家可以参考,也可用其他标注工具。

五、训练过程(包含踩坑)

1.新建yaml文件

image.png

face.yaml文件内容如下:

train: ./data/face/images/train  # 149 images
val: ./data/face/images/val  # 22 images

# number of classes
nc: 1

names: ["face"]

2.修改权重的yaml文件

我们使用的yolov7.pt权重,所以修改yolov7.yaml

image.png

只修改我框出的内容即可。

image.png

3.修改train.py文件

因为我们使用cpu训练,跑的慢,而且我们这里主要是为了验证,

所以我们就修改epochs=20|batch-size=1

image.png

device修改为cpu,workers可以改也可以不改,根据自己的cpu线程数来。

image.png

4.运行train.py文件

可能会报一个关于wandb的错误,这是记录日志的,如果你不需要可以向我一样卸载它。

image.png

开始训练

image.png

训练一分多,出现报错

image.png

5.解决报错

这里我们只要安装报错去修改就可以了。把loss.py文件对应的代码由cuda修改为cpu。

image.png

再次训练就可以成功训练了。

image.png

六、总结

  • run文件夹是运行产生的,可以删掉。
  • yolov7.pt模型还是大了些,推导起来只有1.3fps,可以选用更轻量的模型,可以在YOLOv7的github主页下的tag标签,有更轻量的模型,并没有像YOLOv5一样放在显目的地方。
  • epochs选择20还是太小了,选择100的效果会显著很多,CPU训练大概0.7S一张图片,大家可以估算一下训练时间。
  • cpu训练只是为了验证一下,建议还是使用GPU来训练,时间就是金钱。