yolov7训练自己的数据集(口罩检测)(代码片段)

FriendshipT FriendshipT     2022-12-07     389

关键词:

YOLOv7训练自己的数据集(口罩检测)

前言

  • 本文是个人使用YOLOv7训练自己的VOC数据集的应用案例,由于水平有限,难免出现错漏,敬请批评改正。
  • YOLOv7代码结构与YOLOv5很相似,要求的数据集格式也一致,熟悉YOLOv5,可以快速入手YOLOv7。
  • 更多精彩内容,可点击进入我的个人主页查看

前提条件

实验环境

matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.1
Pillow>=7.1.2
PyYAML>=5.3.1
requests>=2.23.0
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.41.0
protobuf<4.21.3

项目结构

yolov7_train_mydatasets
├─cfg
├─data
├─deploy
├─figure
├─inference
│  └─images
├─models
├─paper
├─scripts
├─tools
├─utils
├─VOCdevkit
    └─VOC2007
        ├─Annotations
        └─JPEGImages
│  .gitignore
│  detect.py
│  export.py
│  hubconf.py
│  labelImg2yolo.py
│  LICENSE.md
│  README.md
│  requirements.txt
│  test.py
│  train.py
│  train_aux.py
│  yolov7.pt

制作自己的数据集

  • LabelImg是一款功能相当实用且被广泛使用的图像标注工具,为开发人员提供一个可以自定义制作和创建数据集的平台,所以我们这里使用LabelImg图像标注工具,来制作自己的数据集。
  • LabelImg下载地址 提取码:sjbz
  • 图像标注完成后,LabelImg 图像标注工具会生成.xml格式的文件,.xml格式的文件中包含标注图像的路径、大小以及标注图像中的目标的类别信息和目标的真实框在图像中的位置信息等。
  • 使用LabelImg 标注工具进行数据标注示例如下图所示。
  • 使用LabelImg 图像标注工具会生成.xml格式的文件及其文件内容示例如下图所示。
<annotation>
	<folder></folder>
	<filename>01.jpg</filename>
	<path></path>
	<source>
		<database>Unknown</database>
	</source>
	<size>
		<width>1179</width>
		<height>710</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>with_mask</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>89</xmin>
			<ymin>37</ymin>
			<xmax>492</xmax>
			<ymax>659</ymax>
		</bndbox>
	</object>
	<object>
		<name>without_mask</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>680</xmin>
			<ymin>31</ymin>
			<xmax>1071</xmax>
			<ymax>684</ymax>
		</bndbox>
	</object>
</annotation>

数据集目录结构

├─VOCdevkit
	└─VOC2007
	    ├─Annotations
	    │      01.xml
	    │      ......
	    └─JPEGImages
	           01.jpg
	           ......

训练自己的数据集

VOC格式数据集转换成YOLO格式数据集

在yolov7_train_mydatasets目录下,打开labelImg2yolo.py文件

# 修改成自己数据集的类别名
classes = ["with_mask","without_mask"] 

然后,运行labelImg2yolo.py

python labelImg2yolo.py

生成yolo格式的训练和验证数据集

修改cfg配置

新建一个myyolov7.yaml配置文件

myyolov7.yaml内容

# parameters
nc: 2  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple

# anchors
anchors:
  - [12,16, 19,36, 40,28]  # P3/8
  - [36,75, 76,55, 72,146]  # P4/16
  - [142,110, 192,243, 459,401]  # P5/32

