- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
鸟叫声识别在鸟类保护中具有重要意义。通过适当的声音分类,研究可以自动预测该地区的生活质量。如今,深度学习模型被用于对鸟类声音数据进行高精度的分类。然而,现有的大多数鸟类声音识别模型的泛化能力较差,并且采用复杂的算法来提取鸟类声音特征。为了解决这些问题,本文构建了一个包含264种鸟类的大数据集,以增强模型的泛化能力,然后提出了一个轻量级的鸟类声音识别模型,以MobileNetV3为骨干构建了一种轻量级的特征提取和识别网络。通过调整模型中的深度可分离卷积,提高了模型的识别能力。设计了一种多尺度特征融合结构,并在该结构中加入了金字塔分割注意力(PSA)模块,以提高网络对空间信息和通道信息的尺度提取的适应性。为了提高模型对全局信息的细化能力,在Bneck模块中引入了通道注意机制和普通卷积,使Bneck模型成为Bneck模。实验结果表明,该模型的Top-1和Top-5在自建数据集上识别264种鸟类的准确率分别为95.12%和100%,高于MobileNetV1、MobileNetV2和MobileNetV3。尽管精度低于ResNet50,但该模型的参数数量和浮点运算(FLOP)数量分别只有2.6M和127M。精度仅降低2.25%,同时节省了成本。 从未受破坏的热带雨林到郊区甚至城市,几乎每种环境中都有超过10000种鸟类[1],[2]。如今,世界各地的鸟类都不同程度地灭绝了。例如,夏威夷作为世界灭绝之都,已经失去了68%的鸟类,这可能会破坏整个食物链,从而破坏夏威夷的生态环境。通过种群监测,研究人员可以了解当地鸟类对环境变化和保护工作的反应。能够实时监测鸟类的运动是这项工作的第一步[3].
目前,许多专业人士开始长时间观察鸟类,以保护其物种[4]。然而,大多数监控任务都是由专业人员手动完成的。由于鸟类飞行速度快,难以观察,而且当它们生活在陆地上时,它们很容易被人类活动吓到,无法被相机快速记录下来。因此,使用图像识别来实时识别鸟类既困难又昂贵[5]。更重要的是,许多鸟类被隔离在人迹罕至的高海拔栖息地。由于物理监测的困难,越来越多的专业人员通常通过听觉[6]和记录来识别鸟类。这种被称为生物声学监测的方法可以为濒危鸟类种群的研究提供一种被动且具有成本效益的策略。然而,如果执行手动监测程序,这种监测过程费时费力,无法对生态保护区等区域的鸟类进行实时监测.
相关领域的大多数人倾向于使用物联网设备远程在线监测鸟类种群。由于鸟类保护栖息地大多在野外,在线监测系统很难在良好的网络条件下将鸟类的声音传回服务器进行数据处理、识别和反馈。如果在鸟类保护区进行离线监测,低成本的嵌入式设备无法携带高复杂度的声音特征提取算法和高精度的声音识别算法。因此,针对这一点,本文希望设计一种轻量级的鸟类语音识别算法,该算法不仅可以通过使用简单单一的特征来实现高精度,而且可以使模型足够小,可以在低成本的嵌入式设备中运行.
本文首先收集了大量的鸟类声音数据,构建了264种鸟类的数据集。然后,使用单个梅尔频谱作为声音数据特征。最后,设计了一个轻量级的识别模型来识别鸟的声音特征图,并得到了分类结果。本文的贡献可概括如下:
建立了一个庞大的鸟类数据集:本文构建了一个包含264种鸟类的大型数据集,可以有效地提高模型的泛化能力; 。
基于改进MobileNet设计的轻量级鸟类识别模型:本文设计了一个轻量级的鸟类声音识别模型,以提高鸟类声音识别的 准确性。提出了多尺度特征融合结构,并在该结构中添加了一个PSA(金字塔分割注意力)模块,以增强网络对空间信息和通道信息的尺度提取的适应能力。设计了Bnecks块,引入了通道注意机制和普通卷积,提高了模型对全局信息的细化能力; 。
简单的鸟声特征提取过程:通过提取Mel声谱图并将其作为三维特征叠加到识别模型中,可以获得更好的识别结果.
本文使用的鸟叫声数据来自于Kaggle[23]、[24]、[25]的各种鸟类识别比赛以及中国江苏省南京市八卦洲栖霞区农村地区的一些鸟叫声。对收集到的鸟叫声数据分别进行分类和标记。共有264种鸟类。表1显示了数据集中的鸟叫声以及本文中包含的音频片段的数量。由于数据量大,我们只列出了一个鸟叫声的数据信息。 在本文构建的数据集中,不同鸟叫声数据的数据源、数据格式和采样率不同,因此在提取鸟叫声特征之前,需要进行相应的预处理,以消除输入数据在数据来源、数据格式、采样率方面的差异。此外,本文构建的数据集中每个鸟叫声片段的持续时间不同,但总体而言,每个样本数据的持续时间都在10秒以上,因此本文以5秒的间隔截取样本数据,使每个样本数据持续时间相同。为了消除鸟类音频数据中的幅度差异对模型训练的影响,本文将每个截获的鸟类样本数据的最小-最大值标准化如下: 与人声识别不同,本文的鸟声识别更多地关注鸟声的特征,而不是鸟声的内容。为了简化特征融合算法的复杂度,降低模型的计算量,选择语音识别系统中广泛使用的梅尔谱作为鸟类音频信号的特征。提取特征的过程如图1所示。本文中获得的鸟类音频信号的梅尔频谱定义如下:
为了使深度学习模型能够在移动终端上快速部署和运行,Howard等人[26]提出了用于移动设备的深度可分离卷积(DSC)。与传统的卷积神经网络相比,DSC可以提高模型的训练速度,减少模型的参数、计算量,并且可以在移动终端以更快的速度进行推理。DSC由深度(DW)卷积和逐点(PW)卷积组成,其中DW卷积如图4(a)所示工作,PW卷积如表4(b)所示。 DW卷积对输入图像各自通道中的输入图像执行卷积运算,并且输出特征图具有与输入图像相同数量的通道。它可以有效地获取输入图像的通道信息,但不能在同一位置使用不同通道的特征信息。为了解决这一点,PW卷积需要对DW卷积输出的特征图进行空间组合,扩展输出通道,并提取空间信息。DW卷积和PW卷积的组合导致DSC只需要传统卷积的一个T,如下所示: 其中N是卷积运算的输出通道数,DK是输入图像的大小(假设输入图像的尺寸为DK×DK).
尽管DSC可以减少参数和计算的数量,但DW卷积和PW卷积的顺序组合限制了其特征提取能力。由于特征数据的初始模块总是以低维形式传输,DW卷积无法扩展输出通道。这将导致原始功能的丢失。不仅如此,ReLU激活函数通常在DW卷积之后使用,以引入非线性并加快训练.
对于传统图像来说,由于图像具有丰富的特征,这些缺点可以通过依赖丰富的特征来克服。然而,对于鸟的声谱图特征,低维数据在通过激活函数ReLU后会丢失大量特征,导致低维数据崩溃。因此,如果先进行PW卷积,然后进行DW卷积,可以通过PW卷积将低维特征数据转换为高维数据,从而在特征图中存储大量的空间信息,然后使用PW卷积后的高维特征通过DW卷积提取每个通道的特征信息。通过上述调整,本文提出的鸟声识别模型可以加快推断时间,同时提高准确率.
为了最大限度地提取低维特征,本文重新设计了DSC使用的激活函数,并采用了梯度更平滑的Mish函数,其定义如下: 通过上述方法,改进的DSC可以在不引入太多参数和计算的情况下增强低维特征的提取,从而加快模型的训练和推断时间.
本文设计的轻量级模型的主干部分参考MobileNetV3 Small[27]。本文对MobileNetV3-Small中存在的问题以及本文中数据集实际数据的情况进行了调整和改进。整个模型体系结构如图5和表2所示。 为了增强声音数据的特征提取。本文的灵感来源于神经元在刺激人脑时,由于感受野的大小不同,可以在相同的状态下处理和收集多尺度的空间信息。同时避免了引入过多的参数和计算[28],因此仅在网络架构的初始模块中进行了改进,并增加了本文中改进的多尺度特征融合结构——启始块[29]。改进的Inception块体系结构如图6所示。 在模型的初始阶段,输入数据的特征丰富,因此有必要设计多尺度特征融合结构,以充分提取原始数据的特征。本文使用两个并行分支进行数据特征提取。这两个并行分支是3×3和5×5的多尺度特征提取。在对每个分支进行多尺度特征提取后,引入PSA(Pyramid Split Attention,PSA)模块[30],该模块可以充分捕捉不同尺度的空间信息,丰富特征空间,建立长距离空间注意力依赖机制,提取不同尺度的通道特征,模型架构如图7所示。3×3卷积用于提取原始声音数据的细微特征,5×5卷积用于提取原声音数据的整体特征。考虑到计算量和PSA模块的引入,它不使用更大、更多的卷积核进行初始特征提取操作。 特征提取后的鸟类梅尔谱图样本总数为229164个,选择183690个样本作为训练集,45924个样本作为测试集。在实验中,学习率设置为0.025,批量大小设置为32,历元设置为300,模型优化器为随机梯度下降(SGD,随机梯度下降),损失函数使用交叉熵损失函数,学习率下降策略使用余弦退火[33].
最后此篇关于基于深度学习的鸟类声音识别系统的文章就讲到这里了,如果你想了解更多关于基于深度学习的鸟类声音识别系统的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
新手我目前被这个看似简单的问题所困扰。假设我想写一些关于一群动物从此幸福地繁殖的代码。显然,它们都需要一个 mate() 方法,所以我可以像这样定义一个抽象类: class FemaleAnimal
考虑以下 Python 字典数据和 Python 列表标签:** data = {'birds': ['Cranes', 'Cranes', 'plovers', 'spoonbills', 'spo
我有一个类对象列表,比如说鸟。每只鸟都有一种颜色。我想从这个鸟类列表中轻松获得一组鸟类颜色。最快、最有效的方法是什么? 最佳答案 那可能是: set(bird.color for bird in bi
我是一名优秀的程序员,十分优秀!