1.任务概述
1.1竞赛目标
鸟类是生物多样性变化的极佳指标,因为它们流动性强,对栖息地的要求多种多样。因此,物种组合和鸟类数量的变化可以说明恢复项目的成败。然而,经常在大面积区域内开展传统的基于观察者的鸟类生物多样性调查不仅成本高昂,而且在后勤方面也极具挑战性。相比之下,被动声学监测(PAM)与基于机器学习的新型分析工具相结合,使保护工作者能够以更高的时间分辨率对更大的空间范围进行采样,并深入探索恢复干预与生物多样性之间的关系。
在本次竞赛中,您将利用机器学习技能,通过声音识别研究不足的印度鸟类物种。具体来说,你们将开发处理连续音频数据的计算解决方案,并通过其叫声识别物种。最优秀的作品将能够利用有限的训练数据训练出可靠的分类器。如果成功,您将帮助推进目前保护印度西高止山脉鸟类生物多样性的工作,包括由蒂鲁帕蒂(Tirupati)国际科学研究所V. V. Robin实验室领导的工作。
1.2背景
面对栖息地改变和气候变化带来的快速人为压力,我们需要利用最新的保护工具和技术来监测生物多样性。通过 Kaggle 竞赛,我们旨在从声音景观中对西高止山脉的鸟类进行自动检测和分类。
西高止山脉是全球生物多样性热点地区,山脉沿印度西南海岸延伸。这里有多种多样的生态系统,支持着非同寻常的生物多样性。这些生态系统包括高海拔森林-草原镶嵌区、热带干燥落叶林和湿润常绿雨林等。此外,该地区还居住着大量人口,他们的生活依赖于森林和该地区提供的自然资源。从鸟类的角度来看,该地区的鸟类种类繁多,其中有几种特有和濒危物种在其他地方都找不到。然而,这片山脉正在经历着剧烈的地貌和气候变化,对生物多样性造成了负面影响。因此,我们需要保护技术和工具来帮助我们快速评估和监测鸟类多样性。
本次 Kaggle 竞赛的总体目标包括
(1) 在声景数据中识别西高止山脉天空之境(sky-islands)的特有鸟类。
(2) 利用有限的训练数据检测/分类濒危鸟类物种(受保护物种)。
(3) 检测/分类了解甚少的夜间鸟类物种。
有了你们的创新,研究人员和保护工作者将更容易准确地调查鸟类种群趋势。因此,他们将能够评估威胁,并定期、更有效地调整保护行动。
本次竞赛由(按字母顺序排列)开姆尼斯理工大学、谷歌研究院、印度科学教育与研究院(IISER)提鲁帕提分院、康奈尔鸟类学实验室杨丽莎保护生物声学中心、LifeCLEF 和 Xeno-canto 共同组织。
1.3评估
本次竞赛的评估指标是macro-averaged ROC-AUC的一个版本,该版本忽视了没有正向标签的类。
P (Positive) 和 N(Negative) 代表模型的判断结果
T (True) 和 F(False) 评价模型的判断结果是否正确
FP: 假正例,模型的判断是正例 (P) ,实际上这是错误的(F),连起来就是假正例
FN:假负例,模型的判断是负例(N),实际上这是错误的(F),连起来就是假正例
TP:真正例, 模型的判断是正例(P),实际上它也是正例,预测正确(T),连起来就是真正例
TN:真负例,模型的判断是负例(N),实际上它也是负例,预测正确(T),就是真正例
Accuracy:准确率
准确率=预测正确的样本数/所有样本数,即预测正确的样本比例(包括预测正确的正样本和预测正确的负样本)。
Precision:查准率
用于衡量模型对某一类的预测有多准。
Recall:召回率(真正类率)
指的是某个类别的Recall。Recall表示某一类样本,预测正确的与所有Ground Truth的比例。
FPR:负正类率
代表分类器预测的正类中实际负实例占所有负实例的比例。FPR = 1 - TNR
TNR:真负类率
代表分类器预测的负类中负实例占所有负实例的比例,TNR=1-FPR
ROC 和 AUC
ROC空间将负正类率(FPR)定义为 X 轴,真负类率(TPR)定义为 Y 轴。
给定一个二元分类模型和它的阈值,就能从所有样本的(阳性/阴性)真实值和预测值计算出一个 (X=FPR, Y=TPR) 座标点。 在这条线的以上的点代表了一个好的分类结果(胜过随机分类),而在这条线以下的点代表了差的分类结果(劣于随机分类)。
AUC:ROC曲线下方的面积(英语:Area under the Curve of ROC ),其意义是:
- 因为是在1x1的方格里求面积,AUC必在0~1之间。
- 假设阈值以上是阳性,以下是阴性;
- 若随机抽取一个阳性样本和一个阴性样本,分类器正确判断阳性样本的值高于阴性样本之概率 ;
- 简单说:AUC值越大的分类器,正确率越高。
1.4提交格式及代码要求
对于每个 row_id,您应该预测特定鸟类物种出现的概率。每种鸟类有一列,因此您需要为每一行提供 182 项预测。每行涵盖 5 秒钟的音频窗口。
这是一项代码竞赛
必须通过笔记本提交代码。要在提交后激活 "提交 "按钮,必须满足以下条件:
CPU 笔记本运行时间 <= 120 分钟
GPU 笔记本提交无效。技术上可以提交,但只有 1 分钟的运行时间。
禁用互联网访问
允许自由公开外部数据,包括预训练模型
提交文件必须命名为 submission.csv
@misc{birdclef-2024, author = {HCL-Rantig, Holger Klinck, Maggie, Sohier Dane, Stefan Kahl, Tom Denton, Vijay Ramesh}, title = {BirdCLEF 2024}, publisher = {Kaggle}, year = {2024}, url = {https://kaggle.com/competitions/birdclef-2024} }
2.数据集概述
2.1数据集说明
您在本次竞赛中面临的挑战是识别在西高止山脉全球生物多样性热点地区录制的录音中哪些鸟在鸣叫。这对出于保护目的监测鸟类种群的科学家来说是一项重要任务。更准确的解决方案可以实现更全面的监测。
本次竞赛使用隐藏测试集。在对您提交的笔记本进行评分时,您的笔记本将提供实际测试数据。
2.2具体文件
train_audio/ 训练数据由 xenocanto.org 用户慷慨上传的单个鸟类叫声的简短录音组成。这些文件已酌情降低采样率至 32 kHz,以匹配测试集音频,并转换为 ogg 格式。训练数据应包含几乎所有相关文件;在 xenocanto.org 上查找更多文件不会有任何益处,并感谢您的合作以减轻其服务器的负担。
test_soundscapes/ 当您提交笔记本时,test_soundscapes 目录中将包含约 1100 条录音,用于评分。这些录音长度为 4 分钟,采用 ogg 音频格式。文件名是随机的,但一般格式为 soundscape_xxxxxx.ogg。加载所有测试音景大约需要 5 分钟。
unlabeled_soundscapes/ 与测试音频相同录音位置的未标记音频数据。
train_metadata.csv 为训练数据提供了大量元数据。最直接相关的字段有
primary_label - 鸟类物种代码。您可以通过将代码附加到 https://ebird.org/species/ 来查看鸟类代码的详细信息,如 https://ebird.org/species/amecro 表示美洲乌鸦。并非所有物种都有自己的页面;有些链接会失败。
latitude&longitude:记录地点的坐标。有些鸟类可能有当地的 "方言",因此您可能需要在训练数据中寻求地理多样性。
author - 提供录音的用户。
filename:相关音频文件的名称。
sample_submission.csv 有效的样本提交。
row_id: 预测的 soundscape_[soundscape_id]_[end_time]的标头。
[bird ID]: 有 182 个鸟类 ID 列。您需要预测每一行出现每种鸟类的概率。
eBird_Taxonomy_v2021.csv - 不同物种之间关系的数据。
3.音频深度学习
原作者:Ketan Doshi
链接:https://medium.com/search?q=Audio+Deep+Learning+Made+Simple
4.kaggle实战
4.1综述
这个任务在学完简单的音频深度学习以后就可以知道本身并不是特别困难,作为一名kaggle小白以及python初学者,我的目标就是完整地完成一个相对复杂的任务(代码能跑通就谢天谢地了),所以这里我只简要对数据集进行分析,并没有使用未标注样本参与训练,并将现有的方法进行组合。
在评估中有一项尤为值得注意,那就是最终的模型对新样本的运行时间需要在cpu下120min内完成,这其实相当严苛,所以对于模型的选取要慎重,我采用的是Efficientnet_b0模型,尝试了使用Efficientnet_b3,但是在我的代码框架下会超过时限。而b1和b2与b0性能相差不大,所以最后就选用b0模型了。
整个任务大体可以分为三步,首先是对数据进行分析,建立特征工程,然后是选择合适的模型训练,调整参数在验证集上获得相对满意的结果,最后在测试集上进行测试,并提交结果。
音频的处理方式其实有很多种,目前主流的方式是将其转换为频谱图然后直接套用图像分类的网络,非常简单粗暴。我也选择了这个路线。至于那种频谱还是有考量的,最常用的是梅尔频谱图,但是梅尔频谱图本质上根据人类听音习惯进行的特殊变换,而鸟类的发声区域要比人类的听音习惯更复杂一些。
此外不同地区的同种鸟类还存在方言的情况,这里我也稍微偷懒没去用鸟类栖息地图等信息进行聚类,只是单纯进行了数据增强,希望能提高训练出来模型的泛化能力。