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

​​​​​​​

目录

一、引言 

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

2.1 概述

2.2 意义

2.3 应用场景

2.4 pipeline参数

2.4.1 pipeline对象实例化参数​​​​​​​

2.4.2 pipeline对象使用参数 

2.4 pipeline实战

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对象实例化参数

  • model(PreTrainedModel或TFPreTrainedModel)— 管道将使用其进行预测的模型。 对于 PyTorch,这需要从PreTrainedModel继承;对于 TensorFlow,这需要从TFPreTrainedModel继承。
  • tokenizer ( PreTrainedTokenizer ) — 管道将使用 tokenizer 来为模型编码数据。此对象继承自 PreTrainedTokenizer。
  • feature_extractor ( SequenceFeatureExtractor ) — 管道将使用的特征提取器来为模型编码数据。此对象继承自 SequenceFeatureExtractor。
  • modelcardstrModelCard可选)— 属于此管道模型的模型卡。
  • frameworkstr可选)— 要使用的框架,"pt"适用于 PyTorch 或"tf"TensorFlow。必须安装指定的框架。
  • task (str,默认为"")— 管道的任务标识符。
  • num_workersint可选,默认为 8)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的工作者数量。
  • batch_sizeint可选,默认为 1)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的批次的大小,对于推理来说,这并不总是有益的,请阅读使用管道进行批处理。
  • args_parser(ArgumentHandler,可选) - 引用负责解析提供的管道参数的对象。
  • 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进行零样本语音分类: 

import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"from transformers import pipeline
from datasets import load_datasetdataset = 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,代码调用结果为

[{'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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/383698.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux ftp操作记录

一.ftp 创建用户 passwd: user ftpuser does not exist 如果你遇到 passwd: user ftpuser does not exist 的错误,这意味着系统中不存在名为 ftpuser 的用户。你需要首先确认FTP用户是否是系统用户,还是FTP服务器软件(如Pure-FTPd&#xff…

系留无人机在技术上有哪些优势或创新点

系留无人机在技术上具有显著的优势和创新点,主要体现在以下几个方面: 1. 长航时飞行作业: - 系留无人机系统由地面通过市电、发电机或电池组供电,并通过系留线缆将电力传输至无人机,实现了不间断供电。 - 这种供电方式…

【数据分享】2008-2022年我国省市县三级的逐日NO2数据(excel\shp格式)

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000-2022年的省市县三级的逐日PM2.5数据、2013-2022年的省市县三级的逐日CO数据和2013-2022年的省市县三级的逐日SO2数据(均可查看之前的文章获悉详情)! 本次…

【C语言】 二叉树创建(结构体,先序遍历,中序遍历,后续遍历)

二叉树的创建:首先先定义一个结构体,里面包含数据(data),指向左子树的指针(L),指向右子树的指针(R)三个部分 在创建树的函数中,首先先输入…

项目的小结

1.实现实时聊天 1.服务端建立一个ConcurrentHashMap<> 用来存储在线用户&#xff0c;用户账号和socket然后&#xff0c;如果有个人发了信息&#xff0c;就去数据库中查询&#xff0c;然后根据这个在线用户进行传递信息 服务端框架&#xff1a; public class ServerMain {…

C语言 | Leetcode C语言题解之第290题单词规律

题目&#xff1a; 题解&#xff1a; typedef struct node_t {char *key;char *value;struct node_t* pnext; }NODE_T;typedef struct hash_t {NODE_T** hash_list;int size; }HASH_T;HASH_T *hash_init(int size) {HASH_T *hash (HASH_T *)malloc(sizeof(HASH_T));if(NULL h…

搭建本地私有知识问答系统:MaxKB + Ollama + Llama3 (wsl网络代理配置、MaxKB-API访问配置)

目录 搭建本地私有知识问答系统:MaxKB、Ollama 和 Llama3 实现指南引言MaxKB+Ollama+Llama 3 Start buildingMaxKB 简介:1.1、docker部署 MaxKB(方法一)1.1.1、启用wls或是开启Hyper使用 WSL 2 的优势1.1.2、安装docker1.1.3、docker部署 MaxKB (Max Knowledge Base)MaxKB …

近期代码报错解决笔记

1.TypeError: ‘bool’ object is not callable 想print("Type of head:", type(entity_emb[head]))&#xff0c;结果报如下错误&#xff1a; 源代码&#xff1a; 因为 print 仍然被当作一个布尔值处理&#xff0c;而不是作为函数调用。这个问题的根源在于 print …

将YOLOv8模型从PyTorch的.pt格式转换为TensorRT的.engine格式

TensorRT是由NVIDIA开发的一款高级软件开发套件(SDK)&#xff0c;专为高速深度学习推理而设计。它非常适合目标检测等实时应用。该工具包可针对NVIDIA GPU优化深度学习模型&#xff0c;从而实现更快、更高效的运行。TensorRT模型经过TensorRT优化&#xff0c;包括层融合(layer …

2024最新版虚拟便携空调小程序源码 支持流量主切换空调型号

产品截图 部分源代码展示 urls.js Object.defineProperty(exports, "__esModule", {value: !0 }), exports.default ["9c5f1fa582bee88300ffb7e28dce8b68_3188_128_128.png", "E-116154b04e91de689fb1c4ae99266dff_960.svg", "573eee719…

Sqli-labs-master的21—25通关教程

目录 Less-21(闭合) 查询数据库名 查询数据库中的表 查询表中字段名 查询表中数据 Less-22&#xff08;"闭合&#xff09; 查询数据库名 查询数据库中的表 查询表中字段名 查询表中数据 Less-23 查询数据库名 查询数据库中的表 查询表中字段名 查询表中数据…

Docker核心技术:Docker的基本使用

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Docker核心技术 系列文章&#xff1a;Docker的基本使用&#xff0c;其他文章快捷链接如下&#xff1a; 应用架构演进容器技术要解决哪些问题Docker的基本使用&#xff08;本文&#xff09;Docker是如何实现的 3…

14.死信队列

介绍 死信就是无法被消费的消息。生产者将消息投递给broker或者直接到队列里&#xff0c;消费者从队列中取出消息进行消费。但是某些时候由于特定的原因导致queue中的某些消息无法被消费&#xff0c;这样的消息如果没有后续处理&#xff0c;就变成了死信。有死信自然就有死信队…

【C++跬步积累】—— list模拟实现(含源代码,超详细)

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;C跬步积累 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日一题 &#x1f7e1; Linux跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0…

【AIGC】构建自己的谷歌搜索引擎服务并使用

一、谷歌 谷歌的搜索引擎需要自己创建服务才能启用检索api。&#xff08;需自行翻墙和创建自己的谷歌账号&#xff09; 1.1 API服务创建 1&#xff09;登陆https://console.cloud.google.com/: 2&#xff09; 选择新建项目&#xff0c;取号项目名即可&#xff08;比如:Olin…

arinc664总线协议

AFDX总线协议简介 &#xff08;1&#xff09;AFDX的传输速率高&#xff1a;带宽100MHZ&#xff0c;远远高于其他的类型的航空总线。&#xff08;2&#xff09;AFDX网络的鲁棒性高&#xff1a;AFDX的双冗余备份网络可以在某一个网络出现故障时&#xff0c;仍能正常通讯。 其中…

IP数据报结构详解:从基础到进阶

目录 IP数据报的格式 IP数据报首部的固定部分 IP数据报首部的可变部分 实例分析&#xff1a;数据报的分片 生存时间&#xff08;TTL&#xff09;与协议 首部检验和 总结 在网络通信中&#xff0c;IP数据报是至关重要的基本单元。本文将带您深入了解IP数据报的格式及其各个…

聚焦保险行业客户经营现状,概述神策数据 CJO 解决方案

触点红利时代&#xff0c;企业的经营需求从「深度的用户行为分析」转变为「个性化、全渠道一致的客户体验」。客户旅程编排&#xff08;Customer Journey Orchestration&#xff0c;简称 CJO&#xff09;从体验出发&#xff0c;关注客户需求、感受和满意度&#xff0c;能够帮助…

JavaWeb笔记_JSTL标签库JavaEE三层架构案例

一.JSTL标签库 1.1 JSTL概述 JSTL(jsp standard tag library):JSP标准标签库,它是针对EL表达式一个扩展,通过JSTL标签库与EL表达式结合可以完成更强大的功能 JSTL它是一种标签语言,JSTL不是JSP内置标签 JSTL标签库主要包含: ****核心标签 格式化标签 …

Windows本地启动Redis

找到本地redis目录 输入cmd,然后输入redis-server.exe redis.windows.conf&#xff0c;默认端口为6379 再新打开一个cmd&#xff0c;输入redis-cli.exe -p 6379 -a &#xff08;你在redis.windows.conf中设置的密码&#xff09;