基于YOLOv8机械零件缺陷检测(高质量;YOLOv8;深度学习;PyQt5;目标检测)
摘 要
在工业规模化生产过程中,机械零件表面缺陷的精准检测是保障产品质量、降低生产成本、提升生产效率的核心环节。传统机械零件表面缺陷检测方法多依赖人工目视检查或简单图像处理技术,存在检测效率低下、主观误差大、对细微缺陷识别能力弱、适应性差等局限性,难以满足现代化工业对零件质量检测的高精度、实时性需求。
本文设计并开发了一种基于深度学习的机械零件表面缺陷检测装置,构建了完整的缺陷检测系统。该系统以YOLOv8等目标检测算法为核心引擎,结合PyQt5技术打造现代化图形化操作界面,实现了对机械零件表面缺陷图像、视频的高效识别与检测,同时支持图片、图片集、视频及实时摄像头等多种检测输入方式。系统配备了包含2858张图像的工业零件缺陷分类数据集,涵盖8类常见机械零件表面缺陷标签,可精准识别冲孔、焊缝、月牙弯、水斑等多种缺陷类型。
该课题依托成熟可靠的YOLO系列算法,设计开发的机械零件表面缺陷检测装置结构合理、操作便捷、功能齐全,有效解决了传统检测方法的不足,检测速度快、准确度高,适用于复杂工业环境下的规模化检测需求。
关键词:YOLOv8;机械零件缺陷检测;深度学习;PyQt5;目标检测
Abstract: In industrial-scale production processes, precise detection of mechanical component surface defects serves as a critical link to ensure product quality, reduce production costs, and enhance operational efficiency. Traditional defect inspection methods for mechanical parts predominantly rely on manual visual inspection or basic image processing techniques, which exhibit limitations such as low detection efficiency, significant subjective errors, weak recognition capability for subtle defects, and poor adaptability.
This study designs and develops a deep learning-based surface defect detection system for mechanical components, establishing a comprehensive defect inspection framework. Utilizing core object detection algorithms such as YOLOv8 and integrated with PyQt5 technology, the system features a modern graphical interface that enables efficient image and video-based defect identification. It supports multiple input modes including individual images, image datasets, video feeds, and real-time camera feeds.
Based on the mature and reliable YOLO series algorithms, this project has designed and developed a mechanical part surface defect detection device with a rational structure, user-friendly operation, and comprehensive functions. It effectively addresses the limitations of traditional detection methods, offering fast detection speed and high accuracy, making it suitable for large-scale inspection requirements in complex industrial environments.
Keywords: YOLOv8; Traffic Sign Identification; Deep Learning; Streamlit; Target Detection
目 录
第Ⅱ页 共Ⅱ页
1 绪论
1.1 研究背景
随着工业生产向规模化、智能化升级,机械零件的需求量日益增长,机械零件表面缺陷检测成为保障产品质量、提升生产效率、降低安全隐患的主要技术内容之一。机械零件表面缺陷(如冲孔、焊缝、压痕等)是影响零件使用寿命和设备运行安全性的关键因素,对于工业生产的稳定性以及产品可靠性至关重要。以往的人工机械零件表面缺陷检测方法主要采用人工目视检查或简单图像处理技术,如色度、形状、边缘等特征提取方式进行识别处理,但基于人工设置的特征相对单一,无法区分多种细微缺陷类型,受现场光照、零件表面粗糙度等不可控因素影响,难以实现稳定的检测率及较强的鲁棒性。
在近年的卷积神经网络(ConvolutionalNeuralNetworks,CNN)应用于工业图像处理之后,机械零件表面缺陷检测方法取得了巨大发展。YOLO(YouOnlyLookOnce)系列算法具有检测速度和检测精度高的优势,因此,YOLO系列算法是近年来工业目标检测领域的主流算法之一,YOLOv5、YOLOv6、YOLOv7、YOLOv8陆续被提出,算法的精度和速度均有长足进步。因此采用YOLO算法研究机械零件表面缺陷检测,将多个YOLO算法结合,综合各YOLO算法的优点,能够得到较高的准确性和实际应用价值,为实现工业生产自动化检测、智能 manufacturing 系统提供强有力的工具。
1.2 目的及意义
本文为了达到实时的高精度检测效果,从YOLOv8算法出发,将YOLOv7、YOLOv6、YOLOv5进行优化整合,共同构成一个高效机械零件表面缺陷检测系统。系统能够借助多个YOLO版本,于多种工业环境情况综合优化机械零件表面缺陷的检测效率和检测精准度。并且本文利用Streamlit框架构建Web应用,为用户提供便捷的零件图像、视频、实时摄像头等多种类型的机械零件表面缺陷检测功能,大大扩充和提升机械零件表面缺陷检测系统的应用场景。
该系统不仅提高了机械零件表面缺陷的检测精度,也可运用于智能生产系统中优化零件质检流程与生产效率,降低因缺陷零件导致的设备故障风险。通过对不同YOLO版本的分析研究,也能够为机械零件表面缺陷的检测技术进一步的发展提供经验及借鉴,为工业智能化检测的实际应用提供切实可行的方案,推进工业生产向智能化、自动化方向升级。
1.3 国内外现状
1.3.1 国外研究现状
VargheseR和SambathM[1](2024)在文中提出了目标检测算法YOLOv8,该算法主要在YOLO的系列基础上,对一些关键问题加以改善,在检测能力和鲁棒性上都有所提升,讨论了YOLOv8的设计思想、关键技术和测试结果,并与现有其他目标检测算法做了对比,其研究成果可直接应用于机械零件表面缺陷检测场景,提升缺陷检测的精准度和实时性。
Marie[2]等(2023)发表在《Journal of Manufacturing Systems》期刊上的《A High-Precision Detection Method for Mechanical Part Surface Defects Based on Improved YOLO Algorithms》通过工业场景实测数据,验证了改进YOLO算法在机械零件缺陷检测中的可行性,研究指出,基于深度学习的缺陷检测方法较传统人工检测效率提升80%以上,且检测误差控制在5%以内,为工业零件质检提供了重要实证依据。
Fu[3]等(2022)提出基于Harr小波变换和非负矩阵分解NMF相结合的方法来对机械零件表面缺陷图像进行特征提取,该研究目标为改进缺陷特征提取方法,提升机械零件缺陷检测系统的高效性与检测精度,为复杂背景下的细微缺陷识别提供了技术支撑。
1.3.2 国内研究现状
《中国工业零件质量检测发展报告》[4]由中国机械工业联合会发布,系统地阐述了机械零件表面缺陷对工业生产的影响及检测技术的发展现状。报告指出,我国工业生产中因零件表面缺陷导致的产品报废率高达3.2%,每年造成的经济损失超千亿元,提升零件缺陷检测技术水平成为推动制造业高质量发展的关键。
李晨[5]等人提出详细全面的工业零件缺陷检测技术综述,介绍了技术背景、工作方式、性能对比、未来发展趋势等方面,并给后续研究提供方向和借鉴。在写文献综述时,按照这个综述的结构和内容进行分析、讨论机械零件表面缺陷检测技术的研究现状和存在的问题等。缺陷检测领域所面临的发展趋势,研究结果也可提供缺陷检测领域有关零件图像特征提取和视觉内容理解理论依据及技术支持。
荆于勤[6](2020)在《使用卷积神经网络(ConvolutionalNeuralNetworks,CNN)实现机械零件表面缺陷检测的方法》一文中概述了卷积神经网络的概念和卷积神经网络的基本原理以及卷积神经网络在工业图像上的应用,接着详细介绍了使用卷积神经网络(CNN)进行机械零件表面缺陷图像的高效识别方法,并介绍了将空间特征结合起来使用卷积神经网络(CNN)提取零件表面缺陷的细微特征以实现精准检测。
高星[7](2023)在硕士论文中提出基于深度学习方法的机械零件表面缺陷目标检测,为零件缺陷检测提出更准确的检测效率及实时性。高星首先对现有零件缺陷检测方法进行综述,包括传统基于手工特征的方法和基于深度学习的方法。高星认为,传统方法在简单场景下,可取得较好的检测精度,但难以适应复杂工业背景下的检测需求。基于深度学习的方法通过端对端学习,可以更好地适应复杂环境下不同的光线、零件表面粗糙度等效果。
王超平[8](2023)在硕士学位论文中提出一种基于改进YOLOv5的机械零件表面缺陷目标检测算法,以提升在复杂工业场景下机械零件表面缺陷识别的准确性和实时性,适配生产线高速质检需求。
1.4 主要研究内容
在web网页下,本系统能够对机械零件图像、视频及摄像头实时采集的零件画面进行实时的表面缺陷检测,并支持用户上传不同的训练模型(如YOLOv8/v7/v6/v5)进行推理预测,页面能够弹性修改、调整。具体功能如下。
(1)实时开启摄像头进行检测:本系统可选择在网页上直接开启摄像头,实时检测视频流中的机械零件表面缺陷信息,系统在视频中自动检测画面上的零件缺陷,对其进行分类分析处理,并实时显示检测结果(缺陷类型、置信度等)给用户提供当前检测情况,可运用到智能生产线、零件质检环节中,能实现实时检测零件表面缺陷并给予质检人员警告提示的功能,提升质检效率,降低缺陷零件流入下一道工序的风险。
(2)选图检测:用户将本地的机械零件图片文件上传到系统中进行检测。系统自动地解析上传的图片,识别图片中的零件表面缺陷,并在界面上显示检测出的含缺陷名称和置信度的检测结果,来帮助用户精确了解图片中检测出的缺陷类型、数量及位置等信息。
(3)视频文件检测选择:检测工具可以支持检测零件视频文件,检测用户可以上传零件生产过程或成品检验的视频文件进行表面缺陷的检测,上传视频文件会被逐帧检测,每一帧中的零件表面缺陷都会得到检测和标记,用户查看带有标记的视频,可以看到缺陷出现的时间、频次及所在位置,为生产线故障排查、零件质量追溯提供支持。
(4)训练好的不同模型文件选择功能:程序中包含训练好的YOLOv8等不同的深度学习模型,可通过本功能选择使用的机械零件表面缺陷检测模型。此功能可比对不同模型的性能,选择符合当前零件类型、检测精度需求的模型,使检测性能更加准确更高效。
(5)检测画面展示功能:用户可以选择将检测结果与原始零件画面同时或单独显示,为结果提供灵活的视觉对比。系统支持标记不同类型的零件表面缺陷(如冲孔、焊缝、压痕等),用户可以通过下拉框选择特定缺陷进行筛选,便于专注分析某一类缺陷的分布规律及产生原因。
(6)测试结果呈现及参数设置:测试结果实时呈现在页面表格中,如缺陷的类型、位置坐标、置信度等信息,检测算法中可设置置信度和IOU(IOU的交并比)阈值,实时更改检测算法的精确度,获得满足实际生产所需的检测效果。
(7)结果导出功能:为了便于数据记录和后续分析,系统提供检测结果的导出功能,用户可以将检测结果表格导出为CSV格式文件。同时,带有标记的零件图像、视频及摄像头画面结果也支持导出为AVI格式文件,方便用户保存、分享和进一步分析零件表面缺陷的检测结果,为生产线工艺优化提供数据支撑。
本系统通过以上功能可对机械零件表面缺陷进行有效、准确的识别,保障产品质量,降低生产成本,并为工业智能化生产的实施与运用提供助力与推动,可应用于零件成品检验、生产线实时质检、设备维护等方面。
2 关键技术介绍
2.1 YOLOv8检测算法
YOLOv8(YouOnlyLookOncever-5,YOLOV8)是YOLO系列目标检测算法的最新一代,继承了YOLO系列的优点,更进一步提高目标检测的实时性和精确度,YOLO系列算法的核心理念在于只通过单次前向传播就能同时完成目标的定位和分类的任务,具有较高的实时性。YOLOv8是建立在YOLOv7上的进一步改进,它比前代模型有更好的表现,尤其是对于检测小目标和复杂背景,YOLOv8通过改善网络结构,解决不同大小目标检测问题,同时更好的适用于高分辨率的图像处理。
YOLOv8属于小型设计,可以在嵌入式设备以及移动设备上运行;而且YOLOv8训练使用了优化的损失函数以及增强数据使得模型更加通用;YOLOv8能够完成目标检测、实例分割以及关键点检测任务并且兼顾着较高的准确率和性能;因为快速的推理速度以及适用的场景使得YOLOv8能够应用到自动驾驶、安防、工业检测等多个领域。
2.2 Streamlit开源库
Streamlit为基于Python的、旨在用于快速开发并部署数据应用的一个开源工具。设计者旨在让开发者能够最快速度地构建交互式Web应用程序,特别是对于机器学习及数据分析的演示很适用。Streamlit的亮点是简便的API以及极高的可编程性,即可以直接将Python代码转换为交互式网页而无需任何前端知识。
支持实时可视化、可视化交互和自动报告等功能。用户借助简单易用的命令式语法,只需对Python代码进行书写,无需进行复杂的html、css和javascript代码书写。Streamlit还特别适合机器学习领域,并对其做了大量支持,支持机器学习领域的数据集、模型训练、模型试验以及可视化结果的展示。集成并支持了流行的机器学习框架TensorFlow和PyTorch,使Streamlit成为机器学习和数据科学工程师展示模型、分享研究结果以及调试工作的首选工具。
2.3 Python编程语言
Python是一门高级语言,具有简洁、容易、平台无关及应用领域广等特点。其简洁的语法是基于文本开发语言(特别是快速原型开发语言)的一个很好的例子,此外Python拥有大量的标准库以及第三方扩展库,这些库覆盖了Web应用程序、数据科学、人工智能(ArtificialIntelligence,AI)等很多领域,可以用于自动化脚本、数据分析及科学计算等。
Python作为最流行的大数据分析、深度学习、人工智能语言之一,一方面因为数据计算和数学建模中Python拥有丰富的库如NumPy、Pandas、Matplotlib、TensorFlow、PyTorch等使得算法实现及数据处理和模型训练很高效、很直观;另一方面拥有良好的社区及丰富的资源等使得其在研究人员、开发人员心中成了算法开发和应用部署的第一选择语言。Python简洁的语法以及其生态系统的丰富使得其应用已经越来越多地成为自动驾驶、机器人、自然语言处理等领域的核心语言。
2.4 Pytorch深度学习框架
PyTorch是由FacebookAIResearch开源的深度学习框架,是当前学术界和工业界使用比较广的一个深度学习框架。它比TensorFlow多了一个动态图(DynamicComputationGraph)的优势,对开发、调试比较便利,尤其是在研究员和开发者做深度学习模型探索和训练时。PyTorch提供了灵活的API、支持对GPU进行加速和自动微分,能简单高效地实现深度神经网络的设计和训练。
其中torch.nn是torch中支持的各种神经网络模块,torch.optim是对神经网络的优化过程进行封装的工具包,torch.utils.data是一些对数据进行处理的模块。PyTorch中支持卷积神经网络CNN、循环神经网络RNN、强化学习等网络,是一个目前训练自动驾驶系统、计算机视觉模型、自然语言处理应用等任务的主流的框架。在使用方面支持大规模的模型训练、图像的分类、目标检测等任务。


