一、背景
AST是面向音频的transform算法,源于ViT,模型的输入并不直接是音频而是频谱图。下图是AST的模型结构图。

从图中可以看出,AST运用了transform的encoder部分,运用了位置编码,详细内容不在本篇解释,本篇主要学会应用。
二、网址
三、运用
该部分主要是对github上的解释做一些个人解读和中文翻译,英文好的推荐直接看原文解释。
模型位置:src/models/ast_models.py
参数讲解:
ASTModel(label_dim=527, \
fstride=10, tstride=10, \
input_fdim=128, input_tdim=1024, \
imagenet_pretrain=True, audioset_pretrain=False, \
model_size='base384')
Parameters:label_dim : 分类类别(default:527).fstride: 频率维度上patch分裂的步幅,对于16*16个patch, fstride=16表示没有重叠,fstride=10表示重叠6(used in the paper). (default:10)tstride: 在时间维度上patch分裂的步幅,对于16*16个patch, tstride=16表示没有重叠,tstride=10表示重叠6(used in the paper). (default:10)input_fdim: 输入频谱图的频带数. (default:128)input_tdim: 输入频谱图的时间帧数. (default:1024, i.e., 10.24s)imagenet_pretrain: 如果为真,使用ImageNet预训练模型. (default: True, we recommend to set it as True for all tasks.)audioset_pretrain: 如果为true,使用完整的AudioSet和ImageNet预训练模型。目前只支持base384模型,fstride=tstride=10. (default: False, we recommend to set it as True for all tasks except AudioSet.) 可以发现要使用预训练的AudioSet条件是很严格的。如果要更灵活的调用感觉和用ViT是一样的,当然输入是不同的。model_size: AST的模型大小,应该在[tiny224, small224, base224,base384] (default: base384).
Input: Tensor in shape [batch_size, temporal_frame_num, frequency_bin_num]. 输入的谱图应该使用数据集的均值和std进行归一化.输入图片的样式应该类似与训练的保持一致。这个可以根据自己的数据格式更改 src/dataloader.py,还有一种简单些的方法是根据dataloader.py更改输入数据格式。
Output: 原始logit(即没有Sigmoid)的张量 in shape [batch_size, label_dim].
就模型运用而言,到这已经结束了,知道模型的调用方式,模型的参数,模型的输入输出,模型的下载位置,其使用和嵌入torchvision库中的model是一致的。至于要实现的其他功能那是其余模块的内容了。
本文介绍了AST,一种基于ViT的面向音频的transform算法,涉及模型结构、参数设置(如label_dim、freq_stride和time_stride)、预训练选项以及如何在PyTorch中使用。着重于GitHub代码实现和调用方法。
1547

被折叠的 条评论
为什么被折叠?



