ARCoreを使おうとしたら思いっきりハマった話
画像認識が普及し始めてきて、さまざまなライブラリやサービスが世の中に出てきました。
それぞれで特徴と強みがありますが、Googleが開発した拡張現実のソフトウェアキット ARCore は無料で使用することができる高品質・マルチプラットフォーム対応のツールです。
今回これを使用した調査の際、ハマってしまったことを備忘録みたいに残しておこうと思います。
この情報は記事作成時点のものです。
読まれるタイミングによっては改善されている可能性があります。
カスタムするための情報が全然ない
タイトルはやや誇張表現となっていますが、実際に調べてみると世界中でほとんど同じことが質問・回答されています。
「うまく動かない」「認識されない」 etc.
ARCoreは登場から日が浅く、また日々更新されているため、バージョンごとなどによって異なります。
さらに Quickstart の内容で起動することはできても、そこから改修することのハードルが非常に高いです。
(「こういう風にしたい」を実装するための情報が調べづらい)
公式ドキュメントにも情報がないことが多々あり、痒いところに手が届かない、という印象でほとんど手探り状態でした。
機能が足りてない
これはAPIドキュメントを見ていて気付きました。
公式資料のサンプルでは、プログラム内でAR用のデータベースに画像を動的に追加することで、事前に作成したデータだけではなく、カメラで撮影したものもマーカーにする方法が記載されています。
しかし、この内容を読んでいると
AugmentedImageDatabase には addImage があるのに remove(delete) がない
ということが発覚。
このデータベースへは 最大1,000件(記事作成時点) まで という上限があります。
動的に追加できるのに削除できない
不思議ですね。
この件については海外の方が話し合っているサイトを1件だけ発見しましたが、そこに至るまでも時間がかかりました。
さらに 撮影した画像がマーカーとして最適かどうかをチェックする機能もありません。
(後述のコマンドラインツールには最適度合を数値で取得する機能があります)
ではどうやって判断するのかというと……
DBにファイル突っ込んで例外処理(Exception)が発生したらアウト という力業
調べてみましたが、明確な機能も回答もありませんでした。
この辺はちょっと機能追加したほうが良いのでは?と思う部分です。
エミュレーターが使えない
ARCoreは最新技術を使用しており、対応デバイスもまだ少ない のが現状です。
公式資料にも Run AR Apps in Android Emulator がありましたので、エミュレーターで何とか代用しようと考えました。
資料通りにエミュレーターに対応デバイスを追加、ARCoreアプリもインストール完了、さぁやるぞ!と意気込んでいたら エミュレーターで動かない という事態。
資料も3回読み直し、手順もやり直しを行いましたが、結局私の環境ではエミュレーターで動くことはありませんでした。
そのため、対応している実機を用意することになってしまいました、残念・・・・。
コマンドラインツールのオプション説明が中途半端
Android の ARCore で使用する .imgdb というデータベースファイル。
このファイルを生成するためのツール arcoreimg が 公式サイト で配布、説明されていますが、その説明内容が中途半端です。
説明されているコマンドに無いのが eval-db。
これは 構築されたデータベース内の個々の画像の品質を評価する というものです。
登録されたデータベース内の情報を確認できるのですが、公式資料では(記事作成時点では)紹介されていません。
ちなみにコマンドラインツールの詳細を知りたい場合はコマンドの最後に --help をつけることで、説明が表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
arcoreimg eval-db --help Evalutate the quality of individual images in a built database. Usage: arcoreimg eval-db --input_images_directory=<some_directory_path>|--input_image_list_path=<some_file_path> --input_db_path=<some_file_path> Available options: --input_db_path: Path of input database file. --input_image_list_path: Path of a text file where every line consists of the name, the absolute path and the width in meters (optional) of an image, separated by a '|', to be used to construct a image database. Currently only supports *.png, *.jpg and *.jpeg. e.g.: cat|path/to/cat_image.png|0.1 little dog|/path/to/dog_image.jpg --input_images_directory: Input directory path in which all the image files under it are used to construct an image database. Currently only supports *.png, *.jpg and *.jpeg. |
さいごに
最新技術は不明なことが多く、壁にぶつかりながら進むことが多いですが、ARCoreは特に手探り感が強かった印象です。
ただ、それでも認識精度や速度が良いので、用途が決まっていればかなり使えるツールの一つではないかと思います。
以上、ARCoreを素直に使ってみた感想でした。
- おすすめ記事
-
-
のえる2020.07.29
-
AndroidXに対応しようとしてハマった話
のえる2020.07.07 -
Androidで別画面のイベントを取得する方法
のえる2017.04.13
-
POPULAR
のえる
Full-stack Developer