首页 > 其他分享 >基于深度学习的鸟类识别系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

基于深度学习的鸟类识别系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

时间:2024-04-04 16:33:53浏览次数:27  
标签:鸟类 训练 检测 模型 YOLOv8 v5 v7 识别

摘要:本文深入研究了基于YOLOv8/v7/v6/v5的鸟类识别系统,核心采用YOLOv8并整合了YOLOv7YOLOv6YOLOv5算法,进行性能指标对比;详述了国内外研究现状数据集处理算法原理模型构建与训练代码,及基于Streamlit的交互式Web应用界面设计。在Web网页中可以支持图像、视频和实时摄像头进行鸟类识别,可上传不同训练模型(YOLOv8/v7/v6/v5)进行推理预测,界面可方便修改。本文附带了完整的网页设计深度学习模型代码训练数据集的下载链接。

@

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


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

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


1. 网页功能与效果

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

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

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

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

        我们详尽介绍了一个基于YOLOv8/v7/v6/v5模型的鸟类识别系统,该系统通过一个直观且功能全面的Web应用界面为用户提供了丰富的操作选择。其中,核心功能包括实时检测图片检测视频文件检测,以及多模型选择,确保用户能够根据具体需求灵活选择适合的检测方式和模型。系统特别支持直接开启摄像头进行实时鸟类识别,实现了对摄像头捕获画面的实时分析,并能即时展示检测结果。此外,用户可通过上传图片或视频文件来进行鸟类检测,系统将自动分析并标记出现的鸟类,支持同时或单独显示检测画面和原始画面,极大增加了使用的灵活性。

        为了满足不同检测需求,系统允许用户从YOLOv8、v7、v6、v5等多个训练好的模型文件中进行选择。同时,用户可以通过下拉框单独标记特定目标并显示结果,便于专注于特定种类的鸟类识别。检测结果将实时显示在页面上的表格中,并允许用户动态调整检测算法的置信度阈值和IOU阈值,以优化检测精度。此外,系统提供了强大的结果保存和导出功能。用户不仅可以将检测结果保存在页面表格显示,还可以将表格结果输出到csv文件,以便于数据分析和记录。更进一步,标记的图片、视频及摄像头画面结果可以导出为avi图像文件,方便用户记录和分享。


2. 绪论

2.1 研究背景及意义

        在当今的生态环境中,鸟类作为生物多样性的重要指标,其种类的繁多和行为的多样性为科学研究提供了丰富的数据资源。鸟类不仅是生态系统中的关键组成部分,其数量和种类的变化往往能够反映出环境变化的趋势,因此,鸟类的保护和研究对于维护生态平衡、推进生物多样性保护具有重要意义。随着技术的进步,利用深度学习技术进行鸟类识别已成为生态研究和保护工作的一大助力,尤其是基于YOLO系列算法的鸟类识别技术因其高效和准确性受到广泛关注。

        深度学习技术的快速发展为自然界中鸟类的自动识别和分类提供了新的方法和手段。其中,YOLO(You Only Look Once)系列算法以其出色的实时检测能力,在众多领域中得到了应用。从YOLOv5到YOLOv8,每个版本的迭代都在性能、准确性和速度上有所提升,为鸟类识别带来了新的可能[1][2]。通过这些先进的算法,研究者可以快速准确地识别出大量不同种类的鸟类,大幅提高研究效率和数据准确性。

        然而,鸟类识别的过程并非没有挑战。鸟类种类繁多,外形特征各异,加之生活环境的多样性和复杂性,使得准确识别各种鸟类成为一项挑战性工作[3]。此外,随着全球气候变化和人类活动的影响,鸟类的生态环境正面临着前所未有的威胁,如何有效地监测和保护鸟类种群,成为了当前亟需解决的问题[4]

        对此,基于YOLOv8/v7/v6/v5的鸟类识别系统不仅能够提供高效准确的鸟类识别功能,还可以通过实时监测和长期数据收集,为科学研究和生态保护提供有力的技术支持。这种技术的应用,不仅能够促进对鸟类多样性的深入了解,还有助于预警生态环境变化,为生物保护和生态恢复提供参考[5]

2.2 国内外研究现状

        近年来,随着深度学习技术的快速发展,鸟类识别研究也进入了一个新的阶段。尤其是卷积神经网络(CNN)在图像识别领域的成功应用,极大地推动了自动鸟类识别技术的进步。在这一背景下,一系列基于深度学习的新算法和模型被提出,以提高鸟类识别的准确性和效率。

        YOLO系列算法,作为一种典型的实时目标检测系统,因其高效性和准确性而被广泛应用于鸟类识别中。从YOLOv1到最新的YOLOv8,每个版本的迭代都带来了性能的显著提升。YOLOv8,作为系列中的最新作,在提高检测速度的同时,也优化了对小目标的识别能力,这对于鸟类识别尤为重要,因为鸟类图像往往包含多个小目标和复杂的背景。

        近年来,Transformer和注意力机制的引入为目标检测算法带来了新的突破。ViT(Vision Transformer)通过应用自注意力机制处理图像块序列,展示了在大规模数据集上与CNN相媲美甚至更优的性能。此外,DETR(Detection Transformer)和其后续工作通过结合Transformer和传统目标检测框架,成功地将目标检测问题转化为直接集合预测问题,减少了对手工设计组件的依赖。

        RetinaNet以其独特的Focal Loss解决了目标检测中的类别不平衡问题,大幅提高了小目标的检测性能,这对于鸟类识别尤其重要,因为在野外环境中鸟类往往体积较小,容易与背景混淆。Gold-YOLO和MMDetection则是在YOLO基础上进行的改进和扩展,它们通过优化模型结构和训练过程,进一步提升了检测性能,尤其是在处理复杂背景和多尺度目标时的表现。

        其他一些算法如Faster R-CNN、SSD和EfficientDet等也在鸟类识别领域显示出了不错的性能。这些算法通过不同的机制来提高目标检测的准确性,例如,Faster R-CNN通过引入区域建议网络(RPN)来提高检测的准确率,而EfficientDet则通过优化模型结构和使用更高效的训练技巧来实现高效的目标检测。

        这些算法的发展和应用不仅推动了目标检测技术的进步,也为鸟类识别提供了强大的工具。通过利用这些先进的模型,研究人员和生态保护者能够更准确、更有效地监测和研究鸟类,从而为保护生物多样性和理解生态系统变化提供了宝贵的数据和见解。

2.3 要解决的问题及其方案

2.3.1 要解决的问题

        针对基于YOLOv8/v7/v6/v5的鸟类识别系统,本文详细探讨了面临的核心挑战及针对性的解决方案。系统的开发旨在克服多种动物种类识别中的准确性与速度问题、提升环境适应性与模型泛化能力、优化用户交互界面以及增强数据处理与存储效率。此外,系统设计亦考虑了未来的可扩展性与维护性,确保其能够适应不断变化的科研和保护需求。

  1. 准确性与速度:鸟类识别的首要挑战在于实现对广泛鸟类种类的高准确度识别以及实时处理能力。我们采用了YOLOv8作为主要模型,结合YOLOv7、v6、v5进行性能比较,通过对比分析确定最适合鸟类识别任务的模型结构和参数配置。利用PyTorch框架,我们对模型进行了深度优化,包括但不限于使用高效的卷积结构、引入注意力机制以及进行多尺度训练,以提升模型对鸟类特征的捕捉能力及处理速度。

  2. 环境适应性与模型泛化能力:鉴于自然环境的多样性,我们通过大规模多样化的数据集训练,包括不同光照、背景和天气条件下的鸟类图像,以提高模型的泛化能力。同时,引入数据增强技术模拟复杂环境因素,确保模型在各种环境条件下都能维持较高的识别准确率。

  3. 用户交互界面的直观性和功能性:基于Streamlit的网页设计提供了一个直观易用的界面,通过CSS美化增强了用户体验。界面支持实时摄像头检测、图片上传与视频文件检测,且允许用户根据需要切换不同的模型文件,以适应不同的识别需求。此外,集成的深度学习检测算法能够实时显示识别结果,提供了包括置信度调整、目标标记等高级功能。

  4. 数据处理能力和存储效率:考虑到大量的图像和视频数据处理需求,系统设计了高效的数据处理流程和存储机制。通过优化数据预处理和加载方式,减少了处理时间,提高了实时性。同时,采用压缩技术和高效的文件管理系统,确保数据的长期存储不仅占用较小空间,而且保证了快速访问和检索能力。

  5. 系统的可扩展性和维护性:系统架构设计充分考虑了未来发展需求,采用模块化设计思想,使得新的模型或功能可以轻松集成。通过在PyCharm这一开发工具IDE中采用良好的编码实践,如代码复用、模块解耦,确保了系统的高维护性,便于后续的更新和升级。

2.3.2 解决方案

        在设计和实现基于YOLOv8/v7/v6/v5的鸟类识别系统时,我们采取了一系列策略来克服技术挑战并满足应用需求。以下是我们的主要方法和技术选择,特别注重深度学习模型的选择和优化、技术框架与开发工具的应用、功能实现与系统设计的创新,以及数据处理和存储策略的高效管理。

  1. 深度学习模型的选择和优化
  • 模型架构:选择YOLOv8作为主模型,考虑到其在图像处理速度和准确度之间提供了最佳平衡。YOLOv8的创新之处在于其能够有效处理各种规模的目标,这对于鸟类识别尤为关键。同时,通过比较YOLOv7、v6、v5的性能,我们精细调整模型参数,以适应不同的鸟类识别场景。

  • 数据增强:为了提升模型在复杂环境下的泛化能力,我们采用了多种数据增强技术,包括但不限于随机裁剪、缩放、旋转和色彩调整。这些技术能够模拟不同光照和背景条件下的鸟类图像,从而增强模型的鲁棒性。

  • 迁移学习:使用在大规模数据集上预训练的YOLO模型作为起点,对其进行微调以适应特定的鸟类识别任务。这一策略大大加速了模型训练过程,同时保持了高识别准确率。

  1. 技术框架和开发工具
  • PyTorch框架:采用PyTorch作为主要的深度学习框架,得益于其灵活的编程环境和优秀的GPU加速能力,PyTorch非常适合于深度学习模型的开发和迭代。

  • 基于Streamlit的网页设计:选择Streamlit作为网页应用框架,结合CSS进行界面美化,提供了一个直观且功能丰富的用户交互平台。用户可以轻松上传图片、视频或直接通过摄像头进行实时鸟类识别,同时支持切换不同的模型文件,以满足不同的使用需求。

  • PyCharm开发工具:使用PyCharm作为开发IDE,它提供了便捷的代码管理和调试工具,极大地提高了开发效率和项目管理的便利性。

  1. 功能实现和系统设计
  • 多输入源支持:系统设计考虑到了多样化的输入需求,支持图像、视频文件以及实时摄像头数据的输入,确保了系统在不同场景下的适用性。

  • 模型切换功能:实现了一个动态模型切换机制,允许用户根据具体需求选择不同版本的YOLO模型,这一功能提升了系统的灵活性和用户体验。

  • 交互式网页设计:借助Streamlit框架,我们设计了一个交互式的网页应用,用户可以通过简洁直观的界面进行操作,无需复杂的设置即可完成鸟类识别任务。

  1. 数据处理和存储策略
  • 高效数据处理:利用PyTorch强大的数据加载和预处理功能,实现了快速高效的图像处理流程,确保了系统

的实时性和响应速度。

  • 智能数据存储:针对处理后的识别结果和历史数据,我们设计了一套高效的数据存储方案。通过智能索引和查询优化,加快了数据的检索速度,同时保证了长期存储的经济性和安全性。

        通过上述方法的实施,本系统旨在提供一个既准确又高效的鸟类识别解决方案,满足科研、教育及生态保护等多方面的需求。整个系统的设计注重用户体验、数据处理效率及未来技术的可扩展性,确保其在面对不断变化的应用场景时能够持续提供稳定可靠的服务。

2.4 博文贡献与组织结构

        本文综合探讨了利用YOLOv8/v7/v6/v5等先进深度学习模型进行鸟类识别的全面解决方案,涵盖了从理论到实践的各个方面。我们的工作不仅聚焦于算法的选择和优化,还包括数据集的细致处理、基于Streamlit的交互式网页设计,以及对YOLO系列算法性能的深入对比分析。以下是本研究的主要贡献:

  1. 文献综述:我们提供了一个关于目标检测算法在鸟类识别任务中应用的广泛文献综述,特别是YOLO系列算法的发展历程和最新进展,为本研究提供了坚实的理论基础。

  2. 数据集处理:详细介绍了数据集的选择、预处理、增强技术等关键步骤,确保模型能够在多变的环境条件下准确识别不同种类的鸟类。

  3. 算法选择与优化:深入分析了YOLOv8/v7/v6/v5等多个版本的优缺点,基于实际的鸟类识别需求,进行了算法选择和参数优化,以获得最佳的识别性能。

  4. 网页设计与实现:借助Streamlit框架,开发了一个美观、友好的交互式网页,使用户能够轻松上传图像、视频或通过摄像头进行实时鸟类识别。

  5. 算法效果对比:通过实验验证,对比了YOLOv7、v6、v5等算法在鸟类识别任务上的效果,为读者提供了选择算法的参考依据。

  6. 资源共享:提供了完整的数据集和代码资源包,使得读者能够复现我们的研究结果,进一步探索和优化鸟类识别任务。

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


3. 数据集处理

        在探索深度学习模型在鸟类识别任务中的应用时,选择和处理一个高质量的数据集是至关重要的第一步。我们精心准备的数据集包含2545张精选图像,旨在通过多样化和平衡的方式,代表了广泛的鸟类种群和环境。这些图像被细致地标记,不仅标注了鸟类所在的位置(通过边界框)还标明了它们的类别,为训练和测试深度学习模型,如YOLOv8/v7/v6/v5,提供了坚实的基础。在这个数据集中,我们有1697张训练图像,424张验证图像,以及424张测试图像,保证了评估模型性能时的严谨性和准确性。博主使用的类别如下:

