前面也有讲过将智能模型应用和工业等领域结合起来是有不错市场前景的,比如:布匹瑕疵检测、瓷砖瑕疵检测、PCB缺陷检测等等,在工业领域内也有很多可为的方向,本文的核心目的就是想要基于目标检测模型来开发构建焊接缺陷检测模型,探索分析工业领域智能化检测。
首先看下效果图:
接下来看下数据集情况:
YOLO格式标注文件如下所示:
VOC格式标注文件如下所示:
这里共有10种缺陷类别,如下:
0: chongkong
1: hanfeng
2: yueyawan
3: shuiban
4: youban
5: siban
6: yiwu
7: yahen
8: zhehen
9: yaozhe
训练数据配置如下:
# Dataset
path: ./dataset
train:- images/train
val:- images/test
test:- images/test# Classes
names:0: chongkong1: hanfeng2: yueyawan3: shuiban4: youban5: siban6: yiwu7: yahen8: zhehen9: yaozhe
模型文件如下:
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters
nc: 10 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
anchors:- [10,13, 16,30, 33,23] # P3/8- [30,61, 62,45, 59,119] # P4/16- [116,90, 156,198, 373,326] # P5/32#Backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2[-1, 1, Conv, [128, 3, 2]], # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]], # 3-P3/8[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]], # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]], # 9]#Head
head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 6], 1, Concat, [1]], # cat backbone P4[-1, 3, C3, [512, False]], # 13[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 4], 1, Concat, [1]], # cat backbone P3[-1, 3, C3, [256, False]], # 17 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 14], 1, Concat, [1]], # cat head P4[-1, 3, C3, [512, False]], # 20 (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],[[-1, 10], 1, Concat, [1]], # cat head P5[-1, 3, C3, [1024, False]], # 23 (P5/32-large)[[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)]
默认执行100次epoch的迭代计算,日志输出如下:
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size90/99 6.85G 0.02526 0.01224 0.0009257 14 640: 100%|██████████| 61/61 [03:18<00:00, 3.25s/it]Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 8/8 [00:17<00:00, 2.20s/it]all 459 705 0.821 0.735 0.776 0.402Epoch GPU_mem box_loss obj_loss cls_loss Instances Size91/99 6.85G 0.02506 0.01192 0.0007306 15 640: 100%|██████████| 61/61 [03:18<00:00, 3.25s/it]Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 8/8 [00:17<00:00, 2.20s/it]all 459 705 0.828 0.768 0.786 0.416Epoch GPU_mem box_loss obj_loss cls_loss Instances Size92/99 6.85G 0.02498 0.01206 0.0009537 10 640: 100%|██████████| 61/61 [03:18<00:00, 3.26s/it]Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 8/8 [00:17<00:00, 2.20s/it]all 459 705 0.8 0.773 0.785 0.417Epoch GPU_mem box_loss obj_loss cls_loss Instances Size93/99 6.85G 0.025 0.0122 0.0009593 19 640: 100%|██████████| 61/61 [03:19<00:00, 3.27s/it]Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 8/8 [00:17<00:00, 2.21s/it]all 459 705 0.826 0.753 0.79 0.419Epoch GPU_mem box_loss obj_loss cls_loss Instances Size94/99 6.85G 0.02482 0.012 0.0006241 13 640: 100%|██████████| 61/61 [03:18<00:00, 3.25s/it]Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 8/8 [00:17<00:00, 2.20s/it]all 459 705 0.799 0.775 0.787 0.422Epoch GPU_mem box_loss obj_loss cls_loss Instances Size95/99 6.85G 0.02466 0.01168 0.0007662 14 640: 100%|██████████| 61/61 [03:18<00:00, 3.25s/it]Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 8/8 [00:17<00:00, 2.20s/it]all 459 705 0.808 0.777 0.785 0.418Epoch GPU_mem box_loss obj_loss cls_loss Instances Size96/99 6.85G 0.02445 0.0119 0.000781 16 640: 100%|██████████| 61/61 [03:18<00:00, 3.25s/it]Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 8/8 [00:17<00:00, 2.21s/it]all 459 705 0.826 0.771 0.789 0.431Epoch GPU_mem box_loss obj_loss cls_loss Instances Size97/99 6.85G 0.02411 0.0119 0.0007069 20 640: 100%|██████████| 61/61 [03:18<00:00, 3.25s/it]Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 8/8 [00:17<00:00, 2.20s/it]all 459 705 0.841 0.745 0.787 0.423Epoch GPU_mem box_loss obj_loss cls_loss Instances Size98/99 6.85G 0.02392 0.01177 0.0007471 15 640: 100%|██████████| 61/61 [03:18<00:00, 3.25s/it]Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 8/8 [00:17<00:00, 2.20s/it]all 459 705 0.838 0.764 0.788 0.417Epoch GPU_mem box_loss obj_loss cls_loss Instances Size99/99 6.85G 0.02369 0.01159 0.0006575 15 640: 100%|██████████| 61/61 [03:18<00:00, 3.26s/it]Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 8/8 [00:17<00:00, 2.20s/it]all 459 705 0.847 0.758 0.787 0.425100 epochs completed in 6.023 hours.
Optimizer stripped from runs/train/yolov5s/weights/last.pt, 14.4MB
Optimizer stripped from runs/train/yolov5s/weights/best.pt, 14.4MBValidating runs/train/yolov5s/weights/best.pt...
Fusing layers...
YOLOv5s summary: 157 layers, 7037095 parameters, 0 gradients, 15.8 GFLOPsClass Images Instances P R mAP50 mAP50-95: 100%|██████████| 8/8 [00:18<00:00, 2.34s/it]all 459 705 0.826 0.771 0.789 0.431chongkong 459 73 0.973 0.977 0.984 0.544hanfeng 459 118 0.918 0.983 0.953 0.576yueyawan 459 71 0.875 0.987 0.961 0.635shuiban 459 79 0.733 0.764 0.779 0.438youban 459 87 0.67 0.747 0.747 0.385siban 459 154 0.767 0.749 0.771 0.402yiwu 459 55 0.592 0.58 0.531 0.215yahen 459 17 1 0.38 0.459 0.233zhehen 459 23 0.86 0.652 0.745 0.317yaozhe 459 28 0.873 0.893 0.96 0.567
Results saved to runs/train/yolov5s
接下来看下结果详情:
【标签类别可视化】
【训练日志可视化】
【混淆矩阵】
【F1值曲线和PR曲线可视化】
【精确率和召回率曲线可视化】
【训练集batch计算实例】
【测试集batch计算实例】
可视化推理实例如下: