睡眠音频分割及识别问题(四)--YAMNet简介
簡介
YAMNet模型是在 AudioSet 數據集(一個大型音頻、視頻數據集)上訓練的音頻事件分類器。
模型輸入
該模型接收包含任意長度波形的float32一維張量或 NumPy數組,且滿足范圍[-1.0, +1.0]內的單聲道16kHz樣本。在內部,該算法將波形劃分為長度為0.96秒和跳躍0.48秒的滑動窗口,然后在一批這些幀上運行模型。
模型輸出
該模型返回一個 3 元組(scores, embeddings, log_mel_spectrogram),其中
(1)Scores是一個float32的形狀為(N, 521)的張量,N為批大小,521列代表521個對應聲音事件的評分。
(2)Embeddings是一個float32的形狀為(N, 1024)的張量,這個張量是模型最后的全鏈接神經網絡前的平均池化層輸出,我們可以把YAMNet當做一個特征提取器(Embedding)來構建其他模型。
(3)log_mel_spectrogram是一個float32的形狀為(num_spectrogram_frames, 64)的張量,其中num_spectrogram_frames是通過滑動長度為 0.025 秒的頻譜圖分析窗口以 0.01 秒的跳躍從波形產生的幀數。
模型使用
該模型提供了三種使用場景。
(1)在python中直接通過tensorflow_hub插件使用,可以直接通過調用API的方式使用。
model = hub.load(‘https://tfhub.dev/google/yamnet/1’)
可以直接在python代碼中通過該語句直接加載模型。
(2)在Tensorflow的JS版本中使用
const modelUrl = ‘https://tfhub.dev/google/tfjs-model/yamnet/tfjs/1’;
const model = await tf.loadGraphModel(modelUrl, { fromTFHub: true });
可以在通過使用JavaScript開源庫TensorFlow.js來使用該模型
(3)在TFLite中使用
TFLite是為了將深度學習模型部署在移動端和嵌入式設備的工具包,可以把訓練好的TF模型通過轉化、部署和優化三個步驟,達到提升運算速度,減少內存、顯存占用的效果。
TFlite主要由Converter(左)和Interpreter(右)組成。Converter負責把TensorFlow訓練好的模型轉化,并輸出為.tflite文件(FlatBuffer格式)。轉化的同時,還完成了對網絡的優化,如量化。Interpreter則負責把.tflite部署到移動端,嵌入式(embedded linux device)和microcontroller,并高效地執行推理過程,同時提供API接口給Python,Objective-C,Swift,Java等多種語言。簡單來說,Converter負責打包優化模型,Interpreter負責高效易用地執行推理。
此外,TFLite提供了 Java、Python 和 C++ API 庫,可以運行在 Android、iOS 和 Raspberry Pi 等設備上。
參考文獻
[1] https://discuss.tf.wiki/t/topic/1337
總結
以上是生活随笔為你收集整理的睡眠音频分割及识别问题(四)--YAMNet简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习(1)--引言
- 下一篇: 《程序员的呐喊》读书笔记