機械学習を利用した、よりスマートなアプリを開発する

機械学習(ML)とは、アプリが経験をもとに学習と改善を行うように明示的にプログラミングされていなくても、それを自動的に実行できるようにするプログラミング手法です。ML は特に、画像やテキストなどの非構造化データを使用するアプリや、多数のパラメータを扱う問題(スポーツの優勝チームの予測など)に適しています。

Android は、機械学習用のさまざまなツールと手法をサポートしています。経験豊富な Android デベロッパーの方も、Android アプリの開発を始めたばかりの方も、以下の ML に関するリソースを活用することで最善の結果を得ることができます。

主な ML 開発分野

Android デベロッパーは今後、ML モデルの推論や導入に注目するようになるでしょう。状況によっては、モデルの構築やトレーニングに関わることになるかもしれません。

機械学習対応の設計

他のテクノロジーと同様に、機械学習をソリューションとして適用するには、プロダクト マネージャー、デザイナー、デベロッパーが協力し合い、プロダクトの目標を定めて設計と構築を行い、これを繰り返し行う必要があります。Google では、機械学習に関する以下の 2 つのガイドを作成しています。

モデルの構築とトレーニング

機械学習には、特定のタスク(予測の作成、入力の分類や認識など)を実行するようにトレーニングされたモデルが必要です。既存のモデルを選択(場合によってはカスタマイズ)したり、ゼロからモデルを作成したりすることも可能です。モデルの作成とトレーニングは、開発マシン上で行うか、クラウド インフラストラクチャを使用して行います。

トレーニング済みのモデル

事前トレーニング済みのモデルは、ML KitGoogle Cloud で入手できます。詳しくは、次のセクションをご覧ください。

TensorFlow で独自のモデルを作成する方法

以下の TensorFlow のリソースを利用して、実践的な開発体験を積むことができます。

推論

推論とは、特定のタスクを実行するためにすでにトレーニングされた機械学習モデルを使用するプロセスです。

Android デベロッパーは、推論をデバイスで実行するか、リモートからアクセスされるクラウド サービスを使用するかを決める必要があります。この意思決定を行う際に考慮すべき要素がいくつかあります。

デバイスでの推論クラウドベースの推論
レイテンシ レイテンシを低くするとリアルタイムのエクスペリエンスが向上する 非同期通信と使用可能な帯域幅がレイテンシに影響することがある
リソース 特定のデバイスのリソース(処理能力やストレージなど)がパフォーマンスを制限することがある クラウドベースのリソースは強力で、ストレージ容量が大きい
オフライン / オンライン オフラインで動作できる場合、ネットワーク インフラストラクチャがほとんどまたはまったくない状態で実行する際に有利になる ネットワーク接続が必要
コスト 電池使用量、モデルのダウンロード時間(エンドユーザー) データ転送の帯域幅(エンドユーザー)、コンピューティング料金(デベロッパー)
プライバシー ユーザーデータが常にデバイス上に保持される データがデバイスの外部に送信されることがあり、追加の予防措置が必要になる場合がある

次の表に、各種類の推論で利用可能な開発オプションを示します。

デバイスでの推論クラウドでの推論

ML Kit

Google Cloud

Google Cloud で独自のカスタム ビジョンモデルをトレーニングし、結果として生成されたモデルを Android デバイスとその他のエッジデバイスで実行します。

TensorFlow Lite

TensorFlow Lite を使用すると、トレーニング済みの TensorFlow モデルをデバイス上のソリューションとして提供できます。

ML Kit

Google Cloud API

導入

デプロイメントは、デバイスでの推論を行う際に Android で使用するモデルをパッケージ化および更新するプロセスです。これには以下の 3 つのオプションがあります。

ML モデルを Android アプリとパッケージ化する
モデルは、他のアセットと同じように、アプリとともにデプロイされます。モデルを更新する場合、アプリを更新する必要があります。ML モデルをアプリとパッケージ化する方法には以下の 2 つがあります。
  • ML モデルを Android APK とパッケージ化する: これが最も基本的な方法です。
  • Android App Bundle: デベロッパーは、デバイスのアーキテクチャ(32 / 64 ビット)に適したバージョンのみを含めることができます。また、ML の機能を動的に読み込むこともできます。
実行時にモデルを提供する
この方法では、アプリとは無関係にモデルを更新できます。また、A/B テストを容易に実行することもできます。ML Kit カスタムモデルの機能を使用してカスタムモデルを配信したり、専用のインフラストラクチャでモデルのダウンロードをホストしたりできます。
両方の組み合わせ
モデルを新しいバージョンに更新するときに、モデルがダウンロードされるのをユーザーが待たずに済むように、デベロッパーがモデルの初期バージョンを Android アプリとパッケージ化することはよくあります。

事前トレーニング済みの一部の ML Kit モデル(テキスト認識とバーコード スキャン)では、Google Play 開発者サービスで提供されている共有モデルを使用して、APK のサイズを縮小することができます。

デベロッパー ストーリー

不可能を可能にする

Android アプリに ML を追加することで、さまざまな状況下で正常に機能することが極めて困難だったアプリ(確実なバーコード スキャンなど)や、以前はそもそも不可能だったアプリ(画像検出やテキスト感情分析など)をこれまでにない方法で開発することができます。

Lose It!

Lose It! は、ダイエットを支援するカロリー追跡アプリです。食べたものを記録すると、消費カロリーが計算されます。Lose It! は、ユーザーがライブラリに登録されていない新しい食べ物を入力するときに、栄養表示ラベルをスキャンしてデータを取り込めるよう、ML Kit のテキスト認識 API を使用しています。

PlantVillage

PlantVillage ではキャッサバの病気を検出することができます。ペンシルベニア州立大学と国際熱帯農業研究所は、モバイル デバイスでオフライン実行が可能なカスタムの TensorFlow モデルを使用して、農業従事者が植物の病気の初期兆候を検出できるようサポートしています。

Fishbrain

Fishbrain アプリは、各地域の釣り場マップや釣り予報を提供し、数百万人もの釣り好きの人たちを結び付けています。また、ML Kit カスタムモデルを使用して、カスタマイズされた最新の TensorFlow Lite モデルを提供しています。