# yolov7 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [32, 3, 1]],  # 0
  
   [-1, 1, Conv, [64, 3, 2]],  # 1-P1/2      
   [-1, 1, Conv, [64, 3, 1]],
   
   [-1, 1, Conv, [128, 3, 2]],  # 3-P2/4  
   [-1, 1, Conv, [64, 1, 1]],
   [-2, 1, Conv, [64, 1, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [[-1, -3, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [256, 1, 1]],  # 11
         
   [-1, 1, MP, []],
   [-1, 1, Conv, [128, 1, 1]],
   [-3, 1, Conv, [128, 1, 1]],
   [-1, 1, Conv, [128, 3, 2]],
   [[-1, -3], 1, Concat, [1]],  # 16-P3/8  
   [-1, 1, Conv, [128, 1, 1]],
   [-2, 1, Conv, [128, 1, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [[-1, -3, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [512, 1, 1]],  # 24
         
   [-1, 1, MP, []],
   [-1, 1, Conv, [256, 1, 1]],
   [-3, 1, Conv, [256, 1, 1]],
   [-1, 1, Conv, [256, 3, 2]],
   [[-1, -3], 1, Concat, [1]],  # 29-P4/16  
   [-1, 1, Conv, [256, 1, 1]],
   [-2, 1, Conv, [256, 1, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [[-1, -3, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [1024, 1, 1]],  # 37
         
   [-1, 1, MP, []],
   [-1, 1, Conv, [512, 1, 1]],
   [-3, 1, Conv, [512, 1, 1]],
   [-1, 1, Conv, [512, 3, 2]],
   [[-1, -3], 1, Concat, [1]],  # 42-P5/32  
   [-1, 1, Conv, [256, 1, 1]],
   [-2, 1, Conv, [256, 1, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [[-1, -3, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [1024, 1, 1]],  # 50
  ]

# yolov7 head
head:
  [[-1, 1, SPPCSPC, [512]], # 51
  
   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [37, 1, Conv, [256, 1, 1]], # route backbone P4
   [[-1, -2], 1, Concat, [1]],
   
   [-1, 1, Conv, [256, 1, 1]],
   [-2, 1, Conv, [256, 1, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [256, 1, 1]], # 63
   
   [-1, 1, Conv, [128, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [24, 1, Conv, [128, 1, 1]], # route backbone P3
   [[-1, -2], 1, Concat, [1]],
   
   [-1, 1, Conv, [128, 1, 1]],
   [-2, 1, Conv, [128, 1, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [128, 1, 查看详情  

win10安装yolov7训练自己的数据集(代码片段)

1.安装https://www.pudn.com/news/62ddf431864d5c73acfb1a09.html下载yolov7源码yolov7修改requirements.txt修改torch以及torchvision版本,这里直接指定好版本让其版本对应安装pipinstall-rrequirements.txt-fhttps://download.pytorch.org/w 查看详情

yolov7pytorch(代码片段)

yolov7主干部分结构图:yolov7主干yolov7数据集处理代码:yolov7数据集处理代码yolov7训练参数解释:yolov7训练参数【与本文代码有区别】yolov7训练代码详解:yolov7训练代码详解目录训练自己的训练集训练自己的训练集... 查看详情

yolov7训练自己的数据集(超详细教程)(代码片段)

...录一,准备数据集1.1挑选照片1.2做标注二,下载YoloV7三,划分数据集四,模型训练4.1创建yaml文件4.2修改默认参数4.3开始训练五,训练模型遇到的问题5.1UnicodeDecodeError:'gbk'codeccan'tdecodetype0xafinposition525:il... 查看详情

yolov7训练自己的数据集及报错处理(代码片段)

...#################D:\\Anaconda3\\envs\\py38torch_gpu\\python.exeD:\\needed\\yolov7-main\\train.py--weightsweights/yolov7.pt--cfgcfg/training/yolov7.yaml--datadata/datasets.yaml--device0--batch-size8--epoch5 YOLOR 2022-9-16torch1.9.0+cu111CUDA:0(NVIDIAGeForceRTX3060Ti,8191.5MB)Namespace(adam=... 查看详情

yolov7(目标检测)入门教程详解---检测,推理,训练(代码片段)

目录一.前言二.yolov7源码下载三.detect(检测)四.Train(训练)数据准备:labellmg:配置训练的相关文件 配置数据集文件正式训练:推理:推理效果:五.总结一.前言  上篇文章:YOLOv7(目标... 查看详情

yolov7:从搭配环境到训练自己的数据集(代码片段)

一.下载源码在github中下载Yolov7源码并解压缩YOLOv7源码数据标注可以参考这篇文章https://blog.csdn.net/qq_39779449/article/details/110172948?spm=1001.2014.3001.5502标签格式二.配置环境整体配置树结构安装Yolov7gpu环境在Anconda中创造Yolov7环境安装... 查看详情

基于深度学习的口罩检测系统(python+清新界面+数据集)(代码片段)

...测试和检测;登录系统提供用户注册、登录、管理功能;训练和调优的模型可有效检测口罩佩戴情况,模型可选择切换。摘要:口罩检测系统用于日常生活中检测行人是否规范佩戴口罩,利用深度学习算法可实现图片、视频、连... 查看详情

睿智的目标检测——pytorch搭建yolov7-obb旋转目标检测平台(代码片段)

睿智的目标检测——Pytorch搭建[YoloV7-OBB]旋转目标检测平台学习前言源码下载YoloV7-OBB改进的部分(不完全)YoloV7-OBB实现思路一、整体结构解析二、网络结构解析1、主干网络Backbone介绍2、构建FPN特征金字塔进行加强特征提... 查看详情

yolov7训练自己的数据集(超详细)(代码片段)

介绍2022年7月,YOLOv7来临,论文链接:https://arxiv.org/abs/2207.02696代码链接:GitHub-WongKinYiu/yolov7:Implementationofpaper-YOLOv7:Trainablebag-of-freebiessetsnewstate-of-the-artforreal-timeobjectdetectors废话不多说,赶紧上车!文件配置... 查看详情

人脸口罩检测(含运行代码+数据集)pytorch+tensorrt+xaviernx(代码片段)

...导入及预处理流程2.网络模型选择及参数设置流程3.模型训练及导出流程4.模型加载/优化并得出推断结果项目源码以及数据集下载:https://download.csdn.net/download/kunhe0512/85360655本教程采用了以下主要的软硬件环境:1.NVIDIAXavierNX2.Jet... 查看详情

深度学习和目标检测系列教程17-300:3个类别面罩检测类别数据集训练yolov5s模型(代码片段)

@Author:RunsenYOLO是目前最火爆的的计算机视觉算法之一,今天使用的数据集来源:https://www.kaggle.com/andrewmvd/face-mask-detection这是数据集可以创建一个模型来检测戴口罩、不戴口罩或不正确戴口罩的人。该数据集包含... 查看详情

手把手教你使用yolov5训练自己的目标检测模型-口罩检测-视频教程(代码片段)

手把手教你使用YOLOV5训练自己的目标检测模型大家好,这里是肆十二(dejahu),好几个月没有更新了,这两天看了一下关注量,突然多了1k多个朋友关注,想必都是大作业系列教程来的小伙伴。既然有... 查看详情

[软件工具]yolov3yolov4yolov7训练自己的数据集windows上超简单全程不写代码

darknet训练自己的数据集一般要写代码自己转化数据集,还要修改配置文件,数据集也不保证都是正确标注的,这个流程一般对初学者或者不熟悉的人经常弄错,只要一个配置参数改错就会导致训练出现问题,... 查看详情

android实现戴口罩人脸检测和戴口罩识别(附android源码)(代码片段)

...法2.戴口罩人脸数据集3.戴口罩人脸检测4.戴口罩识别模型训练5.戴口罩识别模型Android部署(1)将Pytorch模型转换ONNX模型(2)将ONNX模型转换为TNN模型(3)Android端上部署戴口罩识别(4)Android测试效... 查看详情

深度学习和目标检测系列教程17-300:3个类别面罩检测类别数据集训练yolov5s模型(代码片段)

@Author:RunsenYOLO是目前最火爆的的计算机视觉算法之一,今天使用的数据集来源:https://www.kaggle.com/andrewmvd/face-mask-detection这是数据集可以创建一个模型来检测戴口罩、不戴口罩或不正确戴口罩的人。该数据集包含... 查看详情

戴口罩人脸检测和戴口罩识别(含pythonandroid源码)(代码片段)

...法2.戴口罩人脸数据集3.戴口罩人脸检测4.戴口罩识别模型训练(1)准备数据 查看详情

戴口罩人脸检测和戴口罩识别(含pythonandroid源码)(代码片段)

...法2.戴口罩人脸数据集3.戴口罩人脸检测4.戴口罩识别模型训练(1)准备数据 查看详情