🚀 hubert-finetuned-animals
hubert-finetuned-animals
是 facebook/hubert-base-ls960
的微调版本,专门用于动物声音分类任务。它能识别 ESC - 50 数据集中特定动物的声音,在生物声学监测、教育工具和野生动物保护等领域有重要应用价值。
🚀 快速开始
你可以在这里试用该模型:
动物声音分类空间
✨ 主要特性
- 精准分类:在评估集上实现了 0.95 的准确率,能有效识别多种动物声音。
- 应用广泛:可用于野生动物研究、动物教育内容或娱乐等需要动物声音识别的软件应用。
📦 安装指南
文档未提及安装步骤,暂不展示。
💻 使用示例
基础用法
import librosa
import torch
from transformers import HubertForSequenceClassification, Wav2Vec2FeatureExtractor
model_name = "ardneebwar/wav2vec2-animal-sounds-finetuned-hubert-finetuned-animals"
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(model_name)
model = HubertForSequenceClassification.from_pretrained(model_name)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
model.eval()
def predict_audio_class(audio_file, feature_extractor, model, device):
speech, sr = librosa.load(audio_file, sr=16000)
input_values = feature_extractor(speech, return_tensors="pt", sampling_rate=16000).input_values
input_values = input_values.to(device)
with torch.no_grad():
logits = model(input_values).logits
predicted_id = torch.argmax(logits, dim=-1)
predicted_class = model.config.id2label[predicted_id.item()]
return predicted_class
audio_file_path = "path_to_audio_file.wav"
predicted_class = predict_audio_class(audio_file_path, feature_extractor, model, device)
print(f"Predicted class: {predicted_class}")
📚 详细文档
模型描述
HuBERT 模型最初在大量未标记的音频数据上进行训练,这里针对动物声音分类的下游任务进行了微调。这种微调使模型能够专门识别不同的动物声音,如狗、公鸡、猪、牛、青蛙、猫、母鸡、昆虫、绵羊和乌鸦的声音,这在生物声学监测、教育工具和更具互动性的野生动物保护工作等应用中特别有用。
预期用途和限制
预期用途
该模型旨在对音频片段中的特定动物声音进行分类。它可用于与野生动物研究相关的软件应用、与动物相关的教育内容,或用于需要动物声音识别的娱乐目的。
限制
虽然该模型显示出较高的准确率,但它是在 ESC - 50 数据集的有限类别上进行训练的,可能无法涵盖所有可能的动物声音。其性能会因音频质量、背景噪音以及训练数据中未涵盖的动物声音变化而有显著差异。
训练和评估数据
该模型在 ESC - 50 数据集的一个子集上进行了微调,这是一个为环境声音分类任务设计的公开可用的集合。这个子集专门只包括与动物声音相关的类别。数据集中的每个类别包含 40 个示例,为模型训练和评估提供了多样化的样本。
训练过程
训练步骤
- 预处理:将音频文件转换为频谱图。
- 数据划分:将数据划分为 70% 的训练集、20% 的测试集和 10% 的验证集。
- 微调:在训练集上对模型进行 10 个周期的微调。
- 评估:在每个周期后在验证集上评估模型的性能,以监测改进并防止过拟合。
训练超参数
属性 |
详情 |
学习率 |
5e - 05 |
训练批次大小 |
8 |
评估批次大小 |
8 |
随机种子 |
42 |
优化器 |
Adam(betas=(0.9,0.999),epsilon=1e - 08) |
学习率调度器类型 |
线性 |
学习率调度器预热比例 |
0.1 |
训练周期数 |
10 |
训练结果
训练损失 |
周期 |
步数 |
验证损失 |
准确率 |
2.1934 |
1.0 |
45 |
2.1765 |
0.3 |
2.0239 |
2.0 |
90 |
1.8169 |
0.45 |
1.7745 |
3.0 |
135 |
1.4817 |
0.65 |
1.3787 |
4.0 |
180 |
1.2497 |
0.75 |
1.2168 |
5.0 |
225 |
1.0048 |
0.85 |
1.0359 |
6.0 |
270 |
0.9969 |
0.775 |
0.7983 |
7.0 |
315 |
0.7467 |
0.9 |
0.7466 |
8.0 |
360 |
0.7698 |
0.85 |
0.6284 |
9.0 |
405 |
0.6097 |
0.9 |
0.8365 |
10.0 |
450 |
0.5596 |
0.95 |
框架版本
- Transformers 4.33.2
- Pytorch 2.0.1+cu118
- Datasets 2.14.5
- Tokenizers 0.13.3
GitHub 仓库
动物声音分类
🔧 技术细节
该模型基于 HuBERT 架构,通过对 ESC - 50 数据集子集的微调,使其能够专注于动物声音的分类。在训练过程中,使用了一系列的预处理和优化步骤,如将音频转换为频谱图、合理划分数据集、设置合适的超参数等,以提高模型的性能和泛化能力。同时,在每个训练周期后对模型进行验证评估,有助于防止过拟合,确保模型在不同的音频数据上都能有较好的表现。
📄 许可证
本模型采用 Apache - 2.0 许可证。