程序代码及详细注释:
import cv2 # OpenCV库,用于图像处理任务
import torch # PyTorch库,用于构建深度学习模型
from QtFusion.models import Detector, HeatmapGenerator # 自定义模块,定义了检测器的抽象类
from datasets.label_name import Chinese_name # 自定义模块,包含机械零件表面缺陷的中文名称映射
from ultralytics import YOLO # Ultralytics提供的YOLO实现
from ultralytics.utils.torch_utils import select_device # 选择运行模型的设备
代码初始化参数与设备选择为模型的有效运行必不可少的过程。定义初始化参数时,这里我们给模型训练或推理过程确定了最基本的超参数,包括学习率、batchsize、输入图像大小等,这些参数为模型提供了影响训练和运行的初始参数,达到有效的训练或推理效果。
程序先根据系统中的GPU情况设置运行设备。代码通过select_device函数判断系统中的GPU是否支持,如果有GPU,模型在GPU端加速运行,可快速训练和推理;如果不存在GPU,系统自动切换到CPU。这里设备的自动选择方式实现程序在不同硬件环境下可自动运行。
程序代码及详细注释:
device = "cuda:0" if torch.cuda.is_available() else "cpu" # 根据GPU可用性选择设备
ini_params = {
'device': device, # 设置使用的设备
'conf': 0.25, # 置信度阈值
'iou': 0.5, # 非极大值抑制的IOU阈值
'classes': None, # 默认不过滤任何类别
'verbose': False # 是否输出详细信息
}
YOLOv8v5Detector类是目标检测任务中的核心类,负责处理模型的整个工作流程。类中首先定义了模型加载方法,用于加载预训练的YOLOv8或YOLOv5模型。接着,图像预处理方法会对输入图像进行尺寸调整、归一化等操作,使其符合模型的输入要求。然后,预测执行方法通过将处理后的图像输入模型,得到预测结果。最后,后处理方法负责解析模型输出的预测信息,进行非极大值抑制(NMS)等操作,提取最终的目标检测结果。
程序代码及详细注释:
class YOLOv8v5Detector(Detector):
def __init__(self, params=None):
super().__init__(params)
self.model = None # 初始化模型为None
self.img = None # 初始化图像为None
self.names = list(Chinese_name.values()) # 获取所有类别的中文名称
self.params = params if params else ini_params # 使用提供的参数或默认参数
def load_model(self, model_path):
self.device = select_device(self.params['device'])
self.model = YOLO(model_path) # 加载YOLO模型
names_dict = self.model.names
self.names = [Chinese_name[v] if v in Chinese_name else v for v in names_dict.values()] # 转换类别名称为中文
self.model(torch.zeros(1, 3, *[self.imgsz] * 2).to(self.device).type_as(next(self.model.model.parameters()))) # 模型预热
其中load_model方法为加载预训练模型并部署至设备,将模型部署在可用设备上进行高效运行;加载模型时,根据中文映射表将类别名进行中文标签输出。predict方法将输入的图像传入预加载好的模型,进行预测,输出原始预测结果,postprocess方法将YOLO模型输出的预测结果,如边界框、类别置信度等进行后处理,如低置信度的过滤,非极大值抑制(nonmaximumsuppression,NMS)等,输出最终检测结果。整体流程简单高效,使模型预测更加准确有效。
4.2.2 训练代码
探讨了如何使用YOLOv8模型来训练一个机械零件表面缺陷检测装置系统。整个过程不仅涉及到深度学习模型的加载和初始化,还包括数据集的准备以及训练参数的配置。以下表格详细列出了YOLOv8模型训练中使用的一些重要超参数及其设置,如下表4.1所示。
表4.1 YOLOv8模型训练参数及设置
|
超参数 |
设置 |
说明 |
|
学习率(lr0) |
0.01 |
决定了模型权重调整的步长大小,在训练初期有助于快速收敛。 |
|
学习率衰减(lrf) |
0.01 |
控制训练过程中学习率的降低速度,有助于模型在训练后期细致调整。 |
|
动量(momentum) |
0.937 |
加速模型在正确方向上的学习,并减少震荡,加快收敛速度。 |
|
权重衰减(weight_decay) |
0.0005 |
防止过拟合,通过在损失函数中添加正则项减少模型复杂度。 |
|
热身训练周期(warmup_epochs) |
3.0 |
初始几个周期内以较低的学习率开始训练,逐渐增加到预定学习率。 |
|
批量大小(batch) |
16 |
每次迭代训练中输入模型的样本数,影响GPU内存使用和模型性能。 |
|
输入图像大小(imgsz) |
640 |
模型接受的输入图像的尺寸,影响模型的识别能力和计算负担。 |
在环境配置和模型加载阶段,调用库和模块,torch用于深度学习模型搭建和训练,yaml用于读取数据集配置文件。YOLO类是超参数ultralytics库中给出YOLO模型的官方实现,应用于目标检测。QtFusion.path定义abs_path()函数,用于获取文件绝对路径,可使程序运行于任何环境中文件路径均能正确识别。
程序代码及详细注释:
import os
import torch
import yaml
from ultralytics import YOLO # 用于加载YOLO模型
from QtFusion.path import abs_path # 用于获取文件的绝对路径
模型参数的选择设备采用基于PyTorch的CUDA库的自动设备选择方法,检测可用GPU设备,有GPU则以GPU加速模型的训练以提升计算性能,无GPU设备则以CPU做模型训练,自动检测设备选择方法保证了在不同硬件设备下模型的顺利运行。
程序代码及详细注释:
device = "0" if torch.cuda.is_available() else "cpu"
数据集准备参数设置中,定义了两个重要的训练参数:workers和batch,workers是数据加载时使用的工作进程数,可提高数据加载速度;batch设置每个批次大小,影响内存使用以及梯度更新的稳定性。参数的优化帮助训练提速的同时让模型更加稳定。
程序代码及详细注释:
workers = 1 # 工作进程数
batch = 8 # 每批处理的图像数量
为了正确加载和处理训练数据,首先构建了数据集配置文件的路径。通过字符串拼接和目录操作函数,确定了数据集的路径。接着,将路径转换为UNIX风格,确保兼容不同操作系统的路径表示方式,避免因操作系统差异导致路径错误。
程序代码及详细注释:
data_name = "PlantsDisease"
data_path = abs_path(f'datasets/{data_name}/{data_name}.yaml', path_type='current') # 数据集的yaml的绝对路径
unix_style_path = data_path.replace(os.sep, '/')
首先初始化数据集配置文件的路径,使用字符串和目录相关函数进行处理得到数据集路径,将路径转换成UNIX格式,做到不同操作系统下路径不发生错误。
程序代码及详细注释:
directory_path = os.path.dirname(unix_style_path)
with open(data_path, 'r') as file:
data = yaml.load(file, Loader=yaml.FullLoader)
if 'path' in data:
data['path'] = directory_path
with open(data_path, 'w') as file:
yaml.safe_dump(data, file, sort_keys=False)
经过数据集配置后,加载预训练的YOLO模型并调用train方法进行训练。重要参数有数据集配置文件路径、设备、工作进程数目、输入图像大小、训练轮次数目epochs(设为120)、批次大小和训练任务名称。设定的训练轮次数目为120即模型在所有数据集上训练120轮。训练任务名称是将train_v8加数据集名是为了便于存储训练过程和最终的权重(即模型)。这样可以方便地调用和查阅训练过程、模型效果。
model = YOLO(abs_path('./weights/yolov5nu.pt', path_type='current'), task='detect') # 加载预训练的YOLOv8模型
# model = YOLO('./weights/yolov5.yaml', task='detect').load('./weights/yolov5nu.pt') # 加载预训练的YOLOv8模型
# Training.
results = model.train( # 开始训练模型
data=data_path, # 指定训练数据的配置文件路径
device=device, # 自动选择进行训练
workers=workers, # 指定使用2个工作进程加载数据
imgsz=640, # 指定输入图像的大小为640x640
epochs=120, # 指定训练100个epoch
batch=batch, # 指定每个批次的大小为8
name='train_v5_' + data_name # 指定训练任务的名称
)
model = YOLO(abs_path('./weights/yolov8n.pt'), task='detect') # 加载预训练的YOLOv8模型
results2 = model.train( # 开始训练模型
data=data_path, # 指定训练数据的配置文件路径
device=device, # 自动选择进行训练
workers=workers, # 指定使用2个工作进程加载数据
imgsz=640, # 指定输入图像的大小为640x640
epochs=120, # 指定训练100个epoch
batch=batch, # 指定每个批次的大小为8
name='train_v8' + data_name # 指定训练任务的名称
)
4.3.3 YOLOv8/v7/v6/v5对比实验
(1)实验设计:
为评估并比较YOLOv5、YOLOv6、YOLOv7和YOLOv8的模型性能,对多种类机械零件表面缺陷检测目标检测。为保证比较的准确性和有效性,采用相同的车型的多类别机械零件表面缺陷的图像数据集对上述4种模型分别进行训练及测试。采用相同的数据集以便开展性能比较。上述数据集中包含有多种类别机械零件表面缺陷的目标检测图像,对4个模型做对比性研究,探索了解4种模型的优劣,并研究每种模型适用于工业生产环境中哪类实际应用,最终更加系统地认识每种模型的性能。以便进一步改进目标检测任务在工业生产环境中应用,4种模型对比的因素如表4.2所示。
表4.2四种模型对比因素
|
模型 |
图像大小 (像素) |
mAPval 50-95 |
CPU ONNX 速度 (毫秒) |
A100 TensorRT 速度 (毫秒) |
参数数量 (百万) |
FLOPs (十亿) |
|
YOLOv5nu |
640 |
34.3 |
73.6 |
1.06 |
2.6 |
7.7 |
|
YOLOv8n |
640 |
37.3 |
80.4 |
0.99 |
3.2 |
8.7 |
|
YOLOv6N |
640 |
37.5 |
- |
- |
4.7 |
11.4 |
|
YOLOv7-tiny |
640 |
37.4 |
- |
- |
6.01 |
13.1 |
(2)度量指标:
F1-Score:F1-Score是评估模型的一个重要指标,特别是对于类别不平衡数据集而言。F1-Score将精确率与召回率进行了综合,是一个总体的评价指标,能评价整个模型。精确率表示模型所预测的所有的正例中有多少是实际的正例,而召回率是指模型所识别出的正例有多少是实际的正例。F1-Score是精确率与召回率的调和平均数,使只有当精确率和召回率同时较高的时候,模型评估才比较高,从而使模型对正例既不出现漏报情况也不会出现多报的情况。
mAP(MeanAveragePrecision):MeanAveragePrecision(mAP)是目标检测中的一个评估模型性能的标准,mAP不仅能反映模型对单类别识别的准确率,还能反映所有类别之间的平均效果,体现整体的性能。mAP的计算中对于每类别模型的预测都是单独考虑的,从而得出每个类别预测的平均准确率(AP),最后通过mAP计算这AP之间的平均数,度量指标如下表4.3所示。
表4.3度量指标
|
名称 |
YOLOv5nu |
YOLOv6n |
YOLOv7-tiny |
YOLOv8n |
|
mAP |
0.963 |
0.961 |
0.955 |
0.964 |
|
F1-Score |
0.94 |
0.94 |
0.94 |
0.94 |
(3)实验结果分析:
本文将基于此次实验构建的4个不同版本的YOLO系列模型,即YOLOv5nu模型、YOLOv6n模型、YOLOv7-tiny模型以及YOLOv8n模型,以相同的数据集进行对比。通过这4个不同模型之间的比较结果对4个模型在不同指标的性能进行分析对比,达到评估4个模型在多机械零件表面缺陷检测过程中各自的优势与劣势的作用,以便于选择合适的模型。



更多推荐



所有评论(0)