Chinese_name={'Acadian_Flycatcher':"绿纹捕蝇雀",'American_Crow':"美洲乌鸦",'American_Goldfinch':"金翅雀",
'American_Pipit':"琵琶鸟",'American_Redstart':"红尾鸲",'American_Three_toed_Woodpecker':"三趾啄木鸟",'Anna_Hummingbird':"朱红蜂鸟",'Artic_Tern':
"亚热带燕鸥",'Baird_Sparrow':"贝氏草雀",'Baltimore_Oriole':"巴尔的摩金莺",'Bank_Swallow':"灰沙燕",'Barn_Swallow':
"家燕",'Bay_breasted_Warbler':"湾胸莺",'Belted_Kingfisher':"带翠鸟",'Bewick_Wren':"布威克鹪鹩",'Black_Tern':
"黑燕鸥",'Black_and_white_Warbler':"黑白林莺",'Black_billed_Cuckoo':"黑喙杜鹃",'Black_capped_Vireo':"黑顶莺雀",
'Black_footed_Albatross':"黑足信天翁",'Black_throated_Blue_Warbler':"黑喉蓝林莺",'Black_throated_Sparrow':"黑喉麻雀",
'Blue_Grosbeak':"蓝蜡嘴鸟",'Blue_Jay':"冠蓝鸦",'Blue_headed_Vireo':"蓝头莺雀",'Blue_winged_Warbler':"蓝翅虫森莺",
'Boat_tailed_Grackle':"宽尾拟八哥",'Bobolink':"食米鸟",'Bohemian_Waxwing':"太平鸟",'Brandt_Cormorant':"加州鸬鹚",
'Brewer_Blackbird':"蓝头黑鹂",'Brewer_Sparrow':"布氏麻雀",'Bronzed_Cowbird':"铜色牛鹂",'Brown_Creeper':"金冠戴菊鸟",
'Brown_Pelican':"褐鹈鹕",'Brown_Thrasher':"褐鸫"}

        数据的处理是建立鲁棒模型的关键环节。我们的处理流程包括自动调整图像的方向并去除EXIF方向信息,以及将所有图像调整到640x640像素的统一尺寸。这些步骤确保了数据在输入模型之前的一致性和质量。图像的统一尺寸处理是为了适配深度学习模型的输入需求,而我们选择的拉伸方法是为了保留鸟类图像的完整性,避免在裁剪过程中丢失关键信息。

        深入分析我们的数据集揭示了鸟类实例在类别分布上的均衡性,每个类别的实例数量大体相等,这表明我们的数据集避免了偏向于某个特定类别的问题,这对于深度学习模型是至关重要的,因为它可以避免训练过程中的偏差,并增强模型的泛化能力。此外,边界框的密集分布反映了数据集中目标对象的多样化位置和尺寸,这是挑战深度学习模型以在各种位置和条件下准确识别鸟类的重要因素。

        我们的数据集还展示了边界框中心点的集中趋势和宽高比的分布,揭示了在图像中心区域鸟类出现的可能性更高,以及在不同大小和形态的图像中,鸟类的宽度和高度比例变化很大。这些分析结果对于训练阶段锚框的选择、模型架构的设计,以及后续的性能优化都有直接的指导意义。

        整体而言,我们的数据集为研究者和开发者提供了一个全面而均衡的基础,以探索和推进鸟类识别技术的边界。从精确的标注到彻底的预处理,每一步都是为了确保最终的深度学习模型能够以最准确的方式识别和分类世界各地不同的鸟类。通过提供这一数据集,我们希望促进深度学习在生物多样性监测和生态研究领域的应用,为保护这些不可或缺的自然资源贡献力量。

4. 原理与代码介绍

4.1 YOLOv8算法原理

        在探讨YOLOv8算法的原理时,我们首先需要理解YOLO(You Only Look Once)系列算法的核心理念,即在单次前向传播过程中同时进行目标的定位和分类。这种一步到位的检测方式使得YOLO算法在速度和效率上有着显著的优势。YOLOv8作为这一系列中的最新迭代,不仅继承了前代YOLO算法的这些优点,而且在结构设计和性能上都有了显著的改进,从而进一步提升了检测的准确性和速度。

        YOLOv8算法的结构可以分为三个主要部分:Backbone(主干网络)、Neck(连接网络)和Head(检测头)。在Backbone部分,YOLOv8采用了CSP(Cross Stage Partial networks)结构,这种结构有效地平衡了模型的学习能力和参数量。CSP结构通过部分跨阶段连接,促进了梯度的直接传播,这对于深层网络的学习是极为有益的。它还减少了计算量,因为它允许网络在少量的参数下进行更深层次的特征学习。

        Neck部分则是负责提取不同尺度特征并进行融合的关键模块。YOLOv8的Neck部分利用了SPP(Spatial Pyramid Pooling)结构和FPN(Feature Pyramid Networks)技术。SPP能够提取多尺度的上下文信息,这对于检测不同尺寸的目标至关重要。而FPN采用了一个自顶向下的结构,将高层的语义信息传递到低层,从而实现了从粗到细的特征融合。

        在Head部分,YOLOv8采取了自适应标签分配(adaptive label assignment)策略,这是一种更为灵活的标签分配方式,允许模型根据目标的不同特性自动调整标签。这意味着算法能够根据目标的大小、形状以及其在图像中的上下文信息,动态地选择最合适的锚点,这种策略能够有效地减少标签分配误差,提升模型的性能。

        YOLOv8还引入了AutoML技术,在算法的设计和优化过程中自动寻找最优的模型参数和结构。这种技术可以减轻手动调参的工作量,确保了YOLOv8在不同的检测场景下都能达到最佳性能。此外,YOLOv8还支持云端训练和边缘计算,使得算法可以在资源受限的设备上进行训练和推断,同时还可以利用云端的强大计算能力进行大规模的训练任务。

        综上所述,YOLOv8通过其独特的结构设计,不仅继承了YOLO系列的高速检测特性,而且还通过CSP网络结构和先进的特征融合技术,显著提升了对于各种尺寸目标的检测能力。这些技术的融合使得YOLOv8在目标检测任务中,无论是在准确度还是速度上,都表现出了卓越的性能。

