探索工业智能检测,基于轻量级YOLOv5s开发构建焊接缺陷检测识别系统

news/2024/11/25 13:22:45/

前面也有讲过将智能模型应用和工业等领域结合起来是有不错市场前景的,比如:布匹瑕疵检测、瓷砖瑕疵检测、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计算实例】

 可视化推理实例如下:


http://www.ppmy.cn/news/378781.html

相关文章

方块赛车(C++)

目录 1. 游戏机制 2. 游戏代码 3. 游戏截图 1. 游戏机制 玩家通过小键盘上的"←"、"→"来控制赛车的移动&#xff0c;以避开马路周围的障碍物&#xff0c;若赛车开出跑道(撞到障碍物)则游戏结束&#xff0c;玩家可按"空格键"重玩或暂停&#…

高智能方程式赛车

看到sum&#xff0c;我们就知道这是一个求和函数&#xff0c;无论是java、javascript还是mysql中&#xff0c;求和是简单的&#xff0c;但在python中&#xff0c;可以进行一些复杂的元组求和&#xff0c;具体是怎样的呢&#xff1f; python中的sum求和函数 1.sum的使用语法 …

一次模拟汽车

对汽车的模拟编写了三个类&#xff1a;汽车&#xff0c;电车电瓶&#xff0c;新能源汽车。其中分别展示了如何“继承”以及“将实例用作属性”。练习类的创建以及运用。 Car类&#xff1a;包含了汽车的基本属性以及公里数的模拟 Bettery类&#xff1a;可以在电池过低时提醒充电…

手势模拟赛车

这个是我看到我一个学长做了这个玩意以后&#xff0c;我也想做着玩一下&#xff0c;我不知道他是怎么做的&#xff0c;但是我的想法很简单&#xff0c;对图像进行处理后&#xff0c;找到图像最大的两个轮廓所在的地方即是两个手的位置&#xff0c;然后比较两个矩形的Y轴坐标&am…

java fc 公路车_F1公路赛车[NES(FC)]

三星 D608系列(240320) D608 707SC 830W A717 A727 B109 B200 B250 B500 B5702C B600 B5712C C210 C3050C S3500C C3610C D706 D788 D808 D810 D820 D828 D838 D848 D880 D888 D900 D908 D908I D988 E2210C E239 E838 E840 E848 E848I E898 E900 E908 E918 E950 E958 F110 F310…

Unity 赛车控制器

脚本挂载在车子上车子需要具有Rigidbody2D组件 其中子物体&#xff1a; wheelFront&#xff1a;车子前轮&#xff0c;有CircleCollider,WheelJoint2D和Rigidbody2D组件 wheelBack&#xff1a;车子后轮&#xff0c;有CircleCollider,WheelJoint2D和Rigidbody2D组件 wheelFro…

F1赛车相关公开数据集

​ F1赛车 一级方程式世界锦标赛&#xff08;1950 - 2022&#xff09; 背景描述 一级方程式&#xff08;又名 F1 或一级方程式&#xff09;是由国际汽车联合会 (FIA) 批准并归一级方程式集团所有的最高级别的单座赛车。自 1950 年首个赛季以来&#xff0c;国际汽联一级方程式世…

1.27 模拟赛

1.队列 编程计算由“*”号围成的下列图形的面积。面积计算方法是统计*号所围成的闭合曲线 中水平线和垂直线交点的数目。 这道题很水&#xff0c;甚至可以不用搜索&#xff0c;直接循环两次就行 #include<bits/stdc.h> using namespace std; inline int read(){int x0,f…