COLUMN技術コラム
[No.55] 360度映像を用いて物体検出した映像をVRに表示する
2021.07.07
3D CAD
No.53では、リアルタイム360度映像を用いて物体検出を行うことにより、人では把握できない死角(後方など)の状況を把握することを目的としていました。今回は、360度映像や物体検出した情報に加工をしてVRに表示をすることで、より直観的、感覚的に検出情報を把握できることを目的としています。
1.VR特有のUIを構築するためにUnityを使用
Unityはゲーム開発に特化したツールですが、近年ゲーム開発以外の用途にも使用されており、特にXR[1]のコンテンツ開発で注目を集めています。たとえば、VRを使用した衝突事故の体験や手術の事前シミュレーションなど、現実世界では危険がおよぶものや、予算の関係で多くを準備できないものを仮想世界でインタラクティブに体験することができます。本コラムでは、Unity向け推論ライブラリのBarracuda[2]を用いて、Unity上で物体検出を行います。
2.360度映像 × AI × VR
VRで映像を確認している人と、映像の一部をディスプレイにも表示している状態
- VRを装着している人の動きに合わせ、360度映像もリアルタイムに連動
- 物体検出結果は常に固定表示しているため、どの方向でも検出結果を確認可能
手法
- Unity上で球体を準備し、360度ライブ映像をテクスチャ[3]として貼り付けます。
- 仮想のカメラを4台設置し、仮想のカメラに映った映像のスクリーンショットを撮影、それぞれのカメラで撮影した画像を用いて物体検出を行います。このため、No.53で行っていた360度画像に直接加工する平面画像分解は不要となります。
- 画像の枠の色と実際の映像の枠の色が一致しており、検出している画像の範囲がおおよそわかるようになっています。
- おおよそ1秒に1回物体検出を行います。30%以上の確率で人であると判断した場合に検出箇所に赤いBoxを配置します。処理速度の関係で、今回は人の検出のみを扱っています。
- 物体の検出にはTiny-YOLO v2[4]を使用しています。(No.53で使用したYOLOより高速に処理できますが、検出の精度が下がります)
- 赤いBoxはUnity側で作成しており、仮想のカメラ1台につき12個のBoxを保持しています。つまり、一つの仮想カメラにつき12人まで同時に検出することができます。処理速度の関係で今回は12人としていますが、さらに同時に検出可能な人数を増やすことも可能です。
- それぞれの画像に映っているBoxの数をカウントし、それぞれの画像上の人数(画像赤数字)と4つの画像の合計人数(画像中心数字)を算出します。
3.まとめ
本コラムでは、人が本来見ることができない後方の状況を、視線を変えずに把握することを目的に、360度映像&Unity&AI&VRを用いて技術構築(システムやUI構築)を行いました。
現状では、検出精度やデータ遅延や使い勝手など、改善要素は多く存在しています。しかし、どの性能を重視もしくは妥協するのかについては、シチュエーションや要件定義の違いによって変化します。また、AIやVRなどは技術進化が現在進行形でもあり、毎月のように新しいシステムやデバイスが発表されています。
◆◆◆
製造業に限らず、さまざまな方からの「こういうことにも活用できますか?」の声をお待ちしております。お気軽にお問い合わせください。
用語解説
[1] XR: XR(Extended Reality)とは、仮想世界と現実世界を融合し、新たな体験を作り出す技術の総称である。VR(Virtual Reality)、AR(Augmented Reality)、MR(Mixed Reality)、SR(Substitutional Reality)をまとめた名称。
[2] Barracuda: Unity向けに作られたクロスプラットフォームなニューラルネットワーク推論ライブラリである。推論ライブラリであるため、Barracudaで学習データを作成することはできず、学習済みデータを事前に準備する必要がある。
[3] テクスチャ: 質感を表現するために、物の表面に貼り付ける画像。
[4] Tiny-YOLO v2: 基本はYOLOと同等で、YOLOよりも高速で処理できる代わりに物体検出の精度が劣る。