背景
- 猫カフェに行ったときに猫の名前が覚えられない
- 常連さんや店員さんは見分けがつくようだけど…
- 猫の名前や情報を知れれば、より猫カフェを楽しめるのでは?
問題
- 写真や冊子で紹介はしてくれてるけど、似てる柄だと自信持てない
- 知りたいときに手元にない
- 情報が最新化されてない(入ってきたばっかりの猫の情報がない)
アプローチ
「スマホカメラで認識してARで情報出せたら面白そう」というアイデアがあがったので実装してみた。
参考記事
必要なもの
- Unity Hub (無料)
- Unityアカウント (Personalライセンス、無料)
- Vuforiaアカウント (Basicプラン、無料)
- Unity動かすPC
- PCに付けるカメラ(内臓でも可)
成果物
Unity上でPC接続したカメラ映像からマーカーを認識してオブジェクトを表示できました。
マーカーに指定した画像をスマホで表示している
認識した部分にオブジェクトを表示している
実環境ではマーカーが認識されず、課題が残りました。
マーカーと同じような顔をしてくれない
照度や角度を近づけようと頑張っても限度がある
作り方
基本的には冒頭にあげた参考記事を読めばOK
バージョン差分で手順が異なる部分があったので、Unity2021の場合は以下で実施
Vuforia環境
- 開発アカウントを作成
- License Managerで新規ライセンスを作成
- Target ManagerでDatabase(Type:Device)を作成
- DatabaseにTargetを追加(マーカー画像をアップロード)
- DatabaseをDownload
- Unity Editor
Unity環境
- Unity Hub 3.4.1 をダウンロード
- アカウントを新規作成
- Install Editorで「2021.3.18f1」を選択 (2021.3系なら良いと思われる)
- New Projectで「Unity」「3D Core」を選択
- Unity Asset StoreでVuforia Engineを取得
- Unityの Window > Package Manager > Vuforia をDownloadしてImport
結合
- UnityのGameObject > Vuforia Engine > AR Camera
- Vuforia Behaviour(Script)
- Open Vuforia Engine Config
- App License Key にVuforiaのライセンスを記載
- Vuforia Behaviour(Script)
- UnityのGameObject > Vuforia Engine > Image Target
- Image Target Behaviour(Script)
- Type: From Database
- Database: VuforiaでDownloadしたDatabase
- Image Target Behaviour(Script)
- UnityのGameObject > 3D Object > Cube
- Unityの再生ボタンをクリック
課題
成果物の通り、ARマーカーとして猫の顔を登録した場合、同じ画像を認識させることはできました。一方、カメラの角度や照度、猫の表情などの影響を受けて認識精度が実用的ではありません。(Vuforiaはテンプレートマッチングに近い手法で識別されている?)
今後の展開として以下のような実装を検討中です。
- マーカーの識別精度を高める
- 首輪にマーカーを付ける、あるいはQRコードを使用する
- マーカー以外の情報を活用する
- 汎用的な検出器で猫を検出し、特化した識別器で個体名を判定する