Hololens 向け物体検知アプリケーションの実装を行いました

f:id:numanuma08:20180601100933p:plain

みなさんこんにちは。大阪でリモート勤務をしております @numa08 です。この度、 Hololens 向けのアプリケーションとして自動車の検知及び描画を行うアプリケーションの開発を行いました。

このアプリケーションは、物体検知機能を持った自動車の見ている視点を人間が体験をしてみる、という目的のものに開発されました。Hololens を着用したユーザーが自動車の助手席に乗り込み、前方の窓から見える他の自動車や人間を機械学習エンジンが認識し、結果を Hololens 上に描画します。この一連のフローを通して、自動車に搭載されたセンサーがどう言った物を認識し、そしてそれを安全なドライビング体験にフィードバックしているのかを体験してもらおうと言うものです。

今回作ったシステムでは実際の道路にいるであろうバイクや人も認識することができます。

少し文字が見にくいですが person, motorbike, bikeを認識している様子です。

f:id:mironal:20180531111105p:plain

技術スタック

今回のシステム構成は次のようになりました。

f:id:numanuma08:20180522180032p:plain

Hololens から取得した画像をPCにインストールした機械学習フレームワーク及び学習済みデータを利用して認識し、認識結果を Hololens 上で描画します。機械学習エンジンには Darknet を、物体認識及び学習済みモデルには Yolo v3 を利用しました。

pjreddie.com

pjreddie.com

Tensorflow の利用も検討しましたが、ベンチのマークの結果 darknet を利用することとしました。

Hololens と PC の通信は http を利用しています。PC には Hololens から送られてくる画像データを受け取る HTTP サーバーを、 Hololens には PC から送られてくる認識結果を受け取る HTTP サーバーをそれぞれ起動して、データのやり取りを行うようにしました。

屋外での Hololens 利用について

こんにちは。 ここからは東京のオフィスにいる山口が書きます。

私は Hololens 側のアプリケーションの実装と現地デモ、改善案の提案などを行いました。

Hololens は基本的に屋内での使用を想定していて屋外や車内で使用すると様々な問題が発生しました。

例えば Hololens の周辺環境スキャンにより自分の周囲に壁があると認識してしまい、壁の向こう側にあるものは何も描画しないという仕組みによって車の外側に何も描画しなくなってしいます。

そこで Hololens 本体にフィルムを張ってセンサー類を無効化、ディスプレイの輝度を上げることで対応しました。

f:id:numanuma08:20180529153038j:plain

また、車内で走行しながら使っていると度々 Tracking loss が発生し、アプリが停止してしまいます。

これに対応するには

Tracking loss in Unity - Mixed Reality | Microsoft Docs にあるように Tracking loss をマニュアルハンドリングにすることによってアプリの停止を抑制することができました。

以上が Hololens 側のノウハウとなります。 Hololens のノウハウについてご質問ある方はぜひぜひお問い合わせください。

まとめ

今回の案件はいくつかの点でコベリンにとって挑戦的な内容でした。機械学習フレームワークを利用したアプリケーションの開発を行うことも初めてでした。大阪からリモートで作業をする @numa08 と東京オフィスのメンバーがうまく連携を取れるようにプロジェクトを管理する必要があり、新たなノウハウが身についたと思います。また、 Hololens を屋外で利用する部分に関しても、先行する事例も少なく体当たり的に山口が調査と実践を行ってくれました。

Hololens もアップデートが予定されていて今後は今回の案件で構築したようなシステムをより作りやすくなると予想され、非常に楽しみです。