YOLOV5实战(pycharm)-以口罩检测为例

🌞欢迎来到机器学习的世界 
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🌠本阶段属于练气阶段,希望各位仙友顺利完成突破

📆首发时间:🌹2021年7月8日🌹

✉️希望可以和大家一起完成进阶之路!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

🍈 四种网络结构的介绍

🍉下载代码并配置环境

🍊准备数据集

🍋添加数据配置文件

🍏下载预训练模型 

🍐修改train.py的参数​​​​​​​

🍑开始训练

🍒​​​​​​​模型测试

🍈 四种网络结构的介绍

        Yolov5官方代码中,给出的目标检测网络中一共有4个版本,分别是Yolov5s、Yolov5m、Yolov5l、Yolov5x四个模型。

        Yolov5代码中的四种网络,和之前的Yolov3,Yolov4中的cfg文件不同,都是以yaml的形式来呈现。且四个文件的内容基本上都是一样的,只有最上方的depth_multiplewidth_multiple两个参数不同。

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

 🍉下载代码并配置环境

项目地址:https://github.com/ultralytics/YOLOv5,最近作者又更新了一些代码。

matplotlib>=3.2.2

numpy>=1.18.5

opencv-python>=4.1.2

pillow

PyYAML>=5.3

scipy>=1.4.1

tensorboard>=2.2

torch>=1.6.0

torchvision>=0.7.0

tqdm>=4.41.0

        由于我的电脑上没有GPU所以我在其它的平台上租了一个,可以参考这篇文章。

GPU的租用Pycharm连接远程GPU服务器跑深度学习_卿云阁的博客-CSDN博客

🍊准备数据集

      采用Labelme标注的数据格式,这里的数据集是我提前准备好的,需要的小伙伴可以下载哦。本文使用的是口罩的数据集,新建一个mydata文件夹,把数据放进去。

 

链接:https://pan.baidu.com/s/1wrsvXv5-od8ZtlvJCj9zgQ?pwd=0hti 
提取码:0hti

数据结构如下图:

 

 

images文件夹存放train和val的图片,labels里面存放train和val的物体数据,里面的每个txt文件和images里面的图片是一一对应的。

txt文件的内容如下:

格式:物体类别 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/images

nc: 2
names: ['mask', 'no-mask']

 

其中:

  • path:数据集的根目录
  • train:训练集与path的相对路径
  • val:验证集与path的相对路径
  • nc:类别数量,因为这个数据集只有一个类别(fire),nc即为1。
  • names:类别名字。

🍏下载预训练模型

现在,我们准备好了数据,接下来,下载好预训练模型,即可开始训练了!

预训练模型地址:https://github.com/ultralytics/yolov5/releases

选择你所需要的模型下载即可,这里我选择yolov5m.pt下载。

模型下载完成后,将xx.pt复制在yolov5文件夹下。如下图所示:

 

 

🍐修改train.py的参数​​​​​​​

fg参数是YoloV5 模型的配置文件,模型的文件存放在models文件夹下面,按照需求填写不同的文件。

weights参数是YoloV5的预训练模型,和cfg对应,例:cfg配置的是yolov5s.yaml,weights就要配置yolov5s.pt

data是配置数据集的配置文件,我们选用的是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:

 

在Parameters,输入对应参数命令

--weights yolov5s.pt --data data/data.yaml --workers 1 --batch-size 8 

 至此,模型则开始训练

为了方便起见,这里我只训练两次,我们可以看到效果不是很好。

 

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中文网这个工具非常好用强烈推荐

 

🍒​​​​​​​模型测试

模型训练完成后,将runs/exp/weights下的模型(best.pt)复制在yolov5文件夹下。

开始测试

python detect.py --weights best.pt --source ../datasets/data/images/val 
  • weights:是你训练好的模型的路径,并且weights支持以下几种格式。
  • --source:是你测试的数据路径
  • 测试结果保存在runs/detect下(如果是在服务器上,也是需要下载到本地的)

 

 

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

  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而高性能,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。  本课程的YOLOv5使用ultralytics/yolov5,在Windows和Ubuntu系统上分别做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 除本课程《YOLOv5实战训练自己的数据集(Windows和Ubuntu演示)》外,本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卿云阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值