4.2 模型构建

        当我们深入研究如何利用深度学习模型来执行复杂的图像识别任务,如鸟类检测时,编写并理解一个高效的代码基础是至关重要的。在我们的鸟类识别项目中,YOLOv8v5Model.py扮演了核心角色,它将多个先进的技术融合在一起以构建和部署我们的模型。我们首先引入了OpenCV库,这是处理图像数据的标准库,它使我们能够执行如图像大小调整、格式转换等基本操作。PyTorch是当前深度学习的领先框架之一,我们使用它来加载模型和执行前向传播。

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变量,自动检测并使用可用的GPU,如果GPU不可用,则回退到CPU。使用GPU对于深度学习来说是非常重要的,因为它显著加速了模型训练和推理过程。在初始参数ini_params中,我们设置了如模型将要运行的设备、对象置信度阈值和非极大值抑制的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模型。选择计算设备,并确保模型适用于设定的设备,同时对模型进行预热,预热是深度学习实践中常见的一步,它可以在实际使用模型前优化性能。在preprocess和predict方法中,我们处理输入图像并调用模型进行预测。preprocess方法可以被进一步扩展以包含更多的图像处理步骤,例如归一化或数据增强。

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)

        postprocess方法则是将YOLO模型的输出转换成一个易于理解的格式。它提取了识别对象的类别名称、边界框坐标和置信度,并将这些数据组装成一个结果列表,这对于后续的数据分析和可视化至关重要。最后,set_param方法允许我们动态调整运行参数,增加了模型使用的灵活性。这对于在不同条件下运行模型,如调整置信度阈值来获得更严格或更宽松的检测结果,是非常有用的。

        总的来说,YOLOv8v5Model.py提供了从模型加载到预处理、预测及后处理的完整工作流,这不仅展示了如何将YOLO模型应用于实际问题,还揭示了如何通过代码来实现和优化图像识别任务。通过这一详细介绍,我们为希望在该领域开展工作的研究者和开发者提供了一份全面而实用的指南。

4.3 训练代码

        在本博客章节中,我们将深入探讨如何使用YOLOv8深度学习模型进行鸟类识别任务的训练。这个过程不仅涉及到模型的选择和调参,还包括数据集的准备以及训练周期的设定。以下表格详细介绍了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用于处理数据集配置文件,而ultralytics提供了YOLOv8模型的实现。

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

        接下来,我们通过检测是否有可用的GPU来决定模型训练的运算设备。使用GPU可以显著提高训练效率,因此,在有条件的情况下,总是优先选择GPU。

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

        数据集准备:workers和batch两个变量分别设置了数据加载时使用的工作进程数和每批训练的图像数量。合理设置这些参数对于优化计算资源和训练效率是必要的。较少的workers数值有助于减少内存占用,而batch大小则需要根据GPU的内存容量来调整。我们使用数据集的名称来构造配置文件的路径,这个YAML文件包含了数据集的相关信息,如训练、验证和测试数据的位置以及类别标签等。

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

        由于文件路径在不同操作系统间可能有所不同,我们需要确保能够获取到一个统一风格的路径,以免因路径格式问题导致的训练中断。接下来,我们读取并更新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模型并开始训练过程。在训练时,我们指定了许多关键参数,包括数据集的路径、计算设备、工作进程数、图像尺寸、训练周期和批次大小。这些参数共同决定了模型的训练效率和性能。图像尺寸imgsz设定为640x640,这是YOLO模型常用的尺寸,可以平衡模型性能和计算效率。训练周期epochs设置为120,这个数值足够模型学习数据集的特征。

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

        通过上述代码的解读,我们可以看出,构建一个高效的鸟类识别系统不仅需要先进的算法,还需要严谨的训练过程。


5. 实验结果与分析

