MLKit for Firebase触ってみた(0) -概要/事前準備編-

 先日開催されたGoogle I/O 2018。今年も様々な最新技術がお披露目され、僕も必死こいてキャッチアップしています。
 今回の記事では、「MLKit for Firebase」について、概要と事前準備をまとめて紹介しようと思います。

 実際にAndroidアプリに実装し、試用した時のサンプルコードは別記事にまとめます。急いでいる人は以下のリンクから読みたい記事に飛んでください。

  • 概要/事前準備編: この記事
  • 文字認識編: Link
  • 顔認識編: Link
  • バーコードスキャン編: 執筆中…
  • 物体認識編: 執筆中…

概要

” Googleの公式ドキュメントより引用

ML Kit is a mobile SDK that brings Google’s machine learning expertise to Android and iOS apps in a powerful yet easy-to-use package. Whether you’re new or experienced in machine learning, you can implement the functionality you need in just a few lines of code.

There’s no need to have deep knowledge of neural networks or model optimization to get started. On the other hand, if you are an experienced ML developer, ML Kit provides convenient APIs that help you use your custom TensorFlow Lite models in your mobile apps.

 簡単に言うと、MLKit for FirebaseはGoogleが提供する機械学習の技術をモバイル環境で手軽に使えるようにするSDKです。ニューラルネットワークやモデル最適化への深い知識を持たないデベロッパーでも、Android/iOSアプリに機械学習を利用した以下6つの機能を組み込むことができるようになります。

  1. 文字認識(Text recognition)
  2. 顔認識(Face detection)
  3. バーコードスキャン(Barcode scanning)
  4. 物体認識(Image labeling)
  5. ランドマーク認識(Landmark recognition)
  6. カスタムモデル(Custom model inference)

On-deviceとCloudの違い

 MLKit for Firebaseには、APIをOn-deviceとCloudのどちらかを選択できる大きな特長があります。
それぞれ長所と欠点があり、以下のようになっています

On-device

前もってダウンロードしたモデルを端末上で利用して処理を実行するため、

  • ○: ネットワークへの接続が不要
  • ○: 処理が早い
  • ○: いくら使っても無料(2018.05.13現在)
  • ×: Cloudと比べると精度が低い、得られる情報が制限される

Cloud

処理の度にGCP上の機械学習APIを叩くため、

  • ○: On-deviceと比べ認識精度が高い、得られる情報に制限がない
  • ×: ネットワーク接続が必要
  • ×: 通信が発生するため、処理が遅い
  • ×: 月1000リクエストを超えると料金が発生する

ネットワーク接続不要かつ、かなりのスピードが出るOn-deviceのAPIはすごく魅力的に見えますが、実際のところ精度や情報量の豊富さは圧倒的にCloudに軍配が上がる印象です。

事前準備

 その名前の通り、MLKit for FirebaseはFirebaseのいち機能として提供されるSDKのため、利用するにはFirebaseの設定が必要となります。
事前準備は、「既存のAndroidプロジェクトにFirebaseを追加し、利用できるようにする」ケースを想定し、進めていきます。

また、追加には

  • Android Studioの「Firebase Assistant」から追加
  • 「Firebase console」から手動で追加

の2通りの方法がありますが、今回はFirebase consoleから手動追加する方法をとります。

1. Firebaseプロジェクトの作成

Firebase consoleにアクセスし、「プロジェクトを追加」からFirebaseプロジェクトを作成します。

モーダルが開くので、適当にプロジェクト名を入力、国/地域は日本を選択し、「プロジェクトを作成」をクリックします。

※ここで既存のモバイルアプリと紐付づいたGoogleプロジェクトを選択することも可能です。

2. AndroidアプリにFirebaseを追加

プロジェクトの作成が終了すると、以下のような画面になります。
今回はAndroidアプリへ追加するので、真ん中の「AndroidアプリにFirebaseを追加」を選択します。

画面に従って必要項目を入力し、「アプリの登録」をクリックします。

「google-services.json」をダウンロードし、Androidプロジェクトにファイルを追加します。どこに突っ込めばいいかは、解説文を読めば分かります。

最後に、Gradleファイルにdependenciesを追加します。

Tips: デバッグ用証明書の場所

デバッグ用の署名証明書は、デフォルトだと$HOME/.android/debug.keystoreが使われており、以下のコマンドで確認できます(途中で聞かれるパスワードはandroid)。

keytool -v -list -keystore ~/.android/debug.keystore
キーストアのパスワードを入力してください:

キーストアのタイプ: JKS
キーストア・プロバイダ: SUN

キーストアには1エントリが含まれます

別名: androiddebugkey
作成日: 2016/11/20
エントリ・タイプ: PrivateKeyEntry
証明書チェーンの長さ: 1
証明書[1]:
所有者: C=US, O=Android, CN=Android Debug
発行者: C=US, O=Android, CN=Android Debug
シリアル番号: 1
有効期間の開始日: Sun Nov 20 14:15:24 JST 2016終了日: Tue Nov 13 14:15:24 JST 2046
証明書のフィンガプリント:
     MD5:  XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
     SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
     SHA256: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
     署名アルゴリズム名: SHA1withRSA
     バージョン: 1


*******************************************
*******************************************

3.各種ライブラリをいれていじり倒す!

ここまでくれば、後はFirebaseの各種ライブラリをapp/build.gradleに追加するだけ! 煮るなり焼くなり、あなたの自由!

感想

 MLKit for Firebase触るまでFirebaseを触ったことがなかった

 Firebaseの導入でしたが、見ての通りめっちゃ簡単です。全てWeb上で説明を出してくれるので、まず迷いません。唯一気になるのが、コンソールのUIが割と頻繁に変わってしまうことでしょうか。まぁ、Firebaseに限らず、Googleの各種サービスのコンソール画面はよく変わるのがデフォなので、慣れるしかないっすねw

 あと、何気に初めてのAndroid関連の記事でした。本職はAndroidのエンジニアなので、もっと本職方面の記事を充実させていきたい…(´・ω・`)

参考リンク

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です