Android

[Android] Firebase ML Kit勉強会に参加してきました

投稿日:2018年8月6日 更新日:

はじめに

機械学習、盛り上がり続けてますね。今回はiOS/Androidで機械学習による解析が行えるFirebase ML Kitの勉強会に行ってきました。
実際に会場で試した内容を紹介したいと思います。とりあえず動かしてみるだけなら簡単ですので、Android実機をお持ちであれば、ぜひ試してみてください。

Firebase ML Kitとは

  • Google IO 2018で発表されたFirebaseの新機能です。現在はベータ版で、iOSおよびAndroid両方の端末で利用できます。
  • Googleが提供する機械学習モデルによる解析APIを、on-device APIもしくはcloud-based APIから利用できます(後者のほうが高精度、ただし有料)。
  • on-device API:
    デバイス上で解析処理を行います。オフラインでも実行でき、高速です。ただしテキスト認識はlatin-based language(アルファベットを使う言語)のみ対象で、ラベル付けもあまり細かく分類はできないようです。
  • cloud base API:
    Firebaseの有料プラン(Blaze)が必要ですが、多言語でのテキスト認識や、より詳細なラベル付けが可能です(機能ごとに1000コールまでは無料)。
  • できること
    機能 on-device cloud
    テキスト認識 画像を読み込んでテキスト抽出
    顔検出 × 画像を読み込んで人の顔を検出
    バーコードスキャン × そのまま。バーコード読み取り。
    画像のラベル付け 画像を読み込んでラベリング
    ランドマーク認識 × 画像内のランドマーク(東京タワー、スカイツリーetc.)を認識
    カスタムモデルの利用 × 独自のTensorflow LiteモデルをFirebaseにアップロードして、アプリで使える
  • 参考
    Firebase 向け ML Kit | モバイル デベロッパー向けの機械学習
    I/O Recap : ML Kit 情報まとめ(Android 向け)

準備するもの

エミュレータでも動作するので実機必須ではありませんが、できれば実機でいろいろ写真を撮って試すのをおすすめします。

  • macOS High Sierra 10.13.6
  • AndroidStudio 3.0.1
  • githubアカウント
    サンプルプロジェクトをcloneするのに必要です。
  • Googleアカウント
    Firebaseを使うために必要です。

動かすまでの手順

https://github.com/yanzm/MLKitSample からgit cloneして、課題1・課題2までを終えれば準備完了です。
課題2-1で「デバッグ用の署名証明書」は省略可ですので、空欄のままでOKです。

gradleのsyncがうまくいかない場合

会場で私を含め何人かが遭遇していた現象で、AndroidStudioが最新版(3.1.3)になっていないことが原因だったようです。
素直にAndroidStudioをバージョンアップしてもいいのですが、Kotlinのバージョン指定を書き換えることでもひとまず解決できます。
私の場合(3.0.1)では、build.gradleに記述されているKotlinのバージョンを 1.2.51 から 1.2.41 に変更することで、syncできるようになりました。

テキスト認識を試してみる

画像を読み込み、テキストを抽出します。
MainActivity.kt#detect に下記リンクからコードを追加します。
課題3 : テキスト認識

firebaseのwebページを実機で撮影、処理してみると以下のようになります(on-deviceのため、日本語は認識できません)。

文字が重なっててよくわからない!という場合は、 GraphicOverlay.kt 内の textSize を変更してみましょう。

画像のラベル付けを試してみる

画像を読み込み、何が写っているのかを解析・表示します。
MainActivity.kt#detect に、下記リンクからコードを追加します。
課題7 : 画像のラベル付け

「Tableware」「Cutlery」等がラベル名です。その横の数字はラベルのスコアで、1.0に近づくほど確度が高いことを意味しています。スコアが 0.9 を超えるラベルはほぼ間違いがなく、0.8でも大体合っているという印象です。

Cloud API、カスタムモデルの利用

多言語対応のテキスト認識や高精度のラベル付け、またランドマーク認識などを処理できますが、こちらはまだ試していません。近い内に試してみて、ご紹介したいと思います。
カスタムモデルについてはきちんと理解できているか怪しいですが、TensorFlow Liteの独自モデルを使うことで、テキスト認識や画像のラベル付けで、より個々の目的に特化した解析ができるようになるのだと思います。
興味はありつつ後回しにしていた機械学習ですが、少し学んでみたいと思っています。

さいごに

いかがでしたでしょうか。私は機械学習と言われるものに触れるのは今回が初めてでしたが、驚くほど簡単に試すことができました。
試して遊ぶ分には面白いのですが、実案件で使うものではないという印象です(まだベータ版ですし…)。
また、アプリと一緒にカスタムモデルを端末に入れて解析に使うこともできますが、root化された端末ではモデルの中身を覗けてしまう可能性があったりと、Googleの中の人いわく「セキュリティについてはこれから検討していく」とのことでした。

blog-page_footer_336




blog-page_footer_336




-Android

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

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

CAPTCHA


関連記事

【Android】Firebase Cloud Storageに画像をアップロードする

1 はじめに1.1 Firebaseとは2 Firebase Cloud Storage を使う為の準備3 パーミッションの追加4 実装してみましょう4.1 今回作成するソースコード全容4.2 送信先 ...

Kotlin MPAndroidChartライブラリを使いボリンジャーバンドを描画してみる。

1 はじめに2 ボリンジャーバンドとは2.1 ライブラリの導入2.2 描画の準備3 ボリンジャーバンドを描画する3.1 CombinedChartの設定3.2 CombinedChart用のデータ作成 ...

【kotlin】CameraXでAndroidカメラを実装してみた

1 はじめに2 概要3 使用前の準備4 ViewFinderLayoutを実装する5 Camera Permissionのリクエスト6 カメラ撮影機能を実装する6.1 Previewクラスの実装6.2 ...

【Java】ストリームについてまとめてみました

1 はじめに2 Streamの分類3 テキストファイルの読み書き4 バイナリファイルの読み書き5 読み書きのバッファリング処理6 さいごに7 おすすめ書籍 はじめに Javaではすべての入出力をストリ ...

【Java】スレッドについてまとめてみました

1 はじめに2 スレッドの基本について3 スレッドの利用4 Threadクラス5 Runnableインターフェース6 同期処理7 synchronized修飾子8 おわりに9 おすすめ書籍 はじめに ...

フォロー

blog-page_side_responsive

2018年8月
 1234
567891011
12131415161718
19202122232425
262728293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。