一.前言
这个暑假对Pyqt5/Pyside6进行了一个入门学习。
从一开始听b站up主一节节课讲解各个控件的属性与相关信号,自己跟着一个个控件的码出来,再到拿医院管理系统做了个基础版的多窗口界面,这个时候为了打好基础ui也是码出来的,也学习到了在主窗口主要布置函数连接,引用各个ui避免臃肿,算是逐步养成了编码的一些习惯。
后面想挑战一下运用mysql数据库,入门了学生管理系统,因为mysql和pyside的驱动连接问题被迫转到pyqt5,开始使用qtdesigner制作ui,在mysql workbench上对于数据库也有了初步的了解,完成了基本的增删改查,注册账号,记住密码等功能,并对ui做了界面美化,学习了一些stylesheet的用法,到这算是对pyqt小有所成。
现在还有一个月的假期时间,还是打算深入一些运用到pyqt的项目,于是在b站入门了yolov5,一开始看项目介绍还以为是个较简单的opencv的特征检测项目,在我毕设的基础上可能深入一点,后面看到跟深度学习还有关联。之前一直想入门深度学习,但奈何去搜攻略都是长篇大论,无从下手,这次正好借着这个项目学习一下pytorch框架,anaconda的虚拟环境,只是可能pyqt只是其中一个附属罢了。
我一直都认为,学习代码相关的技能,大部头书籍不如自己借一个项目来,从结果推初始也好,自己码一遍跑一下看看错哪了也好,学习也可以是逆向的,合乎自己感觉要紧。
因为这个最近发现的领域是自己不曾涉足的,在环境配置上有很多细节,我觉得有必要记录一下。
二.环境配置
1. Anaconda下载
之前只安装了python和pycharm,因为下载anaconda自带一个python,下载后需要在环境变量中删掉path中的原python路径,换上anaconda的三个路径。下载过程选择无影响,下载后两者并不冲突,在pycharm中换用anaconda的解释器即可。
D:\Anaconda3
D:\Anaconda3\Scripts
D:\Anaconda3\Library\bin
2.虚拟环境的配置
(1)创建虚拟python环境
1)以项目代码的文件夹打开cmd
如果你是对别人的项目做复现,建议建立个文件夹,把代码塞里面,对这个文件夹cmd(后续安装request库一大堆的很方便)
2)更换下载源
在创建虚拟python前,建议先将源更换为清华源如下(中科大我试了几次这里不好使)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --set show_channel_urls yes
3)指定虚拟环境所在位置
考虑到一个虚拟环境加上各种库,容量应该有20g左右或往上,如果你想指定虚拟环境所在的硬盘,建议阅读这篇文章w11下载anaconda在d盘,新建的虚拟环境总是在c盘怎么解决_anaconda创建虚拟环境怎么在c盘_weixin_48373309的博客-CSDN博客
4)正式创建虚拟环境
在cmd中运行如下代码,python3.8听说与pytorch配合比较稳定,反正我跟着选了
conda create -n yolo5 python==3.8.5
5)激活虚拟环境
要记得激活虚拟环境,之后cmd会出现(yolo5)也就是你虚拟环境名字打头的语句
conda activate yolo5
(yolo5) D:\yoloTest\yolov5-mask-42-master>python
(2)下载pytorch
下载pytorch建议换成中科大源
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
python3.8不宜安装过高版本的pytorch,但选择gpu版本的建议1.10以上
conda install pytorch==1.10.0 torchvision torchaudio cudatoolkit=11.3
(2)下载pycocotools
如下安装即可
pip install pycocotools-windows
(3)下载requirements的库
在cmd也就是在项目文件夹目录下你创建好的虚拟环境中输入dir,其中会显示requirements的命名,然后执行如下命令即可。这一般是github或gitee上大佬做完虚拟环境下深度学习项目后生成的一个打包库。这也是运用anaconda的优势所在。
pip install -r requirements.txt
(4)下载pyqt5与labelimg
pip install pyqt5
pip install labelme
labelimg用途是对图片做截取,生成截取区域的位置信息,相当于自己做一次训练。
(5)细枝末节
到这里基本的配置完成了,可以在cmd中直接运行一些命令,也可以文件夹打开pycharm。这时候要做到更换解释器为虚拟环境下的python。如果仍出现torch,pyqt等未识别模块,在pycharm的终端处运行命令,并讲终端换成cmd。还会出现一些如int格式问题,将numpy1.24版卸了换成1.22版的。
三.运行yolov5程序
1.数据集分类
训练集(train),测试集(test),验证集(val)。
训练集就是自己在labelimg进行截图,口罩人脸分类,得到各个图片的labels,将这份数据交给电脑去学习,相当于看老师现场解题。
验证集就是同样需要自己截图,但举个例子,这时候是电脑训练完之后开始做卷子并对答案的过程。
测试集就是正式考试,只给图片,让电脑识别出并分类。
三者喂的比例一般为8:1:1
2. 数据集路径配置
按照如下分成三类,除了test集,其他都需要images与labels,且最好对图片做一个重命名,以便归类,images与labels在截图后是一一对应的。
3.运行命令
直接在终端运行命令
(1)训练验证命令
mask_data.yaml中配置好训练与验证图片的索引路径
weights 使用预训练模型yolov5s
epoch 100轮
batch size 每轮8张图片
device 0 直接使用gpu
最终会得到一系列分析结果,误差损失精度等等。。
数据集:训练集120张图,测试和验证都是15张。
我的配置是3050 4g显存,这样跑一轮是8s,100轮12分钟左右
对于gpu使用率低的问题还在探究中。。。
python train.py --data mask_data.yaml --cfg mask_yolov5s.yaml --weights pretrained/yolov5s.pt --epoch 100 --batch-size 8 --device 0
(2)测试命令
在上面运行结束后,会在run/train/exp/weights目录下出现一个最佳模型best.pt,用这个去跑测试,同样的后面跟的路径是测试集图片的路径。
python detect.py --weights runs/train/exp7/weights/best.pt --source D:/yoloTest/pic/yolo_test/images
在测试结束后,会在detec目录下生成结果图,可以用以评价效果。
目前的结果评价是
1. 摄像头视频识别“人脸”精度低
2. 图片对"人脸"识别精度低
3. gpu利用率低
4. 对于“口罩”的识别精度高