嘟嘟嘟嘟!工作需要,所以学习了下yolov5算法。是干什么的呢?
通俗来说,可以将它看做是一个小孩儿,通过成年人(开发人员)提供的大量图片的学习,让自己知道我看到的哪些场景需要提醒给成年人(开发人员)。也算是一个脚指头踩在了人工智能的门口。
我们使用时可以对他做的呢,有以下几点(就想象成孩子已经出来了):
- 寻找他可能遇到的场景,成年人在场景上标注“没戴口罩的”、“没戴安全帽的”、“貌似是火源的”…在给孩子找这些场景时,成年人也会精心选择,将其分为标准的很简单看出来的(训练集train)、不很容易的需要仔细学习的(验证集val)、用来测试学习成果的(测试集test)
- 孩子的大脑驱动着,记录这些图片的标准参数(训练集图片)、超参数(验证集图片)
- 孩子学完之后,成年人可以用测试集中的图片对训练出来的成果做验收,验收成功后,成年人就可以让孩子自己去玩
- 孩子在玩的过程中,发现了自己学习中的场景,至于是要孩子回来报告给成年人,还是只是孩子自己知道就可以,这就看开发者了。
源码
如果没看懂,可以看下这个链接,超详细
https://blog.csdn.net/ECHOSON/article/details/121939535?ops_request_misc
接触到了两个,一个是口罩检测模型,一个是安全帽检测模型,源码嘛,都是人家自己的。下面就是下载地址
口罩模型检测源码
安全帽模型检测源码
只是得到源码,其实做不了什么的,除非特有耐心还要有GPU,否则只是在训练模型阶段,就已经…dddd
训练模型
资源已经上传
这是地址
所需安装的程序
- anaconda
- pycharm
其他的程序只在虚拟环境中安装就可以了
环境配置
一、Anaconda、pycharm安装
anaconda官网:https://www.anaconda.com/products/distribution#Downloads
pycharm官网:https://www.jetbrains.com/pycharm/
二、环境安装验证
- 桌面右击,显示“open folder as pycharm project”,就表示pycharm安装成功了
- 任意一个文件夹,使用cmd打开。执行“conda activate”,在下一命令行前出现了base就是anaconda安装成功了。
三、换源(可以省略)
使用过程中,需要在虚拟环境中下载各种源,换源的目的是可以使下载速度快些。此处是换了中科大的源。直接复制粘贴到命令行执行就行
conda config --remove-key channels
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple
四、虚拟环境
我们已经有yolov5的源码了,可以直接在项目中,打开cmd。
还有另一种选择,直接用anaconda prompt执行也可以,可以使用cd命令跳转文件夹。
执行
conda create -n 环境名
conda create -n 环境名 python=3.8 后面最好是写下Python版本,不然后面有个依赖叫pycocotools的,很恶心,没有对应python3.9的版本
这样就创建了一个虚拟环境,创建后环境的查看
conda info --env
或者conda env list
创建成功后,激活,就相当于虚拟环境的入口指令,每次要使用虚拟环境中的包都需要执行
conda activate 环境名 或者 activate 环境名
五、安装依赖
下面的依赖都要在虚拟环境中安装,使用时,直接使用这个虚拟环境,如果使用其他虚拟环境或者base环境,是检测不到依赖的
1、pytorch
pytorch是用python语言打造的一款深度学习框架,既可实现强大的GPU加速,也可支持动态神经网络。yolov5算法在GPU和CPU情况下都可以使用,但是pytorch要区分是在GPU下使用还是CPU使用,而且提醒一下CPU去训练模型时,会让你感动到哭
安装pytorch,要注意自己是GPU还是CPU,此处以CPU为例哈,GPU和他差不多
pytorch官网获取安装命令
官网:https://pytorch.org/get-started/locally/
这个命令直接在虚拟环境中执行就可以了,如果要带着后面的 -c pytorch ,表示是从国外的源下载,那么前面配置源的地方就没用。看自己,想用哪个用哪个
conda install pytorch torchvision torchaudio cpuonly -c pytorch
2、pycocotools
pip insatll pycocotools-windows
3、其他包
yolov5算法项目中包含一个requirement.txt文件,里面就标注了需要的依赖。
pip install -r requirement.txt
pip insatll pyqt5
pip install labelme
六、pycharm的配置
这一步是对pycharm打开的项目配置虚拟环境,所以前提就是要有虚拟环境和项目。
pycharm打开项目,右下角的初始状态应该是NO interpreter,点击就会出现设置和添加。
第一次的话直接添加就可以了
后面其他项目要使用同一虚拟环境时,点击设置-show all就可以展示之前的虚拟环境
七、训练模型
数据集分为三部分,训练集train、验证集val、测试集test。之前看过的一个分配比例是60%、20%、20%。数据集标注的位置文件就在与images同级的labels文件夹中,且这个文件夹中结构与images相同,有train/val/test。
首先,要训练模型就要先找数据集,人工去标注图片,让程序学习。
标注的工具就是labelimg
安装命令
pip install labelimg
安装成功后,使用时,在虚拟环境中执行 labelimg 命令,就可以打开界面。这里要注意,一定要将文件类型改成yolo类型,就是下图中yolo的位置。
标注后生成的文件如下
每一行就是一个目标的数据,分别是目标的类别id(戴口罩或没带口罩)、归一化处理后的中心点X坐标、y坐标、框的w和h。
数据集配置文件,名字可以随意,内容一定要包含这几项。
模型配置文件
预训练模型
训练的执行文件
训练模型命令:
python train.py --data 数据集配置文件名称 --cfg 模型配置文件名称 --weights 预训练权重文件 --epoch 100 --batch-size 4 --device cpu
不使用命令执行的话,train.py文件中有配置的位置,只要对应修改就可以了
之后直接执行 python train.py即可
执行之后,等待即可,生成的文件可在runs/train文件夹中查看。
八、模型检测
模型检测,使用的是detect.py文件,运行命令如下:
python detect.py --source 要检测的图片或mp4文件位置 --weights 训练出来的模型/runs/train/exp_yolov5s/weights/best.pt
python detect.py --source 0 检测摄像头,这个没成功
python detect.py --source 'rtsp地址' 根据rtsp地址检测摄像头
不想要那么长的命令,可以直接修改detetct.py文件中的位置
然后直接执行 python detect.py 即可