5.1 训练曲线

        在深度学习的领域,损失函数图和性能指标是评估模型训练效果的关键。图中展示的是YOLOv8模型在训练过程中的各项指标变化,包括损失函数的变化趋势和精确度指标。对于这些结果的分析,能够为我们提供模型性能的深入理解,并指导我们进行进一步的优化。

        从训练损失函数图中可以看出,模型在训练期间的box损失、类别损失(cls_loss)和目标损失(dfI_loss)都呈现出下降的趋势,这意味着模型在学习过程中持续提高了在边界框定位、类别识别以及目标检测方面的性能。损失函数的平滑线表示模型损失随着时间的推移逐渐稳定,并且波动较小,这通常是过拟合得到良好控制的标志。尤其是box损失的显著下降表明了模型在定位鸟类在图像中的精准位置方面的性能提升。

        在验证损失函数图中,我们观察到类似的趋势,所有损失指标都随着训练周期递减,最终达到平稳状态。然而,相对于训练损失,验证损失的波动性略大,这可能是因为验证数据集中的样本多样性或是模型在见过数据和未见过数据上的泛化差异所导致。

        接下来,我们来看性能指标,包括精确度(precision)、召回率(recall)、平均精度均值([email protected])和[email protected]:0.95。精确度反映了模型预测正类的准确性,而召回率指出了模型识别出的正类样本的比例。[email protected]是一个关键的性能指标,用于评价模型在IOU为0.5时的平均准确率。[email protected]:0.95则给出了模型在不同IOU阈值下的整体性能评估,更加严格。这些指标在训练过程中都有所提高,显示模型对鸟类识别任务具有较好的性能,并且有持续进步的空间。

        精确度和召回率的图表中,我们看到在经过初期的波动后,两者都逐渐趋于稳定,并在高水平上保持。mAP指标同样显示了这种正向趋势,模型在经过足够训练周期后,达到了相当高的准确性水平。

        综合这些图表,我们可以得出结论,YOLOv8模型对于鸟类识别任务已经过了良好的训练,并且在各个方面都表现出了不错的性能。损失函数的下降趋势以及性能指标的提升表明了训练过程是成功的。

5.2 混淆矩阵

        在深度学习的领域内,混淆矩阵是一个非常有价值的工具,用于评估分类模型的性能,尤其是在有多个类别时。根据提供的混淆矩阵,我们可以对模型在鸟类识别任务上的性能进行深入分析。

        混淆矩阵的每一行代表了实际的类别,而每一列代表了模型预测的类别。在一个理想的情况下,混淆矩阵的主对角线,即左上角到右下角的斜线,会显示最亮的颜色,表示模型准确地预测了所有类别。任何偏离主对角线的高值都表示模型的分类错误。

        我们可以观察到多数类别的预测正确率相对较高,主对角线上的深色格子表明在这些类别上模型的预测与实际标签高度一致。然而,也存在一些亮色点偏离对角线,这指出了模型混淆了某些类别。这样的误差可能源于类别间的相似性,比如颜色、形状或大小非常相近的不同鸟类,或者是数据集中某些类别样本较少,导致模型未能充分学习区分它们。

        我们可以分析混淆矩阵中的特定区域,如果发现某个类别的预测错误特别高,这可能提示我们需要重新审视这个类别的训练数据,确保样本足够多样化,覆盖了该类别的各种可能表现形式。另外,增加数据增强的策略或者收集更多样本,尤其是那些容易被模型误判的例子,也能够帮助提高模型在这些类别上的识别能力。

        此外,如果发现混淆矩阵的某些行或列特别亮,这表示模型对特定类别的误判率很高,可能是因为模型对这些类别的特征学习不足,或者是数据标注中存在错误。对于这样的情况,除了上述提到的方法,还可以考虑使用更复杂的模型架构,或者应用更细致的参数调优,来尝试改善模型在这些难以区分类别上的表现。

        总之,混淆矩阵为我们提供了一个评估模型性能的宝贵视角,使我们能够识别模型在哪些方面表现良好,以及哪些方面需要改进。通过仔细分析混淆矩阵,并结合其他模型评估指标,我们可以有针对性地优化模型,以提高其在鸟类识别任务上的整体精度和鲁棒性。

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.888 0.912 0.860 0.919
F1-Score 0.81 0.86 0.81 0.84

(3)实验结果分析

        在本次实验中,我们对YOLOv5nu、YOLOv6n、YOLOv7-tiny和YOLOv8n四个版本的YOLO模型在同一数据集上的表现进行了详细的对比分析。实验的目标是评估各个模型在鸟类识别任务上的性能,以决定哪个版本更适合此项任务。为此,我们使用了F1-Score和mAP作为评估指标,它们分别代表了模型准确性和整体性能的衡量标准。

        根据实验结果,YOLOv5nu、YOLOv6n、YOLOv7-tiny和YOLOv8n在mAP评估指标上的得分分别为0.888、0.912、0.860和0.919,而在F1-Score上的得分分别为0.81、0.86、0.81和0.84。显而易见,YOLOv8n在mAP上表现最好,这意味着它在平均精度上超越了其他模型,尤其是在不同置信度阈值下保持了较高的准确率。这种高水平的准确性可能源自YOLOv8n在特征提取、背景抑制以及锚框优化方面的进步。

        同时,YOLOv6n在F1-Score上的表现突出,达到了0.86,这反映了它在精确率和召回率之间达到了很好的平衡。这一点对于鸟类识别来说尤为重要,因为它意味着模型在减少漏检(高召回率)和误检(高精确率)之间取得了良好的权衡。YOLOv6n可能在处理类内变异和背景复杂性时有着优异的表现,这对于在多样化环境中检测多种鸟类至关重要。

        另一方面,尽管YOLOv7-tiny的mAP和F1-Score略低,但其“轻量级”设计意味着在资源有限的环境下,这个模型可能是一个更实用的选择。它牺牲了一些精度,以换取在计算资源受限时的高速处理能力。在对模型进行细致分析时,我们发现YOLOv8n和YOLOv6n在高mAP得分的背后,有着更深层次的网络结构和更高级的特征提取机制,它们可能在多尺度特征检测和复杂情况下的适应性方面有着更优的表现。这在鸟类识别中尤为重要,因为这些任务往往涉及到识别在不同环境和不同光照条件下拍摄的鸟类。

        总结来说,通过这些实验,我们不仅能够明确各个模型的性能,还能深入理解各个版本的YOLO在鸟类识别任务中可能的应用场景。未来的工作可以根据具体的应用需求选择适当的YOLO版本,同时继续在模型结构、训练策略和数据处理等方面进行优化,以提升模型在各方面的表现。通过持续的研究和改进,我们期待开发出更加准确、快速且适应性强的鸟类识别系统,为生物多样性监测和自然保护提供有力的技术支持。


6. 系统设计与实现

6.1 系统架构概览

        在本博客中,我们将深入探讨基于YOLOv8/v7/v6/v5的鸟类识别系统的架构设计。我们的系统设计旨在提供一个高效、准确的鸟类识别平台,利用最先进的深度学习模型来识别和分类不同种类的鸟类。系统主要由以下几个核心组件构成:

  1. 模型加载与预处理:核心的类YOLOv8v5Detector负责加载预训练的YOLO模型,并对输入图像进行适当的预处理,以满足模型的输入要求。这一过程主要通过load_model方法来完成模型的加载,使用preprocess方法对图像数据进行调整和归一化。

  2. 检测与后处理:经过预处理的图像数据将被输入到YOLO模型中,模型的输出通过predict方法获取。随后,postprocess方法对模型的原始输出进行解析和处理,提取出检测到的鸟类对象的信息,包括类别、置信度、边界框等。

  3. 界面与交互设计:我们通过Detection_UI类实现了用户交互界面,使用流行的Web框架Streamlit构建。在这个界面中,用户可以通过上传图片或视频文件,或者直接从摄像头输入图像数据,来进行鸟类检测。用户还可以调整模型参数(如置信度阈值和IOU阈值),以及选择不同的展示模式来查看检测结果。

  4. 结果展示与日志记录:检测完成后,系统会在界面上展示检测结果,包括绘制了边界框的图像和识别出的鸟类信息。LogTable类负责记录每次检测的详细信息,包括检测对象、置信度、检测用时等,方便用户进行后续分析。通过save_to_csv方法,用户可以将检测日志导出为CSV文件。

  5. 摄像头与文件处理process_camera_or_file方法实现了对摄像头捕获的实时视频流和上传的文件(图片或视频)的处理。这一功能使得我们的系统能够适应不同的使用场景,满足更广泛的用户需求。

        在通过以上的系统设计,我们的鸟类识别系统不仅可以高效准确地识别鸟类,还提供了友好的用户交互界面和灵活的使用方式。模型的灵活加载与切换实时检测与日志记录以及用户交互设计等方面的设计,使得本系统既适用于研究和教学目的,也满足了实际应用的需求。在在实现过程中,我们特别注意到了系统的扩展性和可维护性,通过模块化的设计和清晰的代码结构,确保了系统可以轻松地适应未来的技术进步和新需求。

6.2 系统流程

        在我们的基于YOLOv8/v7/v6/v5的鸟类识别系统中,整个流程可以精细化为一系列步骤,每一步骤都对应着代码中的特定类和方法。这种设计不仅保证了系统的高效运行,而且也便于后续的维护和扩展。下面将详细介绍整个系统的流程:

  1. 初始化系统 (Detection_UI.__init__方法):系统通过Detection_UI类的__init__方法进行初始化。这一步骤包括初始化页面布局(setup_page方法),加载样式(def_css_hitml函数),配置模型参数如模型类型、置信度阈值以及IOU阈值,以及初始化相关UI元素。

  2. 设置侧边栏配置 (Detection_UI.setup_sidebar方法):通过setup_sidebar方法配置Streamlit侧边栏,包括模型设置(模型类型、模型文件、置信度阈值、IOU阈值),摄像头配置和识别项目设置(文件类型选择、文件上传器)。

  3. 加载模型 (YOLOv8v5Detector.load_model方法):根据用户在侧边栏中的选择,加载预训练的YOLO模型。这可以是默认的模型文件或用户上传的自定义模型文件。这一步通过YOLOv8v5Detector类的load_model方法完成。

  4. 选择输入源 (Detection_UI.process_camera_or_file方法):用户可以选择不同的输入源进行目标检测,包括实时摄像头捕获、上传的图片文件或视频文件。process_camera_or_file方法根据用户的选择处理不同的输入源。

  5. 处理和显示检测结果 (Detection_UI.frame_process方法和Detection_UI.toggle_comboBox方法): 对于每个输入源,系统使用frame_process方法调用YOLO模型进行目标检测,并通过toggle_comboBox方法处理用户在UI中的交互,如选择特定目标进行过滤显示。

  6. 更新UI和日志记录 (Detection_UI.setupMainWindow方法、LogTable.add_log_entry方法和LogTable.update_table方法):系统通过setupMainWindow方法设置主界面,显示检测结果、进度条、结果表格等。检测过程中的所有重要信息,如检测到的目标类别、位置、置信度和处理时间,都会被记录下来并通过LogTable类的方法进行管理。

  7. 导出结果 (用户点击"导出结果"按钮):用户可以通过点击界面上的"导出结果"按钮,将检测结果以及日志信息导出到CSV文件中,便于后续的分析和报告。

        整个系统设计精巧,流程清晰,易于理解和使用。通过这样的设计,我们能够高效地识别视频或图片中的鸟类,为研究者提供一个强大且便捷的工具。


代码下载链接

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

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

演示与介绍视频https://www.bilibili.com/video/BV1ix421D7o9/
YOLOv8/v7/v6/v5项目合集下载https://mbd.pub/o/bread/mbd-ZZ2Xm5pp
YOLOv8和v5项目完整资源下载https://mbd.pub/o/bread/mbd-ZZ2Xlpxv
YOLOv7项目完整资源下载https://mbd.pub/o/bread/mbd-ZZ2XmZtx
YOLOv6项目完整资源下载https://mbd.pub/o/bread/mbd-ZZ2Xmpdv

完整安装运行教程:

        这个项目的运行需要用到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的深度学习模型在鸟类识别领域的应用,成功开发了一个结合了这些先进算法的鸟类识别系统。通过对多个版本的YOLO模型进行细致的比较和优化,本研究不仅提升了鸟类识别的准确率和实时性,还通过Streamlit创建了一个直观、美观且易于使用的Web应用,使用户能够轻松地进行鸟类识别,从而在生态研究、生物多样性监测等实际应用中发挥重要作用。

        经过一系列实验验证,本文所提出的方法在鸟类识别的准确性和处理速度上都达到了令人满意的水平。同时,我们还提供了完整的数据集处理流程、模型训练和预测的代码,以及基于Streamlit的系统设计和实现细节,为后续的研究者和开发者复现和参考提供了方便。尽管取得了一定的成果,但鸟类识别作为一个复杂多变的任务,仍然面临着许多挑战和改进空间。在未来的工作中,我们计划从以下几个方向进行探索:

  • 模型优化:继续探索更深层次的网络结构和优化策略,如神经网络架构搜索(NAS)技术,以进一步提升模型的性能和效率。
  • 多模态融合:考虑结合图像之外的其他模态信息,如鸟鸣声等,采用多模态学习方法进行鸟类识别,以更全面地理解鸟类的特征。
  • 跨域适应性:研究不同环境下的鸟类识别,通过领域自适应技术提高模型在不同生态环境和季节变化中的泛化能力。
  • 用户交互体验:进一步优化系统的用户界面和交互设计,使其更加人性化、智能化,以满足更广泛用户的需求。
  • 实际应用拓展:探索鸟类识别在生态研究、野生动物保护、城市生态监测等更多实际应用场景中的应用,以发挥其最大的社会和环保价值。

        总之,鸟类识别技术正处于快速发展之中,随着技术的不断进步和应用场景的不断拓展,我们相信在不久的将来,基于深度学习的鸟类识别将在生态保护、生物多样性研究以及公众教育等领域发挥更加重要的作用。


  1. Chen X, Pu H, He Y, et al. An Efficient Method for Monitoring Birds Based on Object Detection and Multi-Object Tracking Networks[J]. Animals, 2023, 13(10): 1713. ↩︎

  2. Chakraborty K, Tyagi S, Shridevi S. Comparative analysis of deep learning models for bird song classification[C]//AIP Conference Proceedings. AIP Publishing, 2023, 2788(1). ↩︎

  3. Jiang T, Zhao J, Wang M. Bird Detection on Power Transmission Lines Based on Improved YOLOv7[J]. Applied Sciences, 2023, 13(21): 11940. ↩︎

  4. Wang Q, Cheng M, Huang S, et al. A deep learning approach incorporating YOLO v5 and attention mechanisms for field real-time detection of the invasive weed Solanum rostratum Dunal seedlings[J]. Computers and Electronics in Agriculture, 2022, 199: 107194. ↩︎

  5. Xie J, Zhong Y, Zhang J, et al. A review of automatic recognition technology for bird vocalizations in the deep learning era[J]. Ecological Informatics, 2023, 73: 101927. ↩︎

标签:鸟类,训练,检测,模型,YOLOv8,v5,v7,识别
From: https://www.cnblogs.com/deeppython/p/18071377

相关文章