网站设置成黑白,?]后台的网站可以备案吗,wordpress 插件全部消失,国外平面设计教程网站传统作业场景下电力设备的运维和维护都是人工来完成的#xff0c;随着现代技术科技手段的不断发展#xff0c;基于无人机航拍飞行的自动智能化电力设备问题检测成为了一种可行的手段#xff0c;本文的核心内容就是基于YOLOv7来开发构建电力设备螺母缺销检测识别系统#xf…传统作业场景下电力设备的运维和维护都是人工来完成的随着现代技术科技手段的不断发展基于无人机航拍飞行的自动智能化电力设备问题检测成为了一种可行的手段本文的核心内容就是基于YOLOv7来开发构建电力设备螺母缺销检测识别系统首先看下实例效果 这里有别于前文《无人机助力电力设备螺母缺销智能检测识别python基于YOLOv7开发构建电力设备螺母缺销高分辨率图像小目标检测系统》
前文主要侧重高分辨率图像和小目标这两个关键的任务点而本文则在是子图的基础上直接开发构建目标检测模型完成推理计算的。
数据集如下所示 本文一共开发了两款不同参数量级的检测模型分别是n系列模型和s系列的模型。
训练数据配置文件如下所示
# Dataset
path: ./dataset
train:- images/train
val:- images/test
test:- images/test# Classes
names:0: DefectPin1: Nut2: NormalPin
yolov5n模型文件如下所示
# YOLOv5 by Ultralytics, GPL-3.0 license# Parameters
nc: 3 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.25 # 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# 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, anchors]], # Detect(P3, P4, P5)]yolov5s模型文件如下所示
# YOLOv5 by Ultralytics, GPL-3.0 license# Parameters
nc: 3 # 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)]在训练阶段默认保持完全相同的训练参数设置等待训练完成后来整体对比分析结果。
【Precision曲线】 精确率曲线Precision-Recall Curve是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。 精确率Precision是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率Recall是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。 绘制精确率曲线的步骤如下 使用不同的阈值将预测概率转换为二进制类别标签。通常当预测概率大于阈值时样本被分类为正例否则分类为负例。 对于每个阈值计算相应的精确率和召回率。 将每个阈值下的精确率和召回率绘制在同一个图表上形成精确率曲线。 根据精确率曲线的形状和变化趋势可以选择适当的阈值以达到所需的性能要求。 通过观察精确率曲线我们可以根据需求确定最佳的阈值以平衡精确率和召回率。较高的精确率意味着较少的误报而较高的召回率则表示较少的漏报。根据具体的业务需求和成本权衡可以在曲线上选择合适的操作点或阈值。 精确率曲线通常与召回率曲线Recall Curve一起使用以提供更全面的分类器性能分析并帮助评估和比较不同模型的性能。 【Recall曲线】 召回率曲线Recall Curve是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。 召回率Recall是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度Sensitivity或真正例率True Positive Rate。 绘制召回率曲线的步骤如下 使用不同的阈值将预测概率转换为二进制类别标签。通常当预测概率大于阈值时样本被分类为正例否则分类为负例。 对于每个阈值计算相应的召回率和对应的精确率。 将每个阈值下的召回率和精确率绘制在同一个图表上形成召回率曲线。 根据召回率曲线的形状和变化趋势可以选择适当的阈值以达到所需的性能要求。 通过观察召回率曲线我们可以根据需求确定最佳的阈值以平衡召回率和精确率。较高的召回率表示较少的漏报而较高的精确率意味着较少的误报。根据具体的业务需求和成本权衡可以在曲线上选择合适的操作点或阈值。 召回率曲线通常与精确率曲线Precision Curve一起使用以提供更全面的分类器性能分析并帮助评估和比较不同模型的性能。 【F1值曲线】 F1值曲线是一种用于评估二分类模型在不同阈值下的性能的可视化工具。它通过绘制不同阈值下的精确率Precision、召回率Recall和F1分数的关系图来帮助我们理解模型的整体性能。 F1分数是精确率和召回率的调和平均值它综合考虑了两者的性能指标。F1值曲线可以帮助我们确定在不同精确率和召回率之间找到一个平衡点以选择最佳的阈值。 绘制F1值曲线的步骤如下 使用不同的阈值将预测概率转换为二进制类别标签。通常当预测概率大于阈值时样本被分类为正例否则分类为负例。 对于每个阈值计算相应的精确率、召回率和F1分数。 将每个阈值下的精确率、召回率和F1分数绘制在同一个图表上形成F1值曲线。 根据F1值曲线的形状和变化趋势可以选择适当的阈值以达到所需的性能要求。 F1值曲线通常与接收者操作特征曲线ROC曲线一起使用以帮助评估和比较不同模型的性能。它们提供了更全面的分类器性能分析可以根据具体应用场景来选择合适的模型和阈值设置。 【loss对比曲线】 整体对比不难看出来n系列本身参数量级很小最终的精度也是相差s系列模型一截在推理速度上n系列模型优于s系列的模型但是并没有非常大的优势所以最终项目使用的话还是会优先考量s系列的模型如果硬件算力允许的情况下还是可以上探到m系列的模型。