自媒体网站wordpress,网站建设方案服务公司,做宠物网站还有前景嘛,网站内容不显示焊接是一个不陌生但是对于开发来说相对小众的场景#xff0c;在我们前面的博文开发实践中也有一些相关的实践#xff0c;感兴趣的话可以自行移步阅读即可#xff1a;
《轻量级模型YOLOv5-Lite基于自己的数据集【焊接质量检测】从零构建模型超详细教程》
《基于DeepLabV3Pl…焊接是一个不陌生但是对于开发来说相对小众的场景在我们前面的博文开发实践中也有一些相关的实践感兴趣的话可以自行移步阅读即可
《轻量级模型YOLOv5-Lite基于自己的数据集【焊接质量检测】从零构建模型超详细教程》
《基于DeepLabV3Plus实现焊缝分割识别系统》
《基于官方YOLOv4-u5【yolov5风格实现】开发构建目标检测模型超详细实战教程【以自建缺陷检测数据集为例】》
《探索工业智能检测基于轻量级YOLOv8开发构建焊接缺陷检测识别系统》
《探索工业智能检测基于轻量级YOLOv5s开发构建焊接缺陷检测识别系统》
《助力工业焊缝质量检测YOLOv3开发构建工业焊接场景下钢材管道焊缝质量检测识别分析系统》
《助力工业焊缝质量检测YOLOv7【tiny/l/x】不同系列参数模型开发构建工业焊接场景下钢材管道焊缝质量检测识别分析系统》
《助力工业焊缝质量检测基于YOLOv8【n/s/m/l/x】全系列参数模型开发构建工业焊接场景下钢材管道焊缝质量检测识别分析系统》
《助力工业焊缝质量检测基于YOLOv5【n/s/m/l/x】全系列参数模型开发构建工业焊接场景下钢材管道焊缝质量检测识别分析系统》 前面我们做的关于焊接场景数据开发的实践项目大都是基于焊缝质量进行的检测识别少有基于表面焊接缺陷进行检测识别特定产经下小众领域数据本身的采集和标注难度都比较高也进一步限制了这块的工作。
本文主要的目的是想要基于经典的YOLOv5开发构建用于焊接表面缺陷检测的自动化智能检测识别系统首先看下实例效果 本文是选择的是YOLOv5算法模型来完成本文项目的开发构建。相较于前两代的算法模型YOLOv5可谓是集大成者达到了SOTA的水平下面简单对v3-v5系列模型的演变进行简单介绍总结方便对比分析学习: 【YOLOv3】 YOLOv3You Only Look Once version 3是一种基于深度学习的快速目标检测算法由Joseph Redmon等人于2018年提出。它的核心技术原理和亮点如下 技术原理 YOLOv3采用单个神经网络模型来完成目标检测任务。与传统的目标检测方法不同YOLOv3将目标检测问题转化为一个回归问题通过卷积神经网络输出图像中存在的目标的边界框坐标和类别概率。 YOLOv3使用Darknet-53作为骨干网络用来提取图像特征。检测头detection head负责将提取的特征映射到目标边界框和类别预测。 亮点 YOLOv3在保持较高的检测精度的同时能够实现非常快的检测速度。相较于一些基于候选区域的目标检测算法如Faster R-CNN、SSD等YOLOv3具有更高的实时性能。 YOLOv3对小目标和密集目标的检测效果较好同时在大目标的检测精度上也有不错的表现。 YOLOv3具有较好的通用性和适应性适用于各种目标检测任务包括车辆检测、行人检测等。 【YOLOv4】 YOLOv4是一种实时目标检测模型它在速度和准确度上都有显著的提高。相比于其前一代模型YOLOv3YOLOv4在保持较高的检测精度的同时还提高了检测速度。这主要得益于其采用的CSPDarknet53网络结构主要有三个方面的优点增强CNN的学习能力使得在轻量化的同时保持准确性降低计算瓶颈降低内存成本。YOLOv4的目标检测策略采用的是“分而治之”的策略将一张图片平均分成7×7个网格每个网格分别负责预测中心点落在该网格内的目标。这种方法不需要额外再设计一个区域提议网络RPN从而减少了训练的负担。然而尽管YOLOv4在许多方面都表现出色但它仍然存在一些不足。例如小目标检测效果较差。此外当需要在资源受限的设备上部署像YOLOv4这样的大模型时模型压缩是研究人员重新调整较大模型所需资源消耗的有用工具。 优点 速度YOLOv4 保持了 YOLO 算法一贯的实时性能够在检测速度和精度之间实现良好的平衡。 精度YOLOv4 采用了 CSPDarknet 和 PANet 两种先进的技术提高了检测精度特别是在检测小型物体方面有显著提升。 通用性YOLOv4 适用于多种任务如行人检测、车辆检测、人脸检测等具有较高的通用性。 模块化设计YOLOv4 中的组件可以方便地更换和扩展便于进一步优化和适应不同场景。 缺点 内存占用YOLOv4 模型参数较多因此需要较大的内存来存储和运行模型这对于部分硬件设备来说可能是一个限制因素。 训练成本YOLOv4 模型需要大量的训练数据和计算资源才能达到理想的性能这可能导致训练成本较高。 精确度与速度的权衡虽然 YOLOv4 在速度和精度之间取得了较好的平衡但在极端情况下例如检测高速移动的物体或复杂背景下的物体时性能可能会受到影响。 误检和漏检由于 YOLOv4 采用单一网络对整个图像进行预测可能会导致一些误检和漏检现象。
【YOLOv5】 YOLOv5是一种快速、准确的目标检测模型由Glen Darby于2020年提出。相较于前两代模型YOLOv5集成了众多的tricks达到了性能的SOTA 技术原理 YOLOv5同样采用单个神经网络模型来完成目标检测任务但采用了新的神经网络架构融合了领先的轻量级模型设计理念。YOLOv5使用较小的骨干网络和新的检测头设计以实现更快的推断速度并在不降低精度的前提下提高目标检测的准确性。 亮点 YOLOv5在模型结构上进行了改进引入了更先进的轻量级网络架构因此在速度和精度上都有所提升。 YOLOv5支持更灵活的模型大小和预训练选项可以根据任务需求选择不同大小的模型同时提供丰富的数据增强扩展、模型集成等方法来提高检测精度。YOLOv5通过使用更简洁的代码实现提高了模型的易用性和可扩展性。
训练数据配置文件如下
# Dataset
path: ./dataset
train:- images/train
val:- images/test
test:- images/test# Classes
names:0: BeadDefect1: BlowHole2: OverCurrent3: Spatter4: UnderCut
简单看下实例数据情况 实验截止目前本文将YOLOv5系列五款不同参数量级的模型均进行了开发评测接下来看下模型详情
# Ultralytics YOLO , AGPL-3.0 license
# YOLOv5 object detection model with P3-P5 outputs. For details see https://docs.ultralytics.com/models/yolov5# Parameters
nc: 2 # number of classes
scales: # model compound scaling constants, i.e. modelyolov5n.yaml will call yolov5.yaml with scale n# [depth, width, max_channels]n: [0.33, 0.25, 1024]s: [0.33, 0.50, 1024]m: [0.67, 0.75, 1024]l: [1.00, 1.00, 1024]x: [1.33, 1.25, 1024]# YOLOv5 v6.0 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]# YOLOv5 v6.0 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]], # Detect(P3, P4, P5)]
在实验训练开发阶段所有的模型均保持完全相同的参数设置等待训练完成后来整体进行评测对比分析。
【F1值曲线】 F1值曲线是一种用于评估二分类模型在不同阈值下的性能的可视化工具。它通过绘制不同阈值下的精确率Precision、召回率Recall和F1分数的关系图来帮助我们理解模型的整体性能.F1分数是精确率和召回率的调和平均值它综合考虑了两者的性能指标。F1值曲线可以帮助我们确定在不同精确率和召回率之间找到一个平衡点以选择最佳的阈值。 【loss曲线】 【Precision曲线】 精确率曲线Precision-Recall Curve是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。精确率Precision是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率Recall是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。 【Recall曲线】 召回率曲线Recall Curve是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。召回率Recall是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度Sensitivity或真正例率True Positive Rate。 整体对比分析来看不同参数量级的模型在该缺陷数据集上都没有达到很好的效果整体的指标在模型的训练过程中变动幅度非常大一方面是原始数据集中不同类别分布严重不均衡另一方面是小目标的比例比较大部分目标之间的区分度不高实际数据在标注过程中密度比较大。
这里我们就以x系列的模型为例看下结果详情。
【Batch实例】 【PR曲线】 【数据分布可视化】 不同目标类别的数据量极度不均衡。
【混淆矩阵】 【训练可视化】 【离线推理实例】 感兴趣的话也都可以试试看
如果自己不具备开发训练的资源条件或者是没有时间自己去训练的话这里我提供出来对应的训练结果可供自行按需索取。
单个模型的训练结果默认YOLOv5s
全系列五个模型的训练结果总集