🐶

Android上で推論できる犬種を自動判定するAIアプリを作った話

に公開

はじめに

私自身、AI系のスタートアップで働いていて、社内の機械学習エンジニアの先輩にTensorFlowLiteというものを軽く紹介してもらった。私は開発エンジニアなので機械学習に関しては素人だが、興味を持ったので簡易的に触れてみて実装することにした。
今回はサンプルとして、犬の写真をアップロードすると、AIが犬種を自動判定してテキストで出力してくれる画像認識アプリを作ってみた。

ライブラリについて

TensorFlow Lite(TFLite)

モバイルやエッジデバイス向けに最適化された軽量・高速な機械学習(ML)フレームワーク。
従来はクラウドサーバーでしか実行できなかった画像認識AIが、モバイル端末で実現可能になる。
https://ai.google.dev/edge/litert/inference?hl=ja

AI Modelについて

ModelはHugging Faceにあったこちらの学習済みModelを採用。
https://huggingface.co/spaces/realfreko/dog_breed/tree/main

ソースコード

今回はKotlin・Jetpack Composeを使用してAndroidアプリで実装してみた。
詳しくは実装例はこちらを参考にしてください。(詳しい概要はREADME.mdに記載)
https://github.com/abe12hudekimo/dog-breed-classifier-app

完成形

こんな感じ。
ちゃんとした画像ならある程度の精度は出る感じ。

感想

実装してみてデメリットと感じたのが2点あって、1つ目は.tflite形式のModelじゃないとAndroid OSでは使えないこと、2つ目は学習済みModelをそのままAndroidに搭載するからアプリが容量が多くなること(今回使ったModelだけで約100MB)。
なのでシンプルにバックエンドで側でAIの分析や変換は行ったほうがよさそう。
また、Android版で実装したけど、似たような機会があればFlutterでiOSも対応できるようにしたい。
FlutterにもTensorFlowが使えるライブラリがあるみたいなので今度はそれを使ってみようかな。
https://pub.dev/packages/tflite_flutter

Discussion