一、背景
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是一致的。至于要实现的其他功能那是其余模块的内容了。