首页 > 其他分享 >基于深度学习的水果新鲜程度检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

基于深度学习的水果新鲜程度检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

时间:2024-04-04 19:45:06浏览次数:19  
标签:水果 训练 检测 模型 新鲜 YOLOv8 v5 v7

摘要:在本博客中,我们深入探讨了基于YOLOv8/v7/v6/v5的水果新鲜程度检测系统。核心上,本系统采用YOLOv8技术并集成了YOLOv7、YOLOv6、YOLOv5的算法,以便进行性能指标的全面对比。文章详细介绍了国内外在此领域的研究现状、如何处理数据集、算法的基本原理、模型的构建与训练过程,并展示了基于Streamlit的交互式Web应用界面设计。在Web应用中,用户可以通过图像、视频以及实时摄像头输入,对水果的新鲜程度进行检测。该系统支持上传不同的训练模型(YOLOv8/v7/v6/v5)以进行推理预测,界面设计友好,便于用户根据需要进行修改。本文还提供了完整的网页设计方案、深度学习模型的代码,以及训练用的数据集的下载链接,旨在为研究人员和开发者提供一套全面的解决方案,以促进水果新鲜程度检测技术的发展和应用。

@

目录

➷点击跳转至文末所有涉及的完整代码文件下载页☇


完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件下载请见演示与介绍视频的简介处给出:➷➷➷
演示与介绍视频https://www.bilibili.com/video/BV1tx421D7zV/
YOLOv8/v7/v6/v5项目合集下载:https://mbd.pub/o/bread/mbd-ZZ2Xm5xv
YOLOv8和v5项目完整资源下载:https://mbd.pub/o/bread/mbd-ZZ2XmZlv
YOLOv7项目完整资源下载:https://mbd.pub/o/bread/mbd-ZZ2XmpZx
YOLOv6项目完整资源下载:https://mbd.pub/o/bread/mbd-ZZ2Xm5dp

        若您想获得博文中涉及的实现完整全部资源文件(包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里已打包上传至博主的面包多平台,见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:


1. 网页功能与效果

        (1)开启摄像头实时检测:本系统允许用户通过网页直接开启摄像头,实现对实时视频流中水果新鲜程度的检测。系统将自动识别并分析画面中的水果新鲜程度,并将检测结果实时显示在用户界面上,为用户提供即时的反馈。

        (2)选择图片检测:用户可以上传本地的图片文件到系统中进行水果新鲜程度新鲜程度检测。系统会分析上传的图片,识别出图片中的水果新鲜程度,并在界面上展示带有水果新鲜程度标签和置信度的检测结果,让用户能够清晰地了解到每个水果新鲜程度状态。

>

        (3)选择视频文件检测:系统支持用户上传视频文件进行水果新鲜程度新鲜程度检测。上传的视频将被系统逐帧分析,以识别和标记视频中每一帧的水果新鲜程度。用户可以观看带有水果新鲜程度新鲜程度检测标记的视频,了解视频中水果新鲜程度的变化。

        (4)选择不同训练好的模型文件:系统集成了多个版本的YOLO模型(如YOLOv8/v7/v6/v5),用户可以根据自己的需求选择不同的模型进行水果新鲜程度新鲜程度检测。这一功能使得用户能够灵活地比较不同模型的表现,以选择最适合当前任务的模型。

        在我们的系统中,实时摄像头检测功能允许用户简单点击一个按钮即可开启摄像头进行实时的水果新鲜程度检测,系统将实时分析捕获的画面,并即时显示检测结果,使得用户能够在无需预处理的情况下快速获得结果。

        接下来,我们提供了选择图片进行检测选择视频文件检测的功能,用户可以上传本地的图片或视频文件至系统中,系统将逐帧分析这些媒体内容,并展示每一帧的水果新鲜程度检测结果。这一功能不仅提高了系统的灵活性,也让用户能够对存档的媒体文件进行后期分析。为了进一步提升系统的适应性和灵活性,我们还引入了模型文件的选择功能,支持用户上传不同的训练好的模型文件(YOLOv8/v7/v6/v5)进行推理预测。这一功能使得用户能够根据自己的需求选择最适合的模型,以获得最佳的检测效果。

        我们的系统还特别设计了多种画面显示模式,通过检测画面与原始画面的显示模式功能,用户可以选择同时显示检测画面和原始画面或者单独显示某一种,这增加了用户对检测过程和结果的掌控感。此外,特定目标的标记与结果显示功能通过下拉框让用户可以选择特定目标进行标记,并单独显示这些目标的检测结果,进一步提升了用户体验。为了方便用户对检测结果进行分析和记录,我们的系统提供了将检测结果整理显示在网页上的表格中的功能,并允许用户动态调整检测算法的置信度阈值和IOU阈值,以优化检测结果。用户还可以通过点击按钮将页面表格中的检测结果导出到CSV文件,或将标记后的图片、视频、摄像头画面结果导出为AVI图像文件,这些功能不仅提高了系统的实用性,也极大地方便了用户的后续使用和分析。

        通过这些精心设计的功能和直观易用的系统界面,我们的系统不仅展现了其在水果新鲜程度检测方面的强大能力,还提供了高效、灵活且用户友好的检测体验,满足了用户在不同场景下的多样化需求。


2. 绪论

2.1 研究背景及意义

        在现代社会,随着人们生活水平的提升,对食品质量尤其是水果新鲜度的要求也随之提高。水果作为日常饮食中不可或缺的一部分,其新鲜程度直接影响到人们的健康和生活质量。然而,由于水果在采摘、储存、运输等过程中易受到物理伤害和微生物侵害,使得其新鲜度快速下降,给消费者和商家带来了极大的挑战。

        传统的水果新鲜程度检测主要依赖人工经验进行判断,这种方法不仅效率低下,而且判断结果主观性强、准确度低,难以满足大规模生产和消费的需求。因此,开发一种快速、准确、客观的自动化水果新鲜程度检测技术,成为食品科学和计算机视觉领域的研究热点。

        近年来,随着人工智能技术的飞速发展,特别是深度学习在图像识别和处理领域的突破,为解决上述问题提供了新的思路。其中,基于深度学习的目标检测算法,如YOLO(You Only Look Once),因其高效和准确性被广泛应用于各种图像处理任务中,包括水果新鲜程度检测。

        YOLO算法的核心优势在于其能够实现实时的目标检测,即在单次查看图像的情况下即可预测出图像中目标的类别和位置,这一特性使得YOLO非常适合于需要快速反应的应用场景,如在线水果新鲜程度检测。随着YOLO算法从v1版本发展到最新的v8版本,其检测速度和准确度都得到了显著提升,为提高水果新鲜程度检测的效率和准确性提供了有力保障。

        水果新鲜程度新鲜程度检测技术的发展不仅对提升农业生产效率、保障食品安全、优化零售管理等方面具有重要的实际意义,同时也推动了人工智能技术在农业和食品领域的应用和发展。

2.2 国内外研究现状

        近年来,随着计算能力的增强和算法的不断优化,深度学习模型在图像识别和处理任务中展现出了卓越的性能,其中YOLO系列、SSD[1]和Mask R-CNN[2]等算法在水果新鲜程度检测上的应用尤为突出。

        YOLO系列算法因其快速和准确的特性,在实时水果新鲜程度检测中得到了广泛应用。自YOLO初版以来,该算法经历了多次迭代,YOLOv4和YOLOv5[3],通过引入更深的网络结构、改进的损失函数和更精细的特征提取机制,显著提高了检测的精度和速度。Bochkovskiy等人在YOLOv4中引入了Mish激活函数,提高了模型对小物体的识别能力,这对于检测大小不一的水果特别重要。而Redmon和Farhadi则通过在YOLOv3中引入多尺度预测,改进了模型对不同尺寸目标的检测性能。

        Transformer[4]架构,尤其是ViT(Vision Transformer),在图像识别领域也取得了令人瞩目的成果。由Dosovitskiy等人在2021年提出,ViT通过将图像分割成一系列的小块(patches),然后利用Transformer结构处理这些图像块,捕捉它们之间的全局依赖关系。这种方法的创新之处在于它摒弃了传统卷积神经网络(CNN)的局部感知机制,而是直接在全图范围内建立长距离的关联,这对于识别不同状态下的水果尤为有用。ViT在ImageNet数据集上取得了优异的表现,验证了其在图像识别任务上的有效性。

        SSD算法也是一个重要的里程碑,它通过使用不同尺度的特征图来进行预测,有效改善了模型对于各种尺寸目标的检测能力,这对于水果检测尤其有用,因为水果在视觉上可能呈现出多种尺寸和形态。Mask R-CNN作为一种实例分割算法,虽然主要用于目标分割,但其精准的区域划分能力使其在确定水果新鲜程度时,能够更准确地定位到感兴趣的区域,从而提高整体检测的准确度。

        EfficientDet[5]算法是一个值得注意的里程碑,它通过使用复合缩放方法来同时优化分辨率、深度和宽度,实现了在保持模型效率的同时提高准确性。Tan等人的研究显示,EfficientDet在多个标准检测任务上均实现了最先进的性能,表明其在处理复杂图像,如不同状态的水果检测中有巨大的潜力。

        数据集的发展也是推动水果新鲜程度检测技术进步的关键因素。近年来,与早期数据集相比,新的数据集不仅在规模上有了大幅增加,还在多样性和复杂性上做了大量的扩展。例如,Fruits-360数据集提供了大量不同种类、不同成熟阶段的水果图像,为研究人员提供了丰富的资源来训练和测试他们的模型。这些高质量的数据集使得模型能够更好地理解和识别水果的多样性,从而提高检测的准确性和鲁棒性。

        然而,尽管技术有了显著进步,水果新鲜程度检测仍面临许多挑战。其中之一是如何处理在实际应用中经常出现的遮挡和重叠问题。此外,不同光照条件和背景干扰也大大增加了检测任务的难度。为了应对这些挑战,研究者们一直在探索更加复杂的网络结构和算法,如使用注意力机制和GANs(生成对抗网络)来提高模型的适应性和准确性。

2.3 要解决的问题及其方案

2.3.1 要解决的问题

        在开发基于YOLOv8/v7/v6/v5的水果新鲜程度检测系统时,我们面临着一系列挑战,这些挑战不仅考验我们的技术能力,也推动我们不断创新以提升系统性能。以下是本系统需要解决的关键问题:

  1. 水果新鲜程度检测的准确性和速度
    水果新鲜程度的核心挑战在于如何准确并快速地对多种水果进行新鲜程度的识别。考虑到水果种类繁多,每种水果在不同的新鲜程度下外观特征差异显著,系统需要能够识别并处理这些细微差异。此外,实时检测的需求要求模型必须具有高速处理能力,以适应快速的检测场景。

  2. 环境适应性和模型泛化能力
    水果在不同的环境条件下(如光照、背景复杂度等)会呈现不同的视觉特性,这对检测系统的环境适应性和泛化能力提出了更高要求。因此,我们的系统需要通过高效的数据预处理和模型训练策略,确保在各种环境条件下都能保持较高的识别准确率。

  3. 用户交互界面的直观性和功能性
    为了使用户能够有效且轻松地利用水果新鲜程度检测功能,系统的用户界面设计必须直观、易用。功能布局合理,能够让用户快速访问到所需功能,如上传图片/视频进行检测、实时摄像头监控、模型之间的切换等。

  4. 数据处理能力和存储效率
    考虑到水果新鲜程度检测过程中将处理大量的图像和视频数据,系统需要具备强大的数据处理能力和高效的数据存储机制。这不仅影响到检测的实时性,还涉及到数据的长期管理和查询效率。同时,数据的安全性和隐私保护也是我们必须充分考虑的问题。

  5. 系统的可扩展性和维护性
    系统设计应充分考虑到将来可能的需求变化,如支持更多种类的水果新鲜程度检测,或集成新技术以进一步提升检测性能。因此,系统的架构需要具备良好的可扩展性和易维护性,以便未来能够无缝集成新的模块或功能,确保系统能够持续稳定运行,并及时进行更新和升级。

        通过对这些挑战的深入分析和系统设计,我们的目标是开发出一个既准确又高效、用户友好且具有良好可扩展性的水果新鲜程度检测系统,满足用户在不同场景下对水果新鲜度快速评估的需求。

2.3.2 解决方案

        针对本系统面临的挑战,我们计划采取以下策略来设计和实现一个基于YOLOv8/v7/v6/v5的深度学习模型,用于水果新鲜程度检测:

  1. 深度学习模型的选择和优化
  • 模型架构:选用YOLOv8作为主要的深度学习模型,考虑到它在目标检测任务上的出色表现,特别是在速度和准确性的平衡方面。针对水果新鲜程度检测的特定需求,我们将对YOLOv8进行微调,并与YOLOv7、v6和v5进行性能比较,以选出最适合该任务的模型版本。
  • 数据增强:为了增强模型的泛化能力,我们将采用多种数据增强技术,包括但不限于随机裁剪、缩放、旋转、色彩调整等,这有助于模拟不同环境条件下的水果图像。
  • 迁移学习:考虑到水果图像数据集的多样性和复杂性,我们将利用在大规模数据集上预训练的YOLO模型作为起点,通过迁移学习技术,对其进行微调,这将加速模型的训练过程并提高识别性能。
  1. 技术框架和开发工具
  • PyTorch框架:选用PyTorch作为深度学习框架,它不仅提供灵活的编程环境,还支持强大的GPU加速能力,非常适合于快速开发和迭代深度学习模型。
  • 基于Streamlit的网页设计:利用Streamlit构建交互式Web应用,它能够快速将Python脚本转换成交互式Web应用。通过集成CSS进行美化,我们将为用户提供一个直观、美观的用户界面。
  1. 功能实现和系统设计
  • 多输入源支持:系统将支持多种输入源,包括图像文件、视频流和实时摄像头捕获,以适应不同用户的使用场景。
  • 模型切换功能:开发动态模型切换功能,允许用户根据具体需求选择不同版本的YOLO模型(v8/v7/v6/v5),增强系统的灵活性和适用范围。
  1. 数据处理和存储策略
  • 高效数据处理:利用PyTorch的数据加载和预处理机制,实现高效的数据处理流程,确保系统能够实时处理大量的图像和视频数据。
  • 智能数据存储:设计高效的数据存储方案,对检测结果和历史数据进行有效的组织和索引,便于用户查询和分析。
  1. 性能优化和系统测试
  • 性能调优:通过模型压缩和硬件加速等方法对系统进行优化,提高检测速度,确保实时性能。
  • 全面系统测试:进行包括单元测试、功能测试和压力测试在内的全面测试,确保系统的稳定性和可靠性,满足用户的高标准要求。

        通过实施上述解决方案,我们成功开发出了一个既准确又高效的水果新鲜程度新鲜程度检测系统。该系统不仅能满足不同用户在多变环境下的应用需求,还提供了友好的用户体验和强大的数据处理能力,展现了深度学习技术在实际应用中的巨大潜力。

2.4 博文贡献与组织结构

        本文的贡献主要体现在以下几个方面:

  1. 文献综述:本文详细回顾了水果新鲜程度检测领域的研究现状,包括目标检测算法的发展历程及其在水果新鲜程度检测上的应用。我们对比分析了传统方法与深度学习方法的优劣,为读者提供了一个全面的技术背景。

  2. 数据集处理:介绍了使用的数据集及其处理方式,包括数据清洗、标注和增强等步骤。这些处理方法提高了模型的训练效率和准确性,为后续研究提供了有效的数据处理策略。

  3. 算法选择与优化:本文对YOLO系列的几个版本(YOLOv8/v7/v6/v5)进行了深入分析,探讨了它们在水果新鲜程度检测任务上的适用性和优化策略。通过实验对比,选出了最适合本任务的算法版本,并对该算法进行了细致的优化。

  4. 网页设计与实现:利用Streamlit框架设计并实现了一个美观且用户友好的网页应用,使用户能够轻松上传图像、视频或通过摄像头进行实时水果新鲜程度检测。网页的设计考虑了用户的实际操作习惯和美观性,提升了用户体验。

  5. 算法效果对比:对比了YOLOv7、v6、v5等不同版本在水果新鲜程度检测上的性能,包括检测速度、准确性等方面,为读者提供了详细的效果评估和选择依据。

  6. 资源分享:为了促进社区的进一步研究,本文提供了完整的数据集和代码资源包。这些资源不仅可以帮助读者更好地理解和复现本研究的成果,也为后续相关研究提供了宝贵的素材。

        后续章节的组织结构如下: 绪论:介绍研究背景、目的和本文的主要贡献;算法原理:详细介绍YOLOv8/v7/v6/v5等算法的工作原理及其在水果新鲜程度新鲜程度检测中的应用;数据集处理:讨论使用的数据集及其预处理、增强方法。代码介绍:提供模型训练和预测的详细代码说明,包括环境搭建、参数配置和执行步骤。实验结果与分析:展示不同模型在水果新鲜程度新鲜程度检测任务上的实验结果,并进行比较分析。系统设计与实现:介绍基于Streamlit的水果新鲜程度新鲜程度检测系统的设计与实现细节。结论与未来工作:总结本文的研究成果,并讨论未来的研究方向和潜在的改进空间。


3. 数据集处理

        在本章节中,我们将详细介绍为水果新鲜程度检测项目精心准备的数据集。数据集共包含1974张图像,其中1326张用于训练,437张用于验证,211张用于测试。这样的分配保证了模型能在广泛的数据上学习,同时也留出了独立的图片集合用于验证和测试模型的泛化能力。通过这三个数据子集,我们确保了模型训练的充分性,验证过程的准确性,以及测试结果的可信度。博主使用的类别如下:

Chinese_name = {"Apple Fresh": "新鲜苹果", "Apple Rotten": "腐烂苹果", "Apple Semifresh": "半熟苹果",
                "Apple Semirotten": "半腐烂苹果", "Banana Fresh": "新鲜香蕉", "Banana Rotten": "腐烂香蕉",
                "Banana Semifresh": "半熟香蕉", "Banana Semirotten": "半腐烂香蕉",
                "Mango Fresh": "新鲜芒果", "Mango Rotten": "腐烂芒果", "Mango Semifresh": "半熟芒果",
                "Mango Semirotten": "半腐烂芒果", "Melon Fresh": "新鲜瓜类", "Melon Rotten": "腐烂瓜类",
                "Melon Semifresh": "半熟瓜类", "Melon Semirotten": "半腐烂瓜类",
                "Orange Fresh": "新鲜橙子", "Orange Rotten": "腐烂橙子", "Orange Semifresh": "半熟橙子",
                "Orange Semirotten": "半腐烂橙子", "Peach Fresh": "新鲜桃子", "Peach Rotten": "腐烂桃子",
                "Peach Semifresh": "半熟桃子", "Peach Semirotten": "半腐烂桃子",
                "Pear Fresh": "新鲜梨子", "Pear Rotten": "腐烂梨子", "Pear Semifresh": "半熟梨子",
                "Pear Semirotten": "半腐烂梨子", "Ripe_Grape": "成熟葡萄", "Unripe_Grape": "未成熟葡萄"}

        数据预处理和增强是构建高效模型的关键步骤。所有图像都经过了自动方向校正,以确保图像数据的一致性,同时,原始的EXIF方向信息被剔除,这有助于模型专注于水果的识别而非图像的方向。图像的尺寸被统一调整为640x640像素,采用拉伸方法以符合深度学习模型输入层的标准尺寸要求。这一步骤对于保持不同图像间尺寸的一致性至关重要,有助于避免模型在训练过程中出现尺寸偏差导致的误判。

        图像集的多样性体现在水果类型、成熟度、背景和拍摄条件等方面。为模型提供了丰富的场景和条件,这种多样性使得模型能够学习在各种实际应用场景中识别水果新鲜程度的能力。图像中标注的彩色边框显示了标签的数目和类别,为模型训练提供了明确的目标。我们通过大量的样本和详细的标注,训练模型以辨识水果状态,这是确保模型实用性和准确性的关键。

        通过对数据集标签的分析,我们发现标签分布在各个类别中相对均衡,没有出现严重的类别不平衡现象,这意味着模型训练时每个类别都有充足的样本进行学习。此外,标注框的大小分布图显示了水果在图像中的占比大小,这对于调整模型对水果大小的敏感度具有重要意义。


4. 原理与代码介绍

4.1 YOLOv8算法原理

        YOLOv8 是最新的最先进的 YOLO 模型,它在以前成功的 YOLO版本基础上,引入了新的功能和改进,进一步提升了其性能和灵活性,能够更好得适应各种目标检测任务。

        首先,YOLOv8在输入处理上采用了Mosaic数据增强方法,该方法通过将四张训练图像拼接成一张大图像,并在这个大图像上执行随机裁剪,有效地增加了模型训练时的背景复杂性和目标尺度变化。这种数据增强技术不仅提高了模型对不同尺寸目标的识别能力,而且增强了模型对多样化背景的适应性。此外,与YOLOv4时代相比,现在的YOLOv8能够处理更大的图像输入,这意味着更多的细节可以被捕捉,从而提高了模型在复杂场景下的精确度。

        YOLOv8的网络结构是它的核心创新之一。它构建在YOLOv7的基础上,继承并改进了ELAN(Enhanced Layer Aggregation Network)的设计理念,同时引入了新的特征聚合机制来增强特征的表达能力。YOLOv8的网络结构优化了特征传递路径,减少了信息损失,并增强了不同尺度特征的融合能力,这对于提升模型对小目标的检测性能尤为重要。

        在主干网络设计方面,YOLOv8采用了CBS(Cross-Stage-Partial connections)技术,这是一种改进的特征传递方式,通过跨阶段连接提高信息流的效率。此外,YOLOv8的C2F(Coarse-to-Fine)结构进一步优化了细粒度特征的利用。与YOLOv5的C3模块相比,YOLOv8的C2F模块通过精细化的特征处理策略,能够更有效地捕捉到细小目标的特征,这对于识别水果这类小型或远距离目标尤为重要。SPPF(Spatial Pyramid Pooling-Fast)模块是对YOLOv5中的SPP模块的改进,它能够通过池化操作快速提取不同尺度的上下文信息,而BottleneckCSP则是一种高效的特征聚合模块,用于增强网络的学习能力和特征表达。

         在Neck部分,YOLOv8延续并优化了YOLOv5采用的特征金字塔网络(Feature Pyramid Network, FPN)和路径聚合网络(Path Aggregation Network, PAN)的设计。FPN和PAN的结合增强了模型在不同尺度上的特征提取能力,使得网络不仅能够检测大尺寸目标,还能敏锐捕捉到小尺寸目标。FPN通过从低到高的层级结构融合不同分辨率的特征信息,增强了模型在多尺度检测能力,而PAN则反向进行特征聚合,确保了从高分辨率层传递的细节信息不会丢失。这种结构设计充分利用了YOLOv8在深层网络和浅层网络中学到的信息,使得模型在处理复杂背景和不同大小目标时更为精确。

        Head部分是YOLOv8进行目标分类和定位的核心,这一部分对检测的准确性起着决定性作用。YOLOv8采用了解耦头部(Decoupled Head)的设计,这意味着分类和定位任务被分开处理,以提高网络在处理这两个不同任务时的专注度和效率。在实际应用中,这种设计允许模型更灵活地调整分类和定位的特征提取策略,提高了检测的准确度。YOLOv8也继续使用Anchor-Based的方法,即预定义的锚点框帮助模型预测物体的位置,但是在YOLOv8中,这一机制被进一步优化,以适应更多样化的目标形状和尺寸。

        总的来说,YOLOv8算法的Neck和Head部分的设计体现了在现有算法基础上的深度优化和创新。这些优化不仅增强了模型的特征提取能力,也提升了模型在不同任务中的专注度和精确度,从而确保了在各种复杂环境下对目标进行有效检测的能力。这样的技术进步为我们在水果新鲜程度检测等具体应用中提供了强大的技术支持,使得YOLOv8能够在众多目标检测算法中脱颖而出。

4.2 模型构建

        在本项目的“代码介绍”部分,我们将深入探讨构建水果新鲜程度检测模型的核心代码。该模型基于高效的YOLOv8/v7/v6/v5架构,并且涵盖了从数据处理到模型预测等多个步骤,为实现精确检测提供了技术保障。

        首先,我们使用的是PyTorch深度学习框架,这是一个强大的库,广泛用于学术和工业界。通过import语句,我们加载了处理图像和视频所需的cv2库,即OpenCV,它是计算机视觉任务中的标准工具。接下来,我们导入了YOLO类,它是YOLOv8/v7/v6/v5的实现,以及select_device函数,用于在可用的情况下选择CUDA设备,以加速模型的计算。

import cv2
import torch
from QtFusion.models import Detector
from datasets.label_name import Chinese_name
from ultralytics import YOLO
from ultralytics.utils.torch_utils import select_device

        在代码中,我们定义了一系列初始化参数,如device来指定计算设备,以及置信度和IOU阈值。这些参数对于控制模型预测的敏感性至关重要,例如,置信度阈值决定了模型对检测物体的确定性程度。

device = "cuda:0" if torch.cuda.is_available() else "cpu"
ini_params = {
    'device': device,
    'conf': 0.25,
    'iou': 0.5,
    'classes': None,
    'verbose': False
}

        我们定义了count_classes函数来统计预测中各个类别的实例数,这有助于我们了解哪些类别的水果在数据集中更常见,可能还会指出数据中的偏差。

def count_classes(det_info, class_names):
    count_dict = {name: 0 for name in class_names}
    for info in det_info:
        class_name = info['class_name']
        if class_name in count_dict:
            count_dict[class_name] += 1
    count_list = [count_dict[name] for name in class_names]
    return count_list

        YOLOv8v5Detector类是我们自定义的一个检测器,它继承自Detector基类,并添加了特定于项目的方法和属性。类的构造函数初始化模型、输入图像、类别名称列表,以及参数字典,这使得类非常灵活,可以适应各种运行和预测设置。在load_model方法中,我们加载了YOLO模型,并使用select_device函数选择最合适的设备。这个方法还转换了模型预测类别的名称,使得输出更加人性化,反映了水果的中文名称。在preprocess和postprocess方法中,我们处理模型的输入和输出。预处理步骤确保了图像格式符合模型要求,而后处理步骤则将模型的预测结果转换成易于理解的格式,包括为每个检测到的对象分配类别标签和边界框。

class YOLOv8v5Detector(Detector):
    def __init__(self, params=None):
        super().__init__(params)
        self.model = None
        self.img = 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)
	    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())))
	def preprocess(self, img):
	    self.img = img
	    return img
	
	def predict(self, img):
	    results = self.model(img, **ini_params)
	    return results
	
	def postprocess(self, pred):
	    results = []
	    for res in pred[0].boxes:
	        for box in res:
	            class_id = int(box.cls.cpu())
	            bbox = box.xyxy.cpu().squeeze().tolist()
	            bbox = [int(coord) for coord in bbox]
	            result = {
	                "class_name": self.names[class_id],
	                "bbox": bbox,
	                "score": box.conf.cpu().squeeze().item(),
	                "class_id": class_id,
	            }
	            results.append(result)
	    return results
	    
    def set_param(self, params):
        self.params.update(params)

        predict方法是模型的核心,它将预处理过的图像传递给加载的YOLO模型,得到原始预测结果。该方法利用我们之前设置的参数执行预测,确保结果的一致性和准确性。最后,set_param方法允许用户在运行时更新检测器的参数,使我们的检测器可以根据不同的应用场景灵活调整。

        整体而言,这段代码通过精心设计的类结构和方法,实现了一个完整的水果新鲜程度新鲜程度检测流程,从图像输入到预测输出,每一个环节都经过了优化和定制,以确保模型能够在实际应用中达到最佳的识别效果。

4.3 训练代码

        在深入探究构建深度学习模型的代码时,理解每一行代码的目的及其在整个训练流程中的作用至关重要。本博客将详细分析用于水果新鲜程度新鲜程度检测的YOLO模型的训练过程。以下表格详细介绍了YOLOv8模型训练中使用的一些重要超参数及其设置:

超参数 设置 说明
学习率(lr0 0.01 决定了模型权重调整的步长大小,在训练初期有助于快速收敛。
学习率衰减(lrf 0.01 控制训练过程中学习率的降低速度,有助于模型在训练后期细致调整。
动量(momentum 0.937 加速模型在正确方向上的学习,并减少震荡,加快收敛速度。
权重衰减(weight_decay 0.0005 防止过拟合,通过在损失函数中添加正则项减少模型复杂度。
热身训练周期(warmup_epochs 3.0 初始几个周期内以较低的学习率开始训练,逐渐增加到预定学习率。
批量大小(batch 16 每次迭代训练中输入模型的样本数,影响GPU内存使用和模型性能。
输入图像大小(imgsz 640 模型接受的输入图像的尺寸,影响模型的识别能力和计算负担。

        环境设置与模型加载:首先,我们通过必要的库引入段设置了训练环境。代码开始导入os库,用于处理文件路径和目录结构。然后,我们导入torch,这是PyTorch深度学习框架的核心库,提供了GPU加速等高级功能。紧接着,我们从ultralytics库导入了YOLO类,这是实现YOLOv8模型的关键。最后,我们从QtFusion.path模块导入abs_path函数,这将用于获取数据集配置文件的绝对路径。

import os
import torch
import yaml
from ultralytics import YOLO  # 用于加载YOLO模型
from QtFusion.path import abs_path  # 用于获取文件的绝对路径

        设备的选择是基于计算资源的可用性。如果检测到CUDA可用,则使用GPU(通过设置为"0");否则,将使用CPU。

device = "0" if torch.cuda.is_available() else "cpu"

        数据集准备:在设置了工作进程数和批次大小后,我们为数据集的路径配置定义了变量,通过abs_path函数获得绝对路径,并处理了可能的路径分隔符问题,以保证路径的统一性。workers变量定义了在数据加载时使用的子进程数目,而batch则定义了批量大小,这直接影响了GPU内存的使用量和训练速度。

workers = 1  # 工作进程数
batch = 8  # 每批处理的图像数量
data_name = "Ripeness"
data_path = abs_path(f'datasets/{data_name}/{data_name}.yaml', path_type='current')
unix_style_path = data_path.replace(os.sep, '/')

        YAML文件的读取与写入是为了确保我们的数据集配置正确地指向了数据的实际路径。我们首先打开并读取YAML文件,然后更新其中的path项以指向正确的目录路径。修改完成后,将更新的数据重新写入原YAML文件中。

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)

        训练模型:接下来,我们加载预训练的YOLOv8模型。这一步是训练流程的起点,我们通过指定权重文件路径来实现。加载预训练模型是提高训练效率和模型性能的一个常见实践,因为这样可以利用在大量数据上学到的特征。最后,我们开始模型训练过程。调用train方法时,我们传入了多个参数,包括数据集配置、设备类型、工作进程数量、输入图像尺寸、训练周期数、批量大小,以及训练任务的名称。这些参数是高效训练的关键,它们共同决定了模型训练的速度、稳定性以及最终的性能。

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  # 指定训练任务的名称
)

        此段代码整合了从配置数据路径、加载模型、设置训练参数到启动训练的完整过程。通过详细介绍,读者可以深入理解如何在实际项目中部署和训练YOLOv8模型,并且能够根据自身项目的需求,进行必要的调整和优化。


5. 实验结果与分析

5.1 训练曲线

        在深入分析YOLOv8在水果新鲜程度检测任务上的训练过程时,我们主要关注损失函数的变化以及模型性能的评价指标。训练模型的目标是最小化损失函数,同时提高精度、召回率和平均精度(mAP)。损失函数和性能指标的图像提供了模型训练动态的丰富信息。

        从损失函数的角度观察,可以发现,随着训练的进行,训练集上的方框损失(box_loss)、类别损失(cls_loss)和目标损失(obj_loss)均呈现出下降趋势,这意味着模型对于水果边界框的定位、类别的预测以及目标的检测能力随着时间的推移而增强。特别是方框损失,其快速下降表明模型在学习如何准确地定位到水果的位置方面取得了显著进展。这对于水果新鲜程度检测尤其重要,因为准确的定位是评估新鲜程度的前提。

        同时,验证集的损失函数图像表现出波动性减小,趋于平稳,这通常表明模型在学习过程中逐渐适应了数据集的特性,并且具备了一定的泛化能力。如果验证损失没有随着训练损失的降低而增加,这表明模型没有出现过拟合现象,可以很好地推广到未见过的数据上。

        性能指标方面,精度(precision)图显示了模型预测为正的样本中实际为正的比例,而召回率(recall)图反映了模型在所有正样本中识别出来的比例。我们可以看到,在训练过程中,精度和召回率都有所提高,表明模型能够更准确地识别并正确标记水果的新鲜程度。

        [email protected]是模型在IOU(交并比)阈值为0.5时的平均精度,它可以粗略地评估模型性能。而[email protected]是在IOU从0.5到0.95之间所有阈值的平均精度,这是一个更严格的性能评价,涵盖了对模型定位精度的综合评估。在训练期间,mAP的稳步提升反映了模型预测精度的整体提高。总的来说,损失函数和性能指标的图表显示出YOLOv8模型在水果新鲜程度检测任务上训练效果良好,且没有出现过拟合的迹象。随着训练的进行,模型在各个方面都表现出了明显的改善,这为后续的验证和测试阶段奠定了坚实的基础。

5.2 PR曲线图

        在对YOLOv8模型进行评估后,得到的精度-召回率(Precision-Recall,简称PR)曲线为我们提供了模型性能的详细视图。这条曲线描绘了模型在不同置信度阈值下的精度和召回率。精度是指模型正确检测到的水果新鲜程度实例与所有被检测为该新鲜程度的实例之比,而召回率是指模型正确检测到的实例与数据集中所有该新鲜程度实例之比。理想的模型表现是在高精度和高召回率间找到平衡点。

        从图中可见,我们可以看到随着召回率的增加,精度逐渐下降。在召回率低的区域,精度接近1.0,这意味着模型在极高的置信度阈值下能够非常准确地识别水果的新鲜程度。然而,随着召回率提高,模型开始将更多的样本判断为正类,这导致了一些负类也被误判为正类,因此精度开始下降。这是一个典型的检测模型行为,因为通常会存在这样的权衡:为了找出更多的正类样本(提高召回率),我们可能不得不接受更多的误判(降低精度)。

        曲线下方灰色线条表示了不同置信度阈值下的单个PR值,而蓝色曲线代表了这些值的平滑趋势。在蓝色曲线上方的注释中,我们可以看到模型在[email protected](平均精度在IOU=0.5时)达到了0.813。这个数值表明,当交并比阈值设定为0.5时,模型在整体上表现出了非常高的检测性能。mAP是衡量检测模型整体性能的一个重要指标,而[email protected]是评估模型对目标定位准确性的一个宽松标准。0.813的mAP值表明我们的模型在大多数情况下都能准确识别水果的新鲜程度,这对于实际应用来说是非常有希望的。

        综合考虑,这条PR曲线和mAP值表明我们的模型在水果新鲜程度检测任务上具有良好的性能,能够以较高的置信度检测出水果的新鲜程度。当然,我们可能需要在模型部署之前调整置信度阈值,以确保在具体应用场景中达到最佳的精度和召回率平衡。

5.3 YOLOv8/v7/v6/v5对比实验

(1)实验设计
        本实验旨在评估和比较YOLOv5、YOLOv6、YOLOv7和YOLOv8几种模型在水果新鲜程度目标检测任务上的性能。为了实现这一目标,博主分别使用使用相同的数据集训练和测试了这四个模型,从而可以进行直接的性能比较。该数据集包含水果新鲜程度的图像。本文将比较分析四种模型,旨在揭示每种模型的优缺点,探讨它们在工业环境中实际应用的场景选择。

模型 图像大小 (像素) 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通过两者的调和平均,确保了只有当精确率和召回率同时高时,模型的性能评估才会高,从而确保了模型对于正例的预测既准确又完整。
  • mAP(Mean Average Precision):在目标检测任务中,Mean Average Precision(mAP)是评估模型性能的重要标准。它不仅反映了模型对单个类别的识别精度,而且还考虑了所有类别的平均表现,因此提供了一个全局的性能度量。在计算mAP时,模型对于每个类别的预测被单独考虑,然后计算每个类别的平均精度(AP),最后这些AP值的平均数形成了mAP。
名称 YOLOv5nu YOLOv6n YOLOv7-tiny YOLOv8n
mAP 0.826 0.815 0.782 0.813
F1-Score 0.77 0.74 0.71 0.75

(3)实验结果分析

       在我们对YOLOv5nu、YOLOv6n、YOLOv7-tiny和YOLOv8n进行的性能对比实验中,通过两个关键指标:mAP(平均精度均值)和F1-Score,我们得出了一些有趣的发现。首先,YOLOv5nu在这四个版本中表现最佳,无论是在mAP还是F1-Score上都取得了最高分,分别为0.826和0.77。这表明YOLOv5nu不仅在识别准确度上表现出色,同时在精确度和召回率的平衡方面也有很好的表现。

       紧随其后的是YOLOv8n和YOLOv6n,它们在mAP上的表现相近,分别为0.813和0.815,而在F1-Score上也展现了较好的平衡性,分别为0.75和0.74。这反映了随着YOLO系列的更新,新版本在保持一定精度的同时,也注重提升模型的综合性能。

       相比之下,YOLOv7-tiny的表现稍显逊色,其mAP和F1-Score分别为0.782和0.71。这个结果可能是由于“tiny”版本为了适应计算资源有限的环境,牺牲了一部分的检测能力,因此在性能上有所下降。但是,这种轻量级的设计也使其成为在资源受限设备上的一个实用选择。

        总体来说,每个版本的YOLO模型都有其独特的优点和最适用场景。YOLOv5nu的高性能使其成为需求高精度检测的理想选择。而YOLOv6n和YOLOv8n则展示了新版本在继承前代优势的同时,也在不断优化和创新。对于有资源限制的场合,YOLOv7-tiny提供了一个可行的解决方案,尽管在性能上有所妥协,但仍保持了一定的检测能力。选择哪一个模型,需基于具体需求和可用资源来决定。


6. 系统设计与实现

6.1 系统架构概览

        在设计基于YOLOv8/v7/v6/v5的水果新鲜程度检测系统时,我们采用了一个模块化的系统架构设计,确保系统既高效又易于维护。以下是系统架构的关键组成部分:

1. 数据处理模块

        这一模块负责处理输入数据,包括图像的加载、预处理、标准化等。在我们的代码中,这部分功能主要通过YOLOv8v5Detector类的preprocess方法实现。它确保输入图像被适当地转换和标准化,以满足模型的输入要求。

2. 模型加载与配置模块

        模型加载与配置是系统的核心,决定了检测性能的上限。YOLOv8v5Detector类承担了这一角色,负责加载预训练的YOLO模型,并通过load_model方法加载指定路径下的模型权重。此外,我们还可以通过该类配置模型的关键参数,如置信度阈值(conf_threshold)和IOU阈值(iou_threshold),以适应不同的检测需求。

3. 检测执行模块

        检测执行模块直接关联到实时检测功能的实现。在我们的系统中,Detection_UI类的process_camera_or_file方法充当这一模块的核心,它根据用户输入(摄像头实时流或上传的文件)执行检测任务。该方法内部调用frame_process进行单帧图像的检测,并集成了处理摄像头输入和文件输入的逻辑。

4. 检测结果处理模块

        一旦检测完成,我们需要对结果进行处理和展示。Detection_UI类中的frame_process方法不仅执行检测,还处理检测结果,包括绘制检测框、标注类别和置信度。同时,该方法还负责生成选择信息列表(select_info),便于用户在界面上进行交互式的结果筛选。

5. 用户界面(UI)模块

        为了让用户能够轻松地与系统交互,我们设计了一个直观的用户界面。Detection_UI类的setup_sidebarsetupMainWindow方法负责初始化和布局用户界面,包括侧边栏的配置选项和主窗口的显示模式。用户可以通过UI选择摄像头、上传文件、调整检测参数,并查看检测结果和日志信息。

6.2 系统流程

        在基于YOLOv8/v7/v6/v5的水果新鲜程度检测系统中,系统流程是实现高效、准确检测的关键。下面以程序流程图的形式,详细介绍系统的工作流程:

  1. 初始化系统
            系统启动时,首先进行初始化操作,包括加载模型、配置参数和设置用户界面。具体步骤包括:
  • 加载模型YOLOv8v5Detector类的实例化过程中调用load_model方法,加载指定的模型权重文件。
  • 配置检测参数:在Detection_UI类的构造函数中,根据用户的选择或默认设置,初始化检测参数,如置信度阈值(conf_threshold)、IOU阈值(iou_threshold)等。
  • 设置用户界面:通过Detection_UI类的setup_sidebarsetupMainWindow方法,初始化侧边栏和主窗口,提供用户配置和操作的界面。
  1. 用户配置
            用户通过侧边栏进行配置,包括选择模型类型、调整检测参数、选择摄像头或上传文件。系统根据用户的配置更新相应的参数。

  2. 处理输入
    根据用户的选择,系统处理摄像头输入或文件上传: 摄像头输入:如果用户选择了摄像头,系统将实时捕捉摄像头数据流进行检测。
    文件上传:如果用户上传了图片或视频文件,系统将加载文件内容准备进行检测。

  3. 执行检测
    对于捕捉到的每一帧图像,系统通过Detection_UI类中的frame_process方法进行处理:

  • 调用YOLOv8v5Detector类的preprocess方法对图像进行预处理。
  • 使用predict方法对预处理后的图像执行检测,获取检测结果。
  • 根据检测结果,调用postprocess方法进行结果的后处理,如绘制检测框、标注类别和置信度。
  1. 结果展示和日志记录
  • 系统将检测结果实时展示在用户界面上,包括绘制的检测框和标注信息。
  • 对于检测到的每个对象,系统通过LogTable类记录详细的检测日志,并提供接口供用户导出日志信息。
  1. 用户交互
            用户可以通过界面与系统交互,如重新配置检测参数、筛选特定检测结果等。系统将根据用户的操作实时更新界面和检测结果。

        通过以上流程,我们的系统能够实现从输入处理到检测执行,再到结果展示和日志记录的完整工作流程,为用户提供一个高效且友好的水果新鲜程度检测服务。


代码下载链接

         如果您希望获取博客中提及的完整资源包,包含测试图片、视频、Python文件(*.py)、网页配置文件、训练数据集、代码及界面设计等,可访问博主在面包多平台的上传内容。相关的博客和视频资料提供了所有必要文件的下载链接,以便一键运行。完整资源的预览如下图所示:

        资源包中涵盖了你需要的训练测试数据集、训练测试代码、UI界面代码等完整资源,完整项目文件的下载链接可在下面的视频简介中找到➷➷➷

演示与介绍视频https://www.bilibili.com/video/BV1tx421D7zV/
YOLOv8/v7/v6/v5项目合集下载:https://mbd.pub/o/bread/mbd-ZZ2Xm5xv
YOLOv8和v5项目完整资源下载:https://mbd.pub/o/bread/mbd-ZZ2XmZlv
YOLOv7项目完整资源下载:https://mbd.pub/o/bread/mbd-ZZ2XmpZx
YOLOv6项目完整资源下载:https://mbd.pub/o/bread/mbd-ZZ2Xm5dp

完整安装运行教程:

        这个项目的运行需要用到Anaconda和Pycharm两个软件,下载到资源代码后,您可以按照以下链接提供的详细安装教程操作即可运行成功,如仍有运行问题可私信博主解决:

  1. Pycharm和Anaconda的安装教程https://deepcode.blog.csdn.net/article/details/136639378

        软件安装好后需要为本项目新建Python环境、安装依赖库,并在Pycharm中设置环境,这几步采用下面的教程可选在线安装(pip install直接在线下载包)或离线依赖包(博主提供的离线包直接装)安装两种方式之一:

  1. Python环境配置教程https://deepcode.blog.csdn.net/article/details/136639396(2,3方法可选一种);
  2. 离线依赖包的安装指南https://deepcode.blog.csdn.net/article/details/136650641(2,3方法可选一种);

        如使用离线包方式安装,请下载离线依赖库,下载地址:https://pan.baidu.com/s/1uHbU9YzSqN0YP_dTHBgpFw?pwd=mt8u (提取码:mt8u)。


7. 结论与未来工作

        本文深入研究并实践了基于YOLOv8/v7/v6/v5的深度学习模型在水果新鲜程度检测领域的应用,成功开发了一个高效且准确的水果新鲜程度检测系统。该系统综合运用了这些先进的检测算法,不仅显著提升了水果新鲜程度的检测准确率和实时性,而且通过Streamlit构建了一个直观、美观且用户友好的Web应用,允许用户轻松进行水果新鲜程度的实时检测,以便于在实际应用中发挥显著作用。

        通过一系列严谨的实验验证,本文所提出的解决方案在提高水果新鲜程度检测的准确性和处理速度方面均取得了显著成效。同时,我们还提供了包括数据处理、模型训练及预测的完整代码,以及基于Streamlit的系统设计与实现细节,为未来的研究者和开发者复现及参考提供了极大的便利。尽管我们在水果新鲜程度检测这一复杂任务上取得了进展,该领域仍然面临诸多挑战和改进的空间。未来,我们计划从以下几个方向进行深入探索:

  • 模型优化:继续深化对网络结构的探索和优化策略,考虑应用神经网络架构搜索(NAS)技术,以进一步提高模型的检测性能和效率。
  • 多模态融合:探讨结合图像以外的其他模态信息,如语音、文本等,采用多模态学习方法提升水果新鲜程度检测的全面性和准确性。
  • 跨域适应性:研究如何使模型具备更好的跨文化、跨环境适应能力,通过领域自适应技术增强模型在不同环境中的泛化能力。
  • 用户交互体验:进一步改善系统的用户界面(UI)和交互设计,使之更加人性化和智能化,满足更广泛用户群体的需求。
  • 实际应用拓展:拓展水果新鲜程度检测在更多实际场景中的应用,如农业生产、食品安全监管等,充分发挥其在社会经济领域的价值。

        总体来看,随着深度学习技术的持续进步和应用范围的日益扩大,基于YOLOv8/v7/v6/v5的水果新鲜程度检测技术将在不久的将来,在促进农业现代化、提高食品安全水平等方面发挥更加重要的作用。


  1. Liang, Weigang, et al. "Prediction of freshwater ecotoxicological hazardous concentrations of major surfactants using the QSAR–ICE–SSD method." Environment International (2024): 108472. ↩︎

  2. Chadwick, Andrew J., et al. "Transferability of a Mask R–CNN model for the delineation and classification of two species of regenerating tree crowns to untrained sites." Science of Remote Sensing 9 (2024): 100109. ↩︎

  3. Zubkov, O. V., et al. "INVESTIGATION OF THE YOLOv5 ALGORITHM EFFICIENCY FOR DRONE RECOGNIZATION." Telecommunications and Radio Engineering 83.1 (2024). ↩︎

  4. Han, Kai, et al. "Transformer in transformer." Advances in neural information processing systems 34 (2021): 15908-15919. ↩︎

  5. Tan, Mingxing, Ruoming Pang, and Quoc V. Le. "Efficientdet: Scalable and efficient object detection." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020. ↩︎

标签:水果,训练,检测,模型,新鲜,YOLOv8,v5,v7
From: https://www.cnblogs.com/deeppython/p/18087082

相关文章