CPU炼丹——YOLOv5s

发布于:2024-05-06 ⋅ 阅读:(19) ⋅ 点赞:(0)

1.Anaconda安装与配置

1.1安装与配置

Anaconda3的安装看下面的教程:

最新Anaconda3的安装配置及使用教程(详细过程)icon-default.png?t=N7T8http://t.csdnimg.cn/yygXD,接上面文章下载后,配置环境变量的时候记得在原来你装的Python更下面添加路径:

我直接放到了最后,这样你默认的Python依然是你之前就装好的Python而不是Anaconda自带的Python,下载好后打开cmd,输入下面的代码查看版本。

conda --version

 使用

conda info

可以看到一些具体的信息。

然后:

conda init

然后配置源:

conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --add channels    https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

1.2创建虚拟环境

下面代码创建了一个叫yolov5_p3.8的环境(一定要3.8及以上的版本),之后炼丹用的就是这个环境

conda create -n yolov5_p3.8 python=3.8

 如下图:

会问你:

看到done就行了,上面创建后会有一个提示:

我们可以用这两句代码激活和退出环境

激活环境:

上图的第一个python是本地环境,版本是3.11.4,然后激活环境,再输入python,这时python的版本变成了3.7.12,这就是进入虚拟环境了。

退出环境:

conda deactivate

退出环境后,我输入python,可以看到版本回到了3.11.4.

1.3安装与导入pytorch

去官网:PyTorch

往下拉,按下图配置(版本大于等于1.8):

把最后一行代码复制到cmd:

然后是漫长的等待:

看到他就结束了:

然后输入:

conda list

就可以看到这个环境的包。

2.yolov5的下载与配置

yolov5源码下载地址:ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)

 我选了yolov5s这个表轻量级版本,顺便把官方的预训练模型下载了:

在上面github的网页根据下图操作:

直接用这个版本的:

再往下翻:

展开后找到yolov5s.py点击下载:

 下载往后放到yolov5的目录下即可:

然后开始为这个项目配置运行环境,就是上面我们使用anaconda创建的环境:

 按照你安装的路径导入可执行文件,然后点击右侧加载环境:

然后我们导入一些运行需要的包,下面这行代码在requirement.txt文件里,我们直接在终端输入即可:

 pip install -r requirements.txt

 接下来可能遇到这个问题:

 这个时候建银手动装这个包:

pip install gitpython -i https://pypi.tuna.tsinghua.edu.cn/simple/  

然后再继续运行这句:

 pip install -r requirements.txt

 接下来可以测试一下装好了没,在pycharm终端输入:

python detect.py

 顺利的话可以在这个目录看到结果:

经典的一幕(bus.jpg):

你可能会遇到一些问题,大概是关于git的,先看一看你有没有git,在cmd输入git --version

有一个这样的报错:ImportError: Bad git executable.

没装git就去装:Git 详细安装教程(详解 Git 安装过程的每一个步骤)

 然后估计还有问题:

跟着接下来的步骤,找到anaconda3中我们创建的yolov5_p3.8的git中的下图所指文件:

 我们进去编辑:

import os
os.environ['GIT_PYTHON_REFRESH'] = 'quiet'

 3.训练自己的模型

3.1如何加入自己的训练集

在yolo的data文件下传一个文件夹叫my_data,里面放你分好的和标注好的训练集:

可以看到train下面放的两个文件夹:images和labels分别存储了对应的图片和标签,其他的也一样,当然mytest里面就是随便找的没标记的图片了。

数据集可以用coco的,也可以自己做或者搜一下,有个网站不错:Roboflow Universe: Open Source Computer Vision Community

3.2自己数据的yaml配置

yaml的编写可以参照源码自带的,在data目录下创建自己的数据集yaml:

我的长这样:

两种都可以,上面三个路径是相对于根目录而言,也就是train.py所在位置,换成自己的就行。

3.3train参数的设置

首先是这三个:

第一weights参数:填入我们下载的预训练模型,就在根目录下

第二个是这个模型的配置路径,这个源码中自带,路径如图

第三个就是自己的数据集yaml的路径

 上面两个一个是轮次一个是表示几张图片进行一次权重更新,调小一些,毕竟没显卡,如果是没改模型的话,轮次改成30~40就差不多收敛了,结果0.78左右(最好的)。

这个可以改成True,方便意外打断继续训练,Ctrl+C打断。

 这个处理多线程的,改成0就行,要不可能失败或卡

最后,开始漫长的炼丹:

python train.py

4.验证炼丹

下图就是炼丹后的最佳模型文件所在:

 代开val.py文件,改参数,数据集yaml路径和刚才训练好的best.pt路径

 然后:

python val.py

 最后在下面这张图里就是最后验证后的结果,有一些衡量模型的图片,以及验证结果:

 截张图,验证的结果之一:

5.实战 

之前说过在data文件夹里我还创建了一个mydata文件,里面装了一些网上的随机的水果图片,有不在训练集种类范围的,我们做个实际的个识别验证:

打开detect.py,改下面这两个参数,weights就用我们刚训练好的best.pt,source就是我们用于测试的数据位置:

 下面的data不用改,这里似乎用不到,只有训练和他相关()。

然后

python detect.py

然后在下图可以找到识别的结果:

 比如:

参考:

在CPU上跑yolov5(详细步骤+适合入门)