Tensorflow Liteを使ってAndroidで物体検出をしよう!【機械学習】
IT技術
Tensorflow Liteを使って物体検出 どんなものができるの?
今回はディープラーニングを使って、「Android のカメラで映した物体を検出するアプリ」を動かしてみたいと思います!
目指すは、こんなイメージです。
カメラに映った「キーボード」と「モニター」が検出されています。
ディープラーニングの開発環境
ディープラーニングの開発環境はいくつかありますが、今回は Google が開発したフレームワーク「Tensorflow(テンサーフロー)」を使っていきたいと思います。
スマホには軽量版の TensorflowLite
Tensorflow で学習したモデルは、GPU を搭載した高性能なパソコンやサーバでないと、重くて動作がカクカクになってしまいます。
そこで、軽量版の「Tensorflow Lite」を使っていきます。
物体検出アプリ作成の全体の流れ
Tensorflow Lite で物体検出するアプリ作成の、全体の流れはこちら!
- 物体検出の Androidアプリのコードをダウンロード
- AndroidStudio でアプリをビルドする
- Android へビルドしたアプリをインストール
- アプリを起動
AndroidStudio
この記事では、「AndroidStudio」がインストールされている前提で進めていきます。
インストールが必要な方は、下記サイトを参考に準備していただければ!
【AndroidStudio インストールサイト】
https://developer.android.com/studio/install?hl=ja
物体検出のAndroidアプリのコードをダウンロード
物体検出をするアプリケーションの、コードをダウンロードしてきます。
GitHub の「TensorFlow examples」を開きます。
【TensorFlow examples】
https://github.com/tensorflow/examples
「Clone or Download」をクリックします。
「Download ZIP」をクリックします。
「examples-master.zip」がダウンロードできます。
GitHubコマンドが使える場合
GitHub のコマンドが使える方は、次のコマンドでダウンロードできます。
git clone https://github.com/tensorflow/examples.git
AndroidStudioでアプリをビルドする
先ほどダウンロードした「examples-master.zip」を解凍し、「AndroidStudio」のプロジェクトフォルダにコピーします。
設定を変えていなければ、通常は下記がプロジェクトフォルダとなっています。
【フォルダ】 C:\Users\(ユーザ名)\AndroidStudioProjects |
コピーする時に、フォルダ名を「tflite」に変更しておいてください。
AndroidStudioを起動
AndroidStudio を起動します。
プロジェクトファイルを選択
「Open an existing Android Studio Project」から、先ほど保存したフォルダ中の「android」というプロジェクトファイルを選択します。
【フォルダ】 C:\Users\(ユーザ名)\AndroidStudioProjects\tflite\lite\examples\object_detection\android |
ビルド
メニューから「Build」>「Build bundle(s)/APK(s)」>「Build APK(s)」を選び、ビルドします。
初回はエラーが右下に表示されることがあると思いますが、表示される項目への対処を実施していけばビルドが進みます。
.akpファイルが出来上がる
ビルドが終わると Android でのインストールファイル(.apkファイル)が出来上がります。
右下の「Locate」をクリックすると、インストールファイルがあるフォルダを開けます。
もし、このメッセージBOXを消してしまっても、右下の「Event Log」をクリックしてログを開くと見ることができます。
Androidへビルドしたアプリをインストール
あとは、インストールファイルを Android に保存し、インストールすると、「TFL Detect」というアイコンが作成されます。
アプリを起動
早速、アプリを起動して検出してみましょう!
「キーボード」や「モニター」以外にも、「人」「車」「動物」など、いろんなものが検出できます!
スマホ片手に歩き回ってみると面白いと思います。(使うときは立ち止まってくださいね!)
Andoroid上で表示されるアプリ名を変えるには?
アプリ名を変えたい場合は、AndroidStudio でビルドする前に、以下を書き換えてからビルドしてください。
【フォルダ】 C:\Users\(ユーザ名)\AndroidStudioProjects\tflite\lite\examples\object_detection\androidapp\src\main\res\values\base-strings.xml |
変更点
2行目:ex)TFL Detect → Detection
1<resources>
2 <string name="tfe_od_app_name" translation_description="Object Detection demo app [CHAR_LIMIT=40]">Detection</string>
3 <string name="tfe_od_camera_error" translation_description="Error regarding camera support[CHAR_LIMIT=40]">This device doesn\'t support Camera2 API.</string>
4</resources>
ビルドの時間を短くするには?
AndroidStudio でビルドする際に、TensorflowLite の学習済みモデルがダウンロードされます。
最初の1回目は必要ですが、2回目からはダウンロードが不要となりますので、下記をコメントアウトすることでビルドが早くなります。
【フォルダ】 C:\Users\(ユーザ名)\AndroidStudioProjects\tflite\lite\examples\object_detection\android\app\build.gradle |
変更点
40行目:apply from:'download_model.gradle' → // apply from:'download_model.gradle'
1// Download default models; if you wish to use your own models then
2// place them in the "assets" directory and comment out this line.
3//apply from: "download_model.gradle"
4
5//apply from:'download_model.gradle'
さいごに
Androidでの物体検出、いかがでしたでしょうか?
ディープラーニングは、2012年に大きく話題になりました。
それ以降、様々な PoC(実証実験)や活用提案が広く行われ、今では一般的に使われるようになってきています。
これからは、より身近になり、みなさんの手元で動くようになっていくことでしょう。
今回は、その「初めの一歩」を体験できたのではないでしょうか!
こちらの記事もオススメ!
2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
関連記事
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
「好きを仕事にするエンジニア集団」の(株)ライトコードです! ライトコードは、福岡、東京、大阪、名古屋の4拠点で事業展開するIT企業です。 現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。 いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。 システム開発依頼・お見積もり大歓迎! また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」を積極採用中です! インターンや新卒採用も行っております。 以下よりご応募をお待ちしております! https://rightcode.co.jp/recruit