Tutorial実装で確認するTensorFlow⑤(Simple Audio Recognition_前編)|DeepLearningの実装 #6

f:id:lib-arts:20190530161346p:plain

ライブラリの使い方を中心に取り扱った記事は深い考察になりづらいのであまり書きたくないのですが、DeepLearning系は仕様の変化が早過ぎるので、DeepLearningの実装に関しては諸々のドキュメントのまとめを備忘録も兼ねてシリーズ化していければと考えています。
#1ではKerasのチュートリアルを元にMLP(MultiLayer Perceptron)やCNNの動作確認、#2ではTensorFlowのチュートリアルを元に簡単な動作確認、#3、#4ではMobileNetを用いた画像分類(image classification)と同じモデルを用いた転移学習について行いました。

Kerasチュートリアルに学ぶ簡単な実装|DeepLearningの実装 #1 - lib-arts’s diary

Tutorial実装で確認するTensorFlow①(Tutorialsの概要とMNIST問題のサンプル実装の確認)|DeepLearningの実装 #2 - lib-arts’s diary

Tutorial実装で確認するTensorFlow②(MobileNetによる画像分類とTensorFlow Hub)|DeepLearningの実装 #3 - lib-arts’s diary

Tutorial実装で確認するTensorFlow③(MobileNetによる転移学習)|DeepLearningの実装 #4 - lib-arts’s diary
#5では画像変換に関しての研究であるPix2Pix[2016]について取り扱いました。

#6、#7では音声認識のシンプルな例として、Simple Audio Recognitionについて取り扱えればと思います。#6では前編として概要の把握やTutorialコードの実行、ソースの簡単な確認まで行えればと思います。
以下目次になります。
1. Simple Audio Recognitionの概要
2. Tutorialコードの実行&結果の確認
3. まとめ


1. Simple Audio Recognitionの概要
1節ではTensorFlowのチュートリアルのSimple Audio Recognitionの概要についてまとめていきます。

f:id:lib-arts:20190607195923p:plain

Simple Audio Recognition  |  TensorFlow Core  |  TensorFlow

上記が該当ページになります。まずは冒頭部を和訳してみます。

This tutorial will show you how to build a basic speech recognition network that recognizes ten different words. It's important to know that real speech and audio recognition systems are much more complex, but like MNIST for images, it should give you a basic understanding of the techniques involved. Once you've completed this tutorial, you'll have a model that tries to classify a one second audio clip as either silence, an unknown word, "yes", "no", "up", "down", "left", "right", "on", "off", "stop", or "go". You'll also be able to take this model and run it in an Android application.

和訳:『このチュートリアルによって、10個の異なった単語を認識する基本的な識別のネットワークを構築する方法を知ることができます。実際のスピーチや音声の認識のシステムはもっと複雑であることについて知っておくことは大事ですが、画像におけるMNISTのようにこの単純なタスクを通して関連技術に関しての基本的な理解をすることができます。このチュートリアルを読み終えることで、1秒の音声を沈黙、知らない単語、"yes"、"no"、"up"、"down"、"left"、"right"、"on"、"off"、"stop"、"go"の12のカテゴリに分類を試みるモデルを得ることができます。このモデルはAndroidアプリケーションの上でも動かすことができます。』
以下、重要事項を要約していきます。
・Preparation
TensorFlowのインストールが必要です。また、学習データとして1GBほどのデータをダウンロードするので、良好なネットワーク環境とコンピュータ上に十分なスペースが必要です。学習は数時間かかるので、このくらいの時間稼働できるマシンが必要です。
・Training

$ python tensorflow/examples/speech_commands/train.py

上記によって学習コードを実行させることができます。詳細は2節で触れます。
・Confusion Matrix(混同行列)

f:id:lib-arts:20190607211330p:plain
分類結果の検証結果として上記のようなConfusion Matrixを計算することができます。対角成分が正答を意味します。(ドキュメントに上がっている上記の例は400ステップほどなので、まだ学習途中のためそこまで良い精度が出ていません)

上記で動かすにあたって知っておくと良さそうな項目は大体抑えられたので、2節では実際にコードの実行と結果の確認を行なっていきます。


2. Tutorialコードの実行&結果の確認
1節では大体の概要についての把握を行いました。1秒の音声データに対し、12カテゴリに分類を行うという音声版のMNISTのような問題設定になっています。
実行にあたっては、

$ python tensorflow/examples/speech_commands/train.py

で実行を行うことができます。

f:id:lib-arts:20190607220432p:plain
実行後はドキュメントの上記で解説されているように、ログが出力されるとされています。

f:id:lib-arts:20190607220505p:plain
実際に実行すると上記のようなログが出力されます。また、400ステップごとに下記のようなConfused Matrixが出力されます。

f:id:lib-arts:20190607220828p:plain
学習はデフォルトでは18,000ステップの実行となっているため、以下途中経過をいくつか貼っていきます。
・800ステップ前後

f:id:lib-arts:20190607221523p:plain
・1600ステップ前後

f:id:lib-arts:20190607221548p:plain
・3200ステップ前後

f:id:lib-arts:20190607221614p:plain
・6400ステップ前後

f:id:lib-arts:20190607221633p:plain
・10000ステップ前後

f:id:lib-arts:20190607221648p:plain
・14000ステップ前後

f:id:lib-arts:20190607221704p:plain
・18000ステップ

f:id:lib-arts:20190607221718p:plain
上記のように最終的には88%ほどの精度になっています。学習が終わった後は下記にしたがって、コンパクトなモデル形式に変換し、かつ推論を行うことができます。

f:id:lib-arts:20190613112848p:plain


3. まとめ
#6ではSimple Audio Recognitionの概要の把握とコードの実行、結果の確認を行いました。
#7では#6で動かしたコードの中身の把握を行っていければと思います。