じゅころぐAR

AR/VRメインのブログ。時々ドローン。

ARCore v1.9で強化されたAugmented Imageについて

Google I/O 2019にて発表されたARCoreのアップデートv1.9.0でAugmented Imageがパワーアップしました。字面的には地味なのですが、実際に使ってみると衝撃を受けるレベルの改善なので紹介しておきます。

なお、ARCoreは複数のプラットフォーム向けにSDKがありますが、本記事では主にUnity SDKを取り扱っています。

Augmented Image

ARCoreの機能の一つで、画像をマーカーにしてARコンテンツを重畳表示するAPIです。

概要や使い方については変わっていないため、過去記事を参照ください。 jyuko49.hatenablog.com

Augmented Imageは、画像がプリントされた物になら何でもARコンテンツを乗せられ、ポスター、カード、商品パッケージなど幅広い媒体で利用できるのが特徴です。
ただ、画像や環境によっては検知しにくかったり、トラッキングが外れやすい点がネックでした。
そう、v1.8までは・・・。

ARCore v1.9を試す

Google公式のリファレンスが更新されており、内容も丁寧に書かれているため、手順の通りに行えばOKです。
ただし、現時点では、Google Playで提供されているデバイス側のARCoreがv1.9に対応していないため、APKから手動アップグレードする手順が追加になります。

Android SDKGithubのリリースページからAPKをPCにダウンロードします。
Release ARCore SDK for Android v1.9.0 · google-ar/arcore-android-sdk · GitHub

f:id:jyuko49:20190509022607p:plain

ARCore対応デバイスをPCとUSBで繋いで、adb installコマンドでAPKをデバイスにインストールします。

adb install -r ARCore_1.9.0.apk

ARCore v1.9での変更点

ラッキング精度の大幅な向上

移動する画像マーカーの追従性が飛躍的に向上しました。
試してみれば、一目瞭然です。

画像マーカーを傾けてもトラッキングが外れない

正面から画像を写し続けないとトラッキングが中断してしまうケースがあったのですが、一度検知してしまえば、画像を傾けても姿勢を判断してくれます。

画像マーカーを動かしても追従できている

v1.8以前のAugmented Imageは画像マーカーの移動に弱く、トラッキングが途切れ途切れになることがありました。

以下の動画ツイート(v1.8以前)ではスマートフォンをゆっくり動かしてもARのキャラクターが一瞬その場に置いて行かれ、トラッキングが再開すると瞬間移動するような挙動になっています。

  • v1.8以前の追従性

上記に比べて、ARCore v1.9では画像を手で振ってもトラッキングは途切れておらず、マーカーの動きに追従していることがわかります。

  • v1.9の追従性

複数画像の同時検知

複数の画像マーカーを同時にトラッキングできるようになりました。

左(1枚目)の画像は、複数の異なる画像マーカーにAR表示を行なっている例です。2種類の画像それぞれにARの額縁が表示されています。

右(2枚目)の画像は、複数の同じ画像マーカーでAR表示を試した例です。このケースでは、2つの画像をどちらもマーカーとして検知するのですが、ARの額縁は常にいずれか一方の画像にしか表示されません。挙動から推察するに、同じ画像マーカーの場合は後勝ちでPoseを上書きしているようです。
サンプルアプリの実装に依存している可能性もありますが、同じ画像をマーカーとして複数使う際は注意が必要です。

一方、複数の画像をマーカーとして使う場合、トラッキング時にどの画像を検知したかのNameが取れるため、画像によって異なるARコンテンツを表示するのは容易です。

f:id:jyuko49:20190509024513p:plain

何が変わったのか

Augmented Imageと同時に発表されたLight Estimation(環境光推定)の説明には、Machine Learning(機械学習)を利用している旨の記述があります。
developers.googleblog.com

また、上記の記事内には明記されていませんが、Google I/Oのセッションでは TensorFlow Liteという単語も出てきていました。
バイス側のARCoreにTensorFlow Liteが搭載されているのであれば、Augmented Imageで検知した画像の姿勢推定にもMachine Learningが使われている可能性があります。

まとめ

今回のアップデートによって、Augmented Imageはさらに使い勝手の良いAPIになりました。
以前の記事にも書いたように、" 何(画像)に何(ARコンテンツ)を乗せるか"の組み合わせとアイデア次第で色々なARを編み出せるので、是非この機会に試して欲しい機能です。

ARCoreの方向性

Tangoの終了、ARCoreの発表、Google LensやARナビの登場、今回のアップデートといった流れから、ハードウェア的なアプローチではなく、Machine Learningを用いたソフトウェア的なアプローチでARの基本機能を強化していく方針が読み取れます。

ハードウェアとSDKの密接な連携はGoogleよりもAppleが得意とするところですし、Androidの思想と少し合わなかったことでTangoの早期撤退につながったのかなと思います。当時は突然の方針転換に感じましたが、その後、AR x MLという方針を打ち出したことで、Google本来の得意領域を活かす形に軌道修正した印象を受け、方針転換後の継続性は感じられます。

個人的には、ARCore対応のグラス型デバイスも製品化して欲しいのですが、Googleが近々に製品化する可能性は低そうです。ただ、Androidのコンセプトとして、別にGoogleが自社でARグラスを作る必要はないと思っており、当面はハードに依存しないARCoreのアップデートに注力して欲しいです。

今後の期待

Augmented Imageはもシンプルな分、大きな拡張は無さそうなので、機械学習的なARへのアプローチとしてNianticが発表したものと同等の高度なオクルージョン機能に期待しています。

iphone-mania.jp

TensorFlowで物体検知やセグメンテーションした結果をARCoreで使えれば、オクルージョンだけでなく、様々な画像処理ができそうな気がしています。
以前に自作を試みたこともあるのですが、個人開発ではなかなかに大変なので、ARCoreとして提供してくれる形は割と期待しています。

DeepLabをMask R-CNNと比べてみた - じゅころぐAR

ここで使っているDeepLabもGoogleがTensorFlowで研究しているものですし、ARへの流用も想定に入っているはずです。