ML Kit調べてみた

2020.10.19

Lab研究員 山本

Lab研究員の山本です。
こんにちは。

YDCラボは今年度からチーム制で活動するようになりました。

私が今まで記事に取り上げてきた自然言語も引き続きチームがありますが、
新しい活動として、AIエッジデバイスチームにも所属することになりました。

AIエッジデバイスチームの研究内容ですが、
以下のようなものを実現させたいという話になっています。
 ①モバイルデバイスで動画や写真を撮影
 ②AI(ディープラーニング)で物体認識
 ③②で得られた情報を用いて、AR(拡張現実)を行う

イメージ図を書いてみました。いかがでしょう。

Lab_202010_001.png


……面白そうですよね!

こういった研究をしたいと話していたメンバーが集められ、チームが作られました(^^)

具体的な提供機能・利用イメージの話も盛り上がりそうなんですが、今回はまたの機会に置いておいて、
本記事では、開発に必要な技術要素を取り上げます。

イメージ図でスマホを使っている通り、モバイルアプリを開発することになります。
まず、モバイルアプリにはiOSとAndroidがありますが、
iOSは配布が困難なので、配布が簡単なAndroidで開発しようという話になりました。

そして気になる、AIARを担う技術。
調べてみると、便利なものがきちんと用意されています。
 AIML Kit(Google の機械学習の機能を提供するモバイル SDK)
 AR→ARCore(GoogleがAndroid端末向けに提供しているARプラットフォーム)
という訳で、私はMLKitを調べることから、AIエッジデバイスチームの活動をスタートしました。

今回は、その調査状況を記事にしたいと思います。

もくじ

  1. 1.ML Kitとは
  2. 2.調査はしたけど…

ML Kitとは

ML Kitとは、Google の機械学習の機能を提供するモバイル SDKです。
学習済みのモデルを使って、機械学習の推論を実装できます。

Androidアプリ・iOSアプリどちらにも対応します。
ML Kitには、強力なアピールポイントが3つあります。

1. 様々な認識に対応
ML Kitは、以下の一般的な認識機能を備えています。
 ・画像分類(手とか紙とか、一般的な常識の範囲の広く浅い分類)
 ・文字認識
 ・顔検出
 ・ランドマーク認識(有名な建築物などを認識)
 ・バーコードスキャン
結構色々できますよね。

2. クラウド/オフラインどちらにも対応
ML Kitでは、クラウドと通信して結果を受け取るクラウドAPIと、
端末単体をオフラインで動かせる端末内APIが用意されています。
クラウドAPIは、内部的にGoogleのCLOUD Vision APIを使っており、強力なパフォーマンスを発揮します。
また、クラウドAPIはCLOUD Vision APIと同じ料金がかかりますが、端末内APIは無料で利用できます。

端末内APIも有料となっている場合があります。利用される際は確認ください。

3. カスタムモデルに対応
ML Kitの扱う機械学習は、元々組み込まれている上記1.の一般的な認識機能に留まりません。
自分が解決したい認識問題に特化したモデルを作成すれば、それを組み込めるのです。
モデルの実装には、TensorFlow Liteという推論専用のフレームワークを使います。
TensorFlow Liteはその名前の通り、あの難敵のTensorFlowかそのラッパーのKerasでモデルを作成して変換するのが王道のようです(^^)
Pytorchモデルを変換する裏の手もあるにはあるようですが……また調査が捗りますね!

以上の通り強力なML Kitですが、公式サイトは「機械学習の経験の有無を問わず、わずか数行のコードで実装できます。」と断言しています。凄い!
確かにやることは、学習済みのモデルを呼び出して、推論を実行するだけなのでしょうね。
ただし、カスタムモデルの実装は、なかなかややこしいみたいですがね…!

調査はしたけど…

さて、ある程度調査し、ML Kitの理解を深めることはできました。
ここで切り上げるか迷いましたが……今まで先輩研究員に言われてきた言葉が巡ります。

先輩研究員A「まずはとりあえず動かしてみることが大事。」
先輩研究員B「技術を貯めることが大事。」

……やるしかないでしょう!

Androidアプリの開発は、つまりはJava開発。
山本は入社以来、FileMakerやPython(VIM/JupyterNotebookを利用)のジョブが多かったため、Eclipse等のIDEを使ったソース開発は、新人研修以来ほとんど馴染みがないのです。
なので、やっておきたい、やってみたい&少しずつ慣れていかないと…というのがあります。
ついでにiPhoneユーザなので、Androidも触るのもほぼ初めてです。

という訳で、触ってみました

東京オフィスより取り寄せたラボのAndroid端末を入手
充電中…(ワクワク)

Lab_202010_002.JPG


設定のある場所をタップし続けると開発者向けオプションが有効になります。
オンにしたときは、「デベロッパーになるまであと2ステップです。」「これでデベロッパーになりました!」とメッセージが表示されて、少しテンション上がりました。
これにより、スマホをPCにUSB接続してのデバッグができるようになります。

Lab_202010_003.JPG

サンプルコードをgit clone

Lab_202010_004.png

( https://github.com/firebase/quickstart-android )

Android Studioをインストール

Lab_202010_005.png


少々の設定の壁を乗り越えビルド成功し…
デバッグスタート!

Lab_202010_006.png


………はい、1日弱このエラーにハマりました。orz

エラーをググり、設定やパスの確認、gitの旧バージョンを取り直し、再実行等してみましたが、全く解決・進展せずでした…私の今の実力はこの程度……しくしく。
という訳で、今回は時間切れです。

なお、git cloneしたサンプルコードは上記1.一般的な認識機能を備えています。
気になる方は、以下参考にしたサイトの後半をご覧ください。

ML Kit For Firebaseを使ってスマホで色々検出してみた
 https://dev.classmethod.jp/machine-learning/mlkit_detection_demo/

今回のコラムは以上です。

今後は引き続きML Kitの実装を進め、カスタムモデルの実装に進んでいきたいですね。
そこまでできたら、カスタムモデルの作成に入れます!

それでは、読んでいただきまして、ありがとうございました。

参考サイト

Firebase 向け ML Kit(https://firebase.google.com/docs/ml-kit?hl=ja
ML Kit For Firebaseを使ってスマホで色々検出してみた(https://dev.classmethod.jp/machine-learning/mlkit_detection_demo/)、他

  • LINE
  • Mail