机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例

欢迎来到机器学习的世界
博客主页:卿云阁
欢迎关注点赞收藏??留言
本文由卿云阁原创!
本阶段属于练气阶段,希望各位仙友顺利完成突破
首发时间:2021年7月8日
??希望可以和大家一起完成进阶之路!
作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!
目录

四种网络结构的介绍
下载代码并配置环境
准备数据集
添加数据配置文件
下载预训练模型
修改train.py的参数???????
开始训练
???????模型测试

机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片



四种网络结构的介绍 Yolov5官方代码中,给出的目标检测网络中一共有4个版本,分别是Yolov5s、Yolov5m、Yolov5l、Yolov5x四个模型。
【机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例】Yolov5代码中的四种网络,和之前的Yolov3,Yolov4中的cfg文件不同,都是以yaml的形式来呈现。且四个文件的内容基本上都是一样的,只有最上方的depth_multiple和width_multiple两个参数不同。
机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片


四种结构就是通过上面的两个参数,来进行控制网络的深度和宽度。其中depth_multiple控制网络的深度,width_multiple控制网络的宽度。

下载代码并配置环境 项目地址:https://github.com/ultralytics/YOLOv5,最近作者又更新了一些代码。
机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片


matplotlib>=3.2.2numpy>=1.18.5opencv-python>=4.1.2pillowPyYAML>=5.3scipy>=1.4.1tensorboard>=2.2torch>=1.6.0torchvision>=0.7.0tqdm>=4.41.0

由于我的电脑上没有GPU所以我在其它的平台上租了一个,可以参考这篇文章。
GPU的租用Pycharm连接远程GPU服务器跑深度学习_卿云阁的博客-CSDN博客
准备数据集 采用Labelme标注的数据格式,这里的数据集是我提前准备好的,需要的小伙伴可以下载哦。本文使用的是口罩的数据集,新建一个mydata文件夹,把数据放进去。

链接:https://pan.baidu.com/s/1wrsvXv5-od8ZtlvJCj9zgQ?pwd=0hti
提取码:0hti
机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片


数据结构如下图:
机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片



images文件夹存放train和val的图片,labels里面存放train和val的物体数据,里面的每个txt文件和images里面的图片是一一对应的。
txt文件的内容如下:
机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片

格式:物体类别 x y w h
坐标是不是真实的坐标,是将坐标除以宽高后的计算出来的,是相对于宽和高的比例。

添加数据配置文件 在yolov5/data文件夹下新建data.yaml
内容如下所示:(这里是我用的服务器上的地址)
train: /tmp/pycharm_project_558/dataset/MaskDataSet/train/images val: /tmp/pycharm_project_558/dataset/MaskDataSet/valid/imagesnc: 2 names: ['mask', 'no-mask']

机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片


其中:
  • path:数据集的根目录
  • train:训练集与path的相对路径
  • val:验证集与path的相对路径
  • nc:类别数量,因为这个数据集只有一个类别(fire),nc即为1。
  • names:类别名字。
下载预训练模型 现在,我们准备好了数据,接下来,下载好预训练模型,即可开始训练了!
预训练模型地址:https://github.com/ultralytics/yolov5/releases
选择你所需要的模型下载即可,这里我选择yolov5m.pt下载。
机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片

模型下载完成后,将xx.pt复制在yolov5文件夹下。如下图所示:
机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片


修改train.py的参数???????
fg参数是YoloV5 模型的配置文件,模型的文件存放在models文件夹下面,按照需求填写不同的文件。weights参数是YoloV5的预训练模型,和cfg对应,例:cfg配置的是yolov5s.yaml,weights就要配置yolov5s.ptdata是配置数据集的配置文件,我们选用的是voc.yaml,所以配置data/voc.yaml修改上面三个参数就可以开始训练了,其他的参数根据自己的需求修改。修改后的参数配置如下:parser.add_argument('--weights', type=str, default='yolov5s.pt', help='initial weights path')parser.add_argument('--cfg', type=str, default='yolov5s.yaml', help='model.yaml path')parser.add_argument('--data', type=str, default='data/voc.yaml', help='data.yaml path')

开始训练 打开命令行,点击train -> Edit Configurations:机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片


在Parameters,输入对应参数命令
--weights yolov5s.pt --data data/data.yaml --workers 1 --batch-size 8

机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片

至此,模型则开始训练
为了方便起见,这里我只训练两次,我们可以看到效果不是很好。
机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片


Box:YOLO V5使用 GIOU Loss作为bounding box的损失,Box推测为GIoU损失函数均值,越小方框越准;
Objectness:推测为目标检测loss均值,越小目标检测越准;
Classification:推测为分类loss均值,越小分类越准;
Precision:精度(找对的正类/所有找到的正类);
Recall:真实为positive的准确率,即正样本有多少被找出来了(召回了多少)。
Recall从真实结果角度出发,描述了测试集中的真实正例有多少被二分类器挑选了出来,即真实的正例有多少被该二分类器召回。
val BOX:验证集bounding box损失
val Objectness:验证集目标检测loss均值
val classification:验证集分类loss均值
mAP:是用Precision和Recall作为两轴作图后围成的面积,m表示平均,@后面的数表示判定iou为正负样本的阈值,@0.5:0.95表示阈值取0.5:0.05:0.95后取均值。
mAP@.5:.95(mAP@[.5:.95])
表示在不同IoU阈值(从0.5到0.95,步长0.05)(0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95)上的平均mAP。
mAP@.5:表示阈值大于0.5的平均mAP
一般训练结果主要观察精度和召回率波动情况(波动不是很大则训练效果较好)
然后观察mAP@0.5 & mAP@0.5:0.95 评价训练结果。
训练之后,都会在runs-train文件夹下出现一下文件,如下图:
这里我是租的服务器,所以rus文件夹只出现在服务器上,我们需要把它保存在本地。
客户端 - FileZilla中文网这个工具非常好用强烈推荐
机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片
机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片

机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片



???????模型测试 模型训练完成后,将runs/exp/weights下的模型(best.pt)复制在yolov5文件夹下。
开始测试
python detect.py --weights best.pt --source ../datasets/data/images/val

  • weights:是你训练好的模型的路径,并且weights支持以下几种格式。
  • --source:是你测试的数据路径
  • 测试结果保存在runs/detect下(如果是在服务器上,也是需要下载到本地的)
机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片


机器学习和深度学习|YOLOV5实战(pycharm)-以口罩检测为例
文章图片


但是在服务器上好像不可以通过电脑的摄像头进行测试。

    推荐阅读