CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

Androidで物体認識ができるアプリを作ってみる (MLKitを動かすところまで)

Androidアプリ開発に興味が出てきたので、前からやりたかった別のアプリ開発も試してみました。

今回は、Androidに標準で備わっている機械学習ライブラリのML Kitを組み込んで、撮影した画像の中にある物体を認識するアプリを作ってみました。

1. ML Kitとは

Androidで利用できるMachine Learningのライブラリです。スマートフォンのみで完結するのでインターネット接続不要で使うことできます。

2. 物体認識アプリ (Claude Sonnet 3.7ベースで作成)

最近試している通りに、Claude Sonnetを使って作りました。

このようなプロンプトを書きました。

現在開いているAndroid Studioのワークスペースを元に、以下の要件を満たすアプリを作りたいです。  
必要なプログラムを教えてください。  

・スマートフォンで動作する  
・カメラで写真を撮影できる  
・撮影した写真をもとに、何が写っているかを物体認識する  
・Androidローカルで動作する、ML Kitを使う  
・つまり、インターネットには接続しない  

何度か試したところ、MainActivity.ktにコードを追加して、カメラで撮影した対象物を識別するアプリができました。

しかし、Home GoodsかFashion Goodsという曖昧な範囲の識別しかできず、具体的な物体名称(例:ノートPC、スマートフォン、ぬいぐるみ) などは全く出ませんでした。

Object recognition example with Android ML kit

ML Kitをもう少しチューニングする必要があるようです。

3. 参考情報:物体認識アプリ (Android Developers公式サイトのサンプルコード)

なお、ここまで進めたところで、Androidの公式サイトに、物体認識アプリのサンプルコードが解説付きで配布されているのを見つけました。

ML Kit を使用して画像内のオブジェクトを検出し、視覚的な商品検索を構築する: Android  |  Google Codelabs

しかし、指定されているプロジェクトファイル一式をダウンロードしてfinalフォルダを開いても、このようなエラーが出てしまって進まず、Android Studio内のGeminiに聞いても解決しませんでした。Gradleのバージョンの問題なのは予想がつくのですが、version=X.XXという表記方法の紹介であり、肝心のバージョンが不明のままでした。

A problem occurred configuring project ':app'.  
> Failed to notify project evaluation listener.  
   > Could not create task ':app:compileDebugAndroidTestKotlin'.  
      > Cannot use @TaskAction annotation on method AbstractKotlinCompile.execute() because interface   org.gradle.api.tasks.incremental.IncrementalTaskInputs is not a valid parameter to an action method.  
   > KotlinJvmAndroidCompilation with name 'debugAndroidTest' not found.  

一方、GitHub Copilot Chatでは、バージョン指定をしてくれたので、これを元に直してみました。

しかしいろいろ試しても別のエラーが発生して、結局ビルド自体ができませんでした。生成AIがあるので、サンプルコードの再現ができなくても検証は続けられるため、このままにすることにしました。

4. おわりに

現時点ではまだ何も認識していないことと等しいため、次はML Kitのチューニングを試してみようと思います。