序文 ディープラーニングは、画像処理、音声認識、自然言語処理の分野で大きな成功を収めていますが、通常は強力なサーバー上で実行されます。スマートフォンがインターネット経由でサーバーにリモート接続する場合も、ディープラーニング技術を使用できますが、速度が遅く、デバイスが良好なネットワーク接続環境にある場合にのみ機能するため、ディープラーニングモデルをスマート端末に移行する必要があります。 スマート端末の CPU とメモリのリソースは限られているため、コンピューティング パフォーマンスとメモリ使用率を向上させるには、サーバー側モデルを量子化し、低精度アルゴリズムをサポートする必要があります。 TensorFlow リリースでは、Android、iOS、Raspberry Pi ハードウェア プラットフォームのサポートが追加され、それらのデバイスで画像分類などの操作を実行できるようになりました。これにより、スマートフォンで動作し、クラウドを常に利用可能にする必要がない機械学習モデルの作成が可能になり、新しいアプリが前面に出てきます。 この記事では主に、「花の名前認識」APPアプリケーションに基づいてTensorFlowモデルをAndroidシステムに適用する方法、サーバー側でTensorFlowモデルをトレーニングしてモデルファイルをスマート端末に移行する方法、TensorFlow Android開発環境とアプリケーション開発APIを構築する方法について説明します。 花の名前アプリ 「花に名前をつけよう」アプリは、AlexNet モデル、Flowers データ、Android プラットフォームを使用して構築されました。 TensorFlow モデルは 5 種類の花のデータでトレーニングされます。次の図に示すように: デイジー タンポポ バラ: バラ ひまわり: ひまわり チューリップ: サーバー上でモデルをトレーニングした後、モデル ファイルを Android プラットフォームに移行し、モバイル フォンに APP をインストールします。効果は以下の図に示されています。インターフェースの上部にはモデル認識の信頼度が表示され、インターフェースの中央には認識される花が表示されます。 TensorFlow モデルを花名認識アプリに適用する方法には、主にモデルの選択と適用、モデル ファイルの変換、Android 開発という重要な手順が含まれます。次の図に示すように: モデルトレーニングとモデルファイル この章では、AlexNet モデルを使用して Flowers データをトレーニングします。 AlexNet は 2012 年に ImageNet で最高スコアを達成し、トップ 5 の精度は 80.2% でした。これは、従来の機械学習分類アルゴリズムとしては非常に印象的です。モデル構造は次のとおりです。 この記事では、トレーニングに TensorFlow 公式 Slim (https://github.com/tensorflow/models/tree/master/slim) AlexNet モデルを使用します。
スマート端末上のモデルファイルのサイズを縮小するために、TensorFlow ではモデルファイルを量子化するのが一般的な方法です。この記事の AlexNet CheckPoint ファイルの Freeze および Quantize 処理後のファイルサイズの変化は次の図に示されています。 量子化演算の主なアイデアは、モデルの推論段階で 32 ビット浮動小数点演算の代わりに同等の 8 ビット整数演算を使用することです。置き換えられた演算には、畳み込み演算、行列乗算、活性化関数、プーリング演算などが含まれます。量子化ノードの入力と出力は浮動小数点数ですが、内部演算は量子化計算によって 8 ビット整数 (0 ~ 255) に変換されます。浮動小数点数と 8 ビット量子化整数の対応関係は次の図に示されています。 量子化 ReLU 演算の基本的な考え方は次の図に示されています。 TensorFlow Androidアプリ開発環境構築 Android システムで推論に TensorFlow モデルを使用するには、libtensorflow_inference.so と libandroid_tensorflow_inference_java.jar の 2 つのファイルが必要です。これら 2 つのファイルは、以下に示すように、TensorFlow ソース コードをダウンロードし、bazel を使用してコンパイルできます。
TensorFlow は、Android 開発用のサンプル フレームワークを提供します。以下は、AlexNet モデルに基づくアプリです。対応するソース コードを変更してコンパイルし、Android インストール パッケージを生成します。
TensorFlow モバイルアプリケーション開発 API Android システムで TensorFlow Inference 操作を実行するには、libandroid_tensorflow_inference_java.jar の JNI インターフェースを呼び出す必要があります。主なインターフェースは次のとおりです。
要約する この記事では、「花を見て名前を識別する」アプリをベースに、Androidスマート端末におけるTensorFlowの応用技術について説明します。まず、AlexNet モデル構造を確認し、AlexNet スリム モデルに基づいて Flowers データをトレーニングしました。次に、トレーニングした CheckPoint データをフリーズおよび量子化して、スマート端末で使用される推論モデルを生成しました。次に、TensorFlow Android アプリケーション開発環境の構築を紹介し、Android 上で TensorFlow のダイナミック リンク ライブラリと Java 開発キットをコンパイルして生成します。最後に、Inference API の使用方法を紹介します。 参考文献
|
<<: Facebookの詐欺行為と戦う方法を学び、CopyCatchアルゴリズムがLockstepをどのように解決するかを見てみましょう
>>: 機械学習を学ぶ前に、まずは確率論の基礎知識を習得する必要があります。
機械学習実験の信頼性を損なう7つのよくある間違い[[328516]]機械学習は私たちの世界を変える素...
研究者たちは、人工知能技術が機密情報のセキュリティを確保するための非常に優れたツールであることを発見...
[[433085]]アルゴリズムは本質的に、1 つ以上の入力を受け入れ、内部計算とデータ操作を実行...
[[407658]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitA...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
6月26日のニュース:大学入試願書の記入は毎年大学入試後の重要なステップであり、受験生や保護者が最も...
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
Java 開発において、一見単純な質問ですが、インターネット上には多くのトピックや質問があります。...
特別なイベントの影響を受けて、非接触型の配達や食事が需要のトレンドになっています。その結果、業界にお...
2016年、AppleはiPhoneを11秒で分解できるリサイクルロボット「Liam」を開発したと発...
[[414411]]近年、顔認識技術は、身元認証からコミュニティのアクセス制御まで幅広く使用され、多...
人工知能は2度のブームを経験し、現在は3度目のブームを迎えています。主な理由は、第一にディープラーニ...