Commit dcd0ed97 authored by acqpriwny1's avatar acqpriwny1
Browse files

Update README.md

parent 303e9094
...@@ -16,13 +16,18 @@ YOLOv5是一种基于深度学习的目标检测算法,它的模型结构主 ...@@ -16,13 +16,18 @@ YOLOv5是一种基于深度学习的目标检测算法,它的模型结构主
更具体地说,YOLOv5的backbone采用CSPDarknet53网络结构,其中CSP表示Cross Stage Partial Network,它可以有效地减少参数量和计算量。neck采用FPN+PAN的结构,其中FPN表示Feature Pyramid Network,PAN表示Path Aggregation Network,它们可以将不同层次的特征进行融合。head采用YOLOv3中的anchor-based检测头,并在此基础上加入了SPP结构和SAM结构,以提高检测精度。loss采用GIOU Loss作为bounding box的损失,并使用二进制交叉熵和Logits损失函数计算类概率和目标得分的损失。 更具体地说,YOLOv5的backbone采用CSPDarknet53网络结构,其中CSP表示Cross Stage Partial Network,它可以有效地减少参数量和计算量。neck采用FPN+PAN的结构,其中FPN表示Feature Pyramid Network,PAN表示Path Aggregation Network,它们可以将不同层次的特征进行融合。head采用YOLOv3中的anchor-based检测头,并在此基础上加入了SPP结构和SAM结构,以提高检测精度。loss采用GIOU Loss作为bounding box的损失,并使用二进制交叉熵和Logits损失函数计算类概率和目标得分的损失。
## 3.数据集 ## 3.数据集
1.数据集名称:深度学习人脸口罩数据集 ### 一
2.数据量:两个数据集,一个1600张图片,一个7056张图片
3.标注框种类:face(人脸)、face_mask(戴口罩)、共两类 1. 数据集名称:深度学习人脸口罩数据集
4.标签格式:均为voc格式 2. 数据量:两个数据集,一个1600张图片,一个7056张图片
5.收集来源:主要为网络收集 3. 标注框种类:face(人脸)、face_mask(戴口罩)、共两类
6.备注:自己做项目用过的两个人脸-口罩数据集,质量都很高 4. 标签格式:均为voc格式
5. 收集来源:主要为网络收集
6. 备注:自己做项目用过的两个人脸-口罩数据集,质量都很高
### 二
使用COCO2017数据集,COCO2017数据集是一个用于目标检测、分割、关键点检测和图像描述的数据集,由微软公司制作收集。该数据集包含超过33万张图像,其中大约20万张图像用于训练,6万张图像用于验证,7万张图像用于测试。COCO2017数据集中的物体类别共有80个,包括人、动物、交通工具、家具等。
COCO2017数据集中的每个物体都有一个矩形边界框和一个类别标签,同时还有一些物体的关键点标注和图像描述信息。COCO2017数据集的标注格式采用JSON文件存储,其中包含了每个物体的位置、类别、关键点等信息。
## 4.训练 ## 4.训练
### 环境配置 ### 环境配置
...@@ -69,7 +74,7 @@ export HIP_VISIBLE_DEVICES=0 ...@@ -69,7 +74,7 @@ export HIP_VISIBLE_DEVICES=0
python3 train.py --batch 32 --data /work/home/acqpriwny1/cyh/datasets/MaskDataSet/data.yaml --cfg 'yolov5s.yaml' --weights '' --project 'run/train' --hyp 'data/hyps/hyp.scratch-high.yaml' --epochs 1000 2>&1 | tee yolov5s.log python3 train.py --batch 32 --data /work/home/acqpriwny1/cyh/datasets/MaskDataSet/data.yaml --cfg 'yolov5s.yaml' --weights '' --project 'run/train' --hyp 'data/hyps/hyp.scratch-high.yaml' --epochs 1000 2>&1 | tee yolov5s.log
``` ```
![image](1.PNG)
### 单节点多卡训练 ### 单节点多卡训练
``` ```
...@@ -82,6 +87,24 @@ python3 -m torch.distributed.run --nproc_per_node 4 train.py --batch 128 --data ...@@ -82,6 +87,24 @@ python3 -m torch.distributed.run --nproc_per_node 4 train.py --batch 128 --data
其中--nproc_per_node参数代表卡的个数,--batch参数代表global batchsize的大小 其中--nproc_per_node参数代表卡的个数,--batch参数代表global batchsize的大小
![image](b1f15f6dfece4c81963cfb63c792ee15.png) ![image](b1f15f6dfece4c81963cfb63c792ee15.png)
训练结束后会输出best.pt和last.pt到runs/train/exp
![image](2.PNG)
**注意--workers 的default值需要修改为0,否则编译报错。**
![image](3.PNG)
#### 训练所有结果的图表和记录结果的csv均存放在runs/train文件夹下,以下只放几张:
![image](runs/train/val_batch0_pred.jpg))
![image](runs/train/PR_curve.png)
![image](runs/train/results.png)
![image](runs/train/confusion_matrix.png)
## 推理测试(以口罩检测为例) ## 推理测试(以口罩检测为例)
``` ```
python detect.py --source 0 # webcam python detect.py --source 0 # webcam
...@@ -99,15 +122,24 @@ python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images ...@@ -99,15 +122,24 @@ python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images
Image(filename='runs/detect/exp/zidane.jpg', width=600) Image(filename='runs/detect/exp/zidane.jpg', width=600)
``` ```
![image](捕获.PNG) ![image](捕获.PNG)
![image](runs/detect/5c1ad8e25c3fa0de61250124e1973eb6__1_.jpg)
![image](runs/detect/6cf9d7ce36f2e52c3aec828bdc3ff548__1_.jpeg)
![image](runs/detect/89ee4a1ccecd593dd4ce32d9f15f7b58__1_.jpg)
![image](runs/detect/bus.jpg)
将训练好的pt文件导入weight参数中即可,推理代码如下: 将训练好的pt文件导入weight参数中即可,推理代码如下:
``` ```
python3 val.py --data data/coco-v5.yaml --weights runs/train/exp12/weights/best.pt --device 0 python3 val.py --data data/data.yaml --weights runs/train/exp12/weights/best.pt --device 0
``` ```
##口罩检测 ##口罩检测
##ONNX模型单张图片推理并导出 ##ONNX模型单张图片推理并导出(根据coco128数据集训练的模型)
在export.py 中的 def parse_opt()函数修改: 在export.py 中的 def parse_opt()函数修改:
``` ```
修改 default=12 修改 default=12
...@@ -124,7 +156,9 @@ python export.py --weights yolov5s.pt --include onnx ...@@ -124,7 +156,9 @@ python export.py --weights yolov5s.pt --include onnx
python yolov5_detection.py python yolov5_detection.py
``` ```
![image](res.jpg) ![image](qb5636zq.png)
![image](w9jdchyv.png)
## 准确率 ## 准确率
| 模型 | size(pixels) | map0.5:0.95 | map0.5 | | 模型 | size(pixels) | map0.5:0.95 | map0.5 |
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment