個人や企業にとって、ローカルデバイスでディープラーニング推論を実行することが望ましい状況は数多くあります。たとえば、旅行中に信頼できるインターネット接続がない場合や、クラウド サービスにデータを送信する際にプライバシーや遅延の問題に対処しなければならない場合などを想像してみてください。エッジ コンピューティングは、データが生成される場所に物理的に近い場所でデータを処理および分析する方法であり、これらの問題の解決策を提供します。 「OK Google」機能を例に挙げてみましょう。ユーザーの音声を使用して「OK Google」をトレーニングすると、このキーワードを受信すると携帯電話が起動します。この小さなフットプリントのキーワードスポッティング (KWS) 推論は通常、デバイス上でローカルに実行されるため、サービス プロバイダーがいつでも音声を聞いていることを心配する必要はありません。クラウド サービスは、コマンドを実行した場合にのみ開始されます。同様の概念は、インターネットに依存せずにハンズフリーの音声制御が必要なスマート家電やその他の IoT デバイスのアプリケーションにも拡張できます。 さらに、エッジ コンピューティングは IoT の世界に人工知能をもたらすだけでなく、他の多くの可能性と利点も提供します。たとえば、画像や音声データをローカルデバイス上で圧縮表現に事前処理してから、クラウドに送信することができます。このアプローチはプライバシーと遅延の問題に対処します。 Insight 在職中、私は TensorFlow を使用して事前トレーニング済みの WaveNet モデルを Android にデプロイしました。私の目標は、ディープラーニング モデルをデバイスに展開して動作させるためのエンジニアリング上の課題を探求することです。この投稿では、TensorFlow を使用して Android 上で汎用の音声テキスト認識アプリケーションを構築する方法について簡単に説明します。 図 1. プロセスの概要。 Android に WaveNet をインストールする 3 つの手順。 開発環境情報:
詳細なチュートリアルと実装: https://github.com/chiachunfu/speech ステップ1: モデルの圧縮 ディープラーニング モデルをモバイル/組み込みデバイスに展開するには、モデルのメモリ フットプリントを削減し、推論時間を短縮し、消費電力を削減するよう努める必要があります。これらの要件を満たすには、量子化、重みの削減、大規模なモデルから小規模なモデルへの分割など、いくつかの方法があります。 このプロジェクトでは、TensorFlow の量子化ツールを使用してモデル圧縮を実行しました。現在、私はモデル サイズを縮小するためにのみ重み量子化を使用しています。これは、Mac でのテスト結果に基づくと、完全な 8 ビット変換では推論時間の短縮などの追加の利点が得られないためです。 (requant_range のバグのため、Pixel 上で完全な 8 ビット モデルを実行できません)。 8 ビットの量子化ツールは CPU に適していないため、時間は 2 倍になります。量子化に関するより実践的なアドバイスに興味がある場合は、Pete Warden によるこの素晴らしい記事を読んでみてください。 モデルの重みを量子化します。
私のプロジェクトを例にとると、重みを量子化した後、事前トレーニング済みの WaveNet モデルのサイズは 15.5 Mb から 4.0 Mb に減少しました。これで、このモデル ファイルを Android プロジェクトの「assets」フォルダーに移動できます。 ステップ2: Android用TensorFlowライブラリ TensorFlow を使用して Android アプリを構築するには、TensorFlow Android デモから始めることをお勧めします。私のプロジェクトでは、TF スピーチの例をテンプレートとして使用しました。この例の gradle ファイルは、Android 用の TF ライブラリのビルドとコンパイルに役立ちます。ただし、この事前に構築された TF ライブラリには、モデルに必要なすべての操作が含まれていない可能性があります。 WaveNet で必要なすべての操作を検討し、それらを Android apk に適した .so ファイルにコンパイルする必要があります。オペレーションの完全なリストを見つけるために、まず tf.train.write_graph を使用してグラフの詳細を出力します。次に、ターミナルで次のコマンドを実行します。
次に、/tensorflow/tensorflow/core/kernels/ にある BUILD ファイルを編集し、Android ライブラリ セクションの「android_extended_ops_group1」または「android_extended_ops_group2」に不足しているオペレーションを追加します。不要なオペレーションを削除して、.so ファイルを小さくすることもできます。次に、次のコマンドを実行します。
libtensorflow_inference.so ファイルはここにあります:
.so ファイルに加えて、JAR ファイルも必要です。走る:
ファイルはここにあります:
これで、.so ファイルと .jar ファイルを一緒に Android プロジェクトの「libs」フォルダーに移動できます。 ステップ3: Androidでのデータ前処理 ***、入力データをモデルのトレーニングに必要な形式に処理しましょう。オーディオ システムでは、生の音声波形がメル周波数ケプストラム係数 (MFCC) に変換され、人間の耳が音を認識する方法をシミュレートします。 TensorFlow には、この機能抽出を実行できるオーディオ オペレーションがあります。ただし、この変換を実現するにはいくつかのバリエーションがあることがわかりました。図 2 に示すように、TensorFlow オーディオ オペレーションからの MFCC は、librosa によって提供される MFCC とは異なります。 librosa は、事前トレーニング済みの WaveNet の作成者がトレーニング データを変換するために使用する Python ライブラリです。 図 2. librosa と TensorFlow オーディオ オペレーションの MFCC はスケールが異なります。 独自のモデルをトレーニングする場合、または事前トレーニング済みのモデルを再トレーニングする場合は、トレーニング データを処理するときにデバイス上のデータ パイプラインを考慮することが重要です。最終的に、変換を処理するために librosa MFCC を Java で書き直しました。 結果 図 3 にアプリのスクリーンショットと例を示します。モデルには言語モデルがなく、認識は文字レベルのみであるため、文章にはスペルミスがいくつかあります。厳密にテストしたわけではありませんが、量子化後に精度がわずかに低下し、システム全体が周囲のノイズに敏感になっていることがわかりました。 図 3. アプリ内の 2 つの例のスクリーンショット。 以下の表に示す推論時間は、5 秒間の音声に対する 10 回のテストの平均です。重みの量子化はファイル サイズの削減には役立ちますが、推論時間や電力消費の改善にはほとんど役立たないため、両方のプラットフォームで推論時間が短縮されるのではなく、わずかに増加しました。 表 1. 重み量子化前後の推論時間。テスト環境は、Pixel スマートフォンと Macbook air です。 次に何をすればいいでしょうか? このプロジェクトをさらに一歩進め、エッジ デバイスに現実的な音声認識システムを展開するための追加のチュートリアルとウォークスルーをコミュニティに提供する重要なことが 2 つあります。
|
<<: 堅牢な機械学習アルゴリズムの構築方法: ブースティングとバギング
機械学習と人工知能は、データセンターの問題に対する万能薬として宣伝されてきました。その多くは誇大宣伝...
[元記事は51CTO.comより]「アリスマートスピーカーTmall Genie原価499元、クーポ...
一夜にして、AI エージェントが突然インターネット全体を支配しました。業界のリーダーたちは、その焦点...
「サービスとしての」配信モデルの誕生以来、SaaS と PaaS は日常的な技術用語の一部となり、企...
モデルの組み合わせ (ブースティング、バギングなど) と決定木に関連するアルゴリズムは多数あります。...
9月末、OpenAIはChatGPTのマルチモーダル機能の禁止を解除すると発表しました。マルチモーダ...
Leifeng.com(公式アカウント:Leifeng.com)注:少し前、2020年世界インテリジ...
最近、南京、江蘇省、天津などではAI顔認識技術の使用を禁止し始めている。 11月末、南京市のある男性...
[[429163]]人工知能、機械学習、自動化などの先進技術の普及により、企業のビジネスシナリオは大...
ロイター通信は12月、米国国家安全保障局(NSA)が、携帯端末で広く使用されている暗号化技術にバック...
数ヶ月沈黙していたテスラのヒューマノイドロボット、オプティマスプライムがついに新たな展開を見せた。私...
困難な一年であったにもかかわらず、世界中の多くの企業が、ビジネスを最大化するために人工知能(AI)を...