【人工智能】Transformers之Pipeline(四):零样本音频分类(zero-shot-audio-classification)

​​​​​​​

目录

一、引言

二、零样本音频分类(zero-shot-audio-classification)

[2.1 概述](#2.1 概述)

[2.2 意义](#2.2 意义)

[2.3 应用场景](#2.3 应用场景)

[2.4 pipeline参数](#2.4 pipeline参数)

[2.4.1 pipeline对象实例化参数](#2.4.1 pipeline对象实例化参数)​​​​​​​

[2.4.2 pipeline对象使用参数](#2.4.2 pipeline对象使用参数)

[2.4 pipeline实战](#2.4 pipeline实战)

[2.5 模型排名](#2.5 模型排名)

三、总结


一、引言

pipeline(管道)是huggingface transformers库中一种极简方式使用大模型推理的抽象,将所有大模型分为音频(Audio)、计算机视觉(Computer vision)、自然语言处理(NLP)、多模态(Multimodal)等4大类,28小类任务(tasks)。共计覆盖32万个模型

今天介绍Audio音频的第四篇,零样本音频分类(zero-shot-audio-classification),在huggingface库内仅有4个音频分类模型。

二、零样本音频分类(zero-shot-audio-classification)

2.1 概述

零样本学习是AI识别方法之一。简单来说就是识别从未见过的数据类别,即训练的分类器不仅仅能够识别出训练集中已有的数据类别,还可以对于来自未见过的类别的数据进行区分。这是一个很有用的功能,使得计算机能够具有知识迁移的能力,并无需任何训练数据,很符合现实生活中海量类别的存在形式。。

2.2 意义

在传统AI识别任务中,训练阶段和测试阶段的类别是相同的,但每次为了识别新类别的样本需要在训练集中加入这种类别的数据。一些类别的样本收集代价大,即使收集到足够的训练样本,也需要对整个模型进行重新训练。这都会加大识别系统的成本,零样本学习方法便能很好的解决这个问题。

2.3 应用场景

  • 未知物体识别------例如,模型在"马"、"牛"等类别上训练过,因此模型能够准确地识别"马"、"牛"的图片。当模型遇到"象"这个新类别,由于从未见过,模型无法作出判断。传统解决方案是收集大量"象"的图片,与原数据集一起重新训练。这种解决方案的代价高、速度慢。然而,人类能够从描述性知识中快速学习一个新概念。例如,一个儿童即使没有见过"象",当提供他文本描述"象是一种的大型食草类动物,有长鼻和长牙"。儿童能够根据描述快速学会"象"这一新类别,并能在第一次见到"象"时识别出来。零样本学习与之类似,在没有任何训练样本的情况下,借助辅助知识(如属性、词向量、文本描述等)学习一些从未见过的新概念(类别)。
  • 未知语言翻译------比如说要进行三种语言之间的翻译,按照传统的方法需要分别训练六个网络,在日语和韩语之间没有那么多样本的情况下,训练英语→特征空间→日语,韩语→特征空间→英语这两个网络,那么就可以自动学会韩语→特征空间→日语这个翻译过程。
  • 未知类别图像合成------近年来,对抗网络GAN被用于图像合成,取得了以假乱真的效果。但传统图像合成仅能合成见过的类别的图像。零样本图像合成希望模型能够合成从未见过的类别的图像。已有一些算法通过条件GAN网络实现了零样本图像合成。
  • 图像哈希------传统利用一些训练样本来学习针对某些类别的哈希算法。但这些学习到的哈希算法无法用于新类别。零样本图像哈希,希望在已知类别上学到哈希算法能够运用到新的未知类别上。一些基于属性的零样本哈希算法已经被提出。

2.4 pipeline参数

2.4.1 pipeline对象实例化参数

  • modelPreTrainedModelTFPreTrainedModel)--- 管道将使用其进行预测的模型。 对于 PyTorch,这需要从PreTrainedModel继承;对于 TensorFlow,这需要从TFPreTrainedModel继承。
  • tokenizer ( PreTrainedTokenizer ) --- 管道将使用 tokenizer 来为模型编码数据。此对象继承自 PreTrainedTokenizer
  • feature_extractor ( SequenceFeatureExtractor ) --- 管道将使用的特征提取器来为模型编码数据。此对象继承自 SequenceFeatureExtractor
  • modelcardstrModelCard可选)--- 属于此管道模型的模型卡。
  • frameworkstr可选 )--- 要使用的框架,"pt"适用于 PyTorch 或"tf"TensorFlow。必须安装指定的框架。
  • taskstr,默认为"")--- 管道的任务标识符。
  • num_workersint可选 ,默认为 8)--- 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的工作者数量。
  • batch_sizeint可选 ,默认为 1)--- 当管道将使用DataLoader (传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的批次的大小,对于推理来说,这并不总是有益的,请阅读使用管道进行批处理
  • args_parserArgumentHandler可选) - 引用负责解析提供的管道参数的对象。
  • deviceint可选 ,默认为 -1)--- CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,设置为正数将在关联的 CUDA 设备 ID 上运行模型。您可以传递本机torch.devicestr
  • torch_dtypestrtorch.dtype可选 ) - 直接发送model_kwargs(只是一种更简单的快捷方式)以使用此模型的可用精度(torch.float16,,torch.bfloat16...或"auto"
  • binary_outputbool可选 ,默认为False)------标志指示管道的输出是否应以序列化格式(即 pickle)或原始输出数据(例如文本)进行。

2.4.2 pipeline对象使用参数

  • audiostrList[str]np.arrayList[np.array]------管道处理三种类型的输入:
    • 包含指向音频的 http 链接的字符串
    • 包含音频本地路径的字符串
    • 在 numpy 中加载的音频
  • candidates_labels ( List[str]) --- 该音频的候选标签
  • hypothesis_templatestr可选 ,默认为) --- 与候选标签 "This is a sound of {}"结合使用的句子,通过用候选标签替换占位符来尝试音频分类。然后使用 logits_per_audio 估计可能性

2.4 pipeline实战

首先下载数据集,我们采用ashraq/esc50语音数据集,其中包含2000条语音分类样本。

将数据集加载后,采用task="zero-shot-audio-classification"默认的模型laion/clap-htsat-fused进行零样本语音分类:

python 复制代码
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"

from transformers import pipeline
from datasets import load_dataset

dataset = load_dataset("ashraq/esc50")
#{'filename': '1-100210-B-36.wav', 'fold': 1, 'target': 36, 'category': 'vacuum_cleaner', 'esc10': False, 'src_file': 100210, 'take': 'B', 'audio': {'path': None, 'array': array([0.53897095, 0.39627075, 0.26739502, ..., 0.09729004, 0.11227417,0.07983398]), 'sampling_rate': 44100}}
#pipe = pipeline(task="audio-classification",model="ehcalabres/wav2vec2-lg-xlsr-en-speech-emotion-recognition")
audio = dataset["train"][1]["audio"]["array"]
classifier = pipeline(task="zero-shot-audio-classification")
result = classifier(audio, candidate_labels=["Sound of a dog", "Sound of vaccum cleaner","chirping_birds"])
print(result)

数据集中的第二行为chirping_birds,代码调用结果为

python 复制代码
[{'score': 0.9998486042022705, 'label': 'chirping_birds'}, {'score': 7.838715828256682e-05, 'label': 'Sound of vaccum cleaner'}, {'score': 7.297335105249658e-05, 'label': 'Sound of a dog'}]

2.5 模型排名

在huggingface上,我们筛选零样本音频分类模型,并按下载量从高到低排序,基本没什么人用。。。

三、总结

本文对transformers之pipeline的零样本音频分类(zero-shot-audio-classification)从概述、技术原理、pipeline参数、pipeline实战、模型排名等方面进行介绍,读者可以基于pipeline使用文中的代码极简的进行零样本音频分类推理,模型目前比较冷门,但介于pipeline设计了这个task,为了完整性,还是写了这一篇。

期待您的3连+关注,如何还有时间,欢迎阅读我的其他文章:

《Transformers-Pipeline概述》

【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用

《Transformers-Pipeline 第一章:音频(Audio)篇》

【人工智能】Transformers之Pipeline(一):音频分类(audio-classification)​​​​​​​

【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)

【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)

【人工智能】Transformers之Pipeline(四):零样本音频分类(zero-shot-audio-classification)​​​​​​​

《Transformers-Pipeline 第二章:计算机视觉(CV)篇》

【人工智能】Transformers之Pipeline(五):深度估计(depth-estimation)

【人工智能】Transformers之Pipeline(六):图像分类(image-classification)

【人工智能】Transformers之Pipeline(七):图像分割(image-segmentation)

【人工智能】Transformers之Pipeline(八):图生图(image-to-image)

【人工智能】Transformers之Pipeline(九):物体检测(object-detection)

【人工智能】Transformers之Pipeline(十):视频分类(video-classification)

【人工智能】Transformers之Pipeline(十一):零样本图片分类(zero-shot-image-classification)

【人工智能】Transformers之Pipeline(十二):零样本物体检测(zero-shot-object-detection)

《Transformers-Pipeline 第三章:自然语言处理(NLP)篇》

【人工智能】Transformers之Pipeline(十三):填充蒙版(fill-mask)

【人工智能】Transformers之Pipeline(十四):问答(question-answering)

【人工智能】Transformers之Pipeline(十五):总结(summarization)

【人工智能】Transformers之Pipeline(十六):表格问答(table-question-answering)

【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)

【人工智能】Transformers之Pipeline(十八):文本生成(text-generation)

【人工智能】Transformers之Pipeline(十九):文生文(text2text-generation)

【人工智能】Transformers之Pipeline(二十):令牌分类(token-classification)

【人工智能】Transformers之Pipeline(二十一):翻译(translation)

【人工智能】Transformers之Pipeline(二十二):零样本文本分类(zero-shot-classification)

《Transformers-Pipeline 第四章:多模态(Multimodal)篇》

【人工智能】Transformers之Pipeline(二十三):文档问答(document-question-answering)

【人工智能】Transformers之Pipeline(二十四):特征抽取(feature-extraction)

【人工智能】Transformers之Pipeline(二十五):图片特征抽取(image-feature-extraction)

【人工智能】Transformers之Pipeline(二十六):图片转文本(image-to-text)

【人工智能】Transformers之Pipeline(二十七):掩码生成(mask-generation)

【人工智能】Transformers之Pipeline(二十八):视觉问答(visual-question-answering)

相关推荐
寰宇视讯4 分钟前
“津彩嘉年,洽通天下” 2024中国天津投资贸易洽谈会火热启动 首届津彩生活嘉年华重磅来袭!
大数据·人工智能·生活
Jam-Young6 分钟前
Python中的面向对象编程,类,对象,封装,继承,多态
开发语言·python
Light6017 分钟前
低代码牵手 AI 接口:开启智能化开发新征程
人工智能·python·深度学习·低代码·链表·线性回归
墨绿色的摆渡人18 分钟前
用 Python 从零开始创建神经网络(六):优化(Optimization)介绍
人工智能·python·深度学习·神经网络
春末的南方城市29 分钟前
开源音乐分离器Audio Decomposition:可实现盲源音频分离,无需外部乐器分离库,从头开始制作。将音乐转换为五线谱的程序
人工智能·计算机视觉·aigc·音视频
phoenix@Capricornus31 分钟前
矩阵的对角化&特征值分解
图像处理·线性代数·机器学习·矩阵
小han的日常1 小时前
pycharm分支提交操作
python·pycharm
Chef_Chen1 小时前
从0开始学习机器学习--Day25--SVM作业
学习·机器学习·支持向量机
Hali_Botebie1 小时前
采样率22050,那么CHUNK_SIZE 一次传输的音频数据大小设置多少合适?unity接收后出现卡顿的问题的思路
音视频
矢量赛奇1 小时前
比ChatGPT更酷的AI工具
人工智能·ai·ai写作·视频