• トップ
  • ブログ一覧
  • Tensorflow Liteを使ってAndroidで物体検出をしよう!【機械学習】
  • Tensorflow Liteを使ってAndroidで物体検出をしよう!【機械学習】

    広告メディア事業部広告メディア事業部
    2020.03.24

    IT技術

    Tensorflow Liteを使って物体検出 どんなものができるの?

    今回はディープラーニングを使って、「Android のカメラで映した物体を検出するアプリ」を動かしてみたいと思います!

    目指すは、こんなイメージです。

    カメラに映った「キーボード」と「モニター」が検出されています。

    ディープラーニングの開発環境

    ディープラーニングの開発環境はいくつかありますが、今回は Google が開発したフレームワーク「Tensorflow(テンサーフロー)」を使っていきたいと思います。

    スマホには軽量版の TensorflowLite

    Tensorflow で学習したモデルは、GPU を搭載した高性能なパソコンやサーバでないと、重くて動作がカクカクになってしまいます。

    そこで、軽量版の「Tensorflow Lite」を使っていきます。

    物体検出アプリ作成の全体の流れ

    Tensorflow Lite で物体検出するアプリ作成の、全体の流れはこちら!

    1. 物体検出の Androidアプリのコードをダウンロード
    2. AndroidStudio でアプリをビルドする
    3. Android へビルドしたアプリをインストール
    4. アプリを起動

    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(実証実験)や活用提案が広く行われ、今では一般的に使われるようになってきています。

    これからは、より身近になり、みなさんの手元で動くようになっていくことでしょう。

    今回は、その「初めの一歩」を体験できたのではないでしょうか!

    こちらの記事もオススメ!

    featureImg2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...

    関連記事

    featureImg2020.05.15Windows 10 で YOLOv3 を自前画像で学習させる(環境構築編)【機械学習】物体検出モデル YOLOv3 を自前画像で学習させよう「YOLOv3」とは、物体検出(画像から物体の位置と種類を検出)...

    featureImg2020.05.18Windows 10 で YOLOv3 を自前画像で学習させる(物体検出編)【機械学習】後編:物体検出モデル YOLOv3 を自前画像で学習させようこの記事では、物体検出する機械学習モデル「YOLOv3」を...

    featureImg2020.05.19Tensorflow2 で YOLOv3 を動かしてみた!【機械学習】Tensorflow2 で YOLOv3 を動かし画像から物体検出をしようこの手の新しいソフトウェアは、バージョンが変...

    featureImg2020.03.24Tensorflow Liteを使ってAndroidで物体検出をしよう!【機械学習】Tensorflow Liteを使って物体検出 どんなものができるの?今回はディープラーニングを使って、「Androi...

    featureImg2020.06.23Pytorchを使ってYOLOv3で物体検出をしてみた!【機械学習】Pytorch(パイトーチ)とは?今回は、Pytorch(パイトーチ) を使って、YOLOv3で物体検出してみたいと思...

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    広告メディア事業部

    広告メディア事業部

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background