米国シノプシス
エンベデッド・ビジョン製品マーケティング・マネージャー Gordon Cooper
カメラを搭載したモバイル機器の増加、プロセッサの処理効率の向上、より高度な人工知能(AI)アルゴリズムの登場により、AR(拡張現実)が急速な勢いで普及しつつあります。現在のARは、AIおよびエンベデッド・ビジョンに関連する最新のディープ・ラーニング手法を活用しており、教育、ゲーム、産業機器、更には自動運転車への応用も広がっています。ARシステムでは、カメラでキャプチャした静止画や動画が重要な役割を果たし、これらは通常、エンベデッド・ビジョン・プロセッサへの入力として使用されます。ARシステムで生成されたイメージに対して畳込みニューラル・ネットワーク(CNN)などのディープ・ラーニング手法を適用することで、没入感あふれる体験を作り出すことができます。ただしディープ・ラーニングには高い性能が必要で、ARシステムの開発では消費電力と面積の問題に直面します。ホストCPUとエンベデッド・ビジョン・プロセッサを組み合わせると、こうした問題を解決できます。
ARとVR(仮想現実)には、根本的な違いがいくつかあります。VRは、映像と音を使用して仮想的な世界を構築し、図1のようなVRヘッドセットを装着してこれを現実世界のように体験できるようにする技術です。例えばVRヘッドセットを装着すると、外国のカフェにいるような体験をしたり、ゲームの世界に入り込んでいったりできます。VR環境は完全にシミュレーションによって合成されたもので、グラフィック・エンジンを使用して仮想世界を構築する必要があります。一方、ARはシミュレーションによって合成したイメージやグラフィックスを現実世界の映像に重ね合わせる技術です。たとえば、ARゴーグルを装着してカフェの前を歩くと、本物のカフェのウィンドウにその日のメニューが合成表示されるといった利用法も考えられます。ARには現実世界という要素が存在するため、コンピュータ・ビジョンが周辺環境を「見て」、これらを認識した上に仮想世界を追加する必要があります。
図1:完全な没入感を体験できるVRゴーグル
ARとVRの中間に位置するのが、MR(複合現実)です。MRも完全にシミュレーションによって合成されますが、この仮想世界に現実世界の要素の位置情報を組み合わせます。例えばユーザーの手を認識して、ゲームに登場する自分自身のアニメ・キャラクターの手に魔法の杖を持たせるといったものです。あるいは実際の部屋にある家具を認識して、それをコミック風の家具で置き換えたり、SFの世界に出てくるような(家具とまったく同じ大きさの)岩石で置き換えたりすることもできます。AR同様、MRでもコンピュータ・ビジョンの手法を利用して現実世界に存在する要素の位置を特定する必要があります。
AR/VR/MRを必要とするハードウェア機器として現在最も一般的なのが、ロボットとヘッドセット(ゴーグル)です。また、スマートフォンやタブレット、自動車にもARの導入に向けた研究がさかんに進められています。ハードウェア機器が周辺環境を「見て」、その現実世界にグラフィックスやイメージを挿入してARを実現するには、空間における自己位置を特定し、周辺環境の地図を作成する必要があります。管理された環境であれば、QRコードなどの2次元シンボルをマーカーとして設置し、ゴーグルやスマートフォンのカメラで読み取ることにより、平面上での自己位置や回転角度を判定できます。しかし、自動車の場合はすべての路面にマーカーを設置するわけにもいかず、別の方法で自己位置を特定する必要があります。
SLAM(Simultaneous Localization And Mapping)はロボット工学の研究から生まれたアルゴリズムで、ARシステムもSLAMを利用して幾何学的な位置情報を得ます。SLAMアルゴリズムは、周辺環境におけるカメラの位置を追跡しながら、周辺環境の3D地図を作成します。このアルゴリズムは、環境をモデル化して地図を作成しながら、カメラ、スマートフォン、ゴーグルなどに埋め込まれたセンサーの位置を推定します(図2)。センサーの位置と姿勢を把握し、生成した周辺環境の3D地図を利用することで、機器(およびその機器を通して周辺環境を見ているユーザー)は、現実の環境をうまく移動できるようになります。
図2:SLAMアルゴリズムはマーカーなしで物体の頂点や端部を識別し、そのデータから平面抽出を実行して周辺環境の3D地図を作成します。
SLAMの実装方法はいくつかあります。複雑な慣性計測装置(IMU)や高価なレーザー・センサーを使用せず、カメラのみを利用したものをビジュアルSLAMと呼びます。現在最もポピュラーなのはカメラを1つだけ使用した単眼のビジュアルSLAMで、スマートフォンなどで多く採用されています。一般的な単眼ビジュアルSLAMの実装では、主に以下のタスクを実行します。
これらのタスクには多くの計算が必要で、ARシステムに使用する最適なハードウェアを選ぶ際にはこのことを考慮する必要があります。
SLAMを使用すれば環境内でのカメラ位置を特定し、環境の3Dモデルを構築できますが、その環境に何が存在するかを認識するにはCNNなどのディープ・ラーニング・アルゴリズムが必要です。CNNはビジョン用のディープ・ニューラル・ネットワークを実装する技術として現在最先端をゆくもので、CNNとSLAMアルゴリズムと組み合わせてARシステムを構築することにより、ユーザー体験の向上やARシステムへの新機能の追加が可能になります。
事前に学習を実行してニューラル・ネットワークの係数を決定しておくと、CNNは位置特定(画像内のどこに物体が存在するかの識別)やクラス分類(犬か猫か、ラブラドールレトリバーかジャーマンシェパードか、などのイメージ・クラスの識別)を含む物体認識タスクを非常に高精度に実行できます。SLAMを利用すればカメラは障害物にぶつからずに環境内を移動できますが、CNNを組み合わせればその物体がソファなのか冷蔵庫なのか机なのかを見分け、これらが視界のどこにあるかを特定できます。リアルタイム物体検出(分類および位置特定を含む)に使用する一般的なCNNグラフとしては、YOLO v2、Faster R-CNN、SSD(Single Shot Multibox Detector)などがあります。
CNNによる物体検出グラフを利用して、顔や手など特定の物体を検出することができます。例えばCNNを利用して顔検出/認識を実行するARシステムでは、画面上の人物の顔の上にその人の名前とソーシャル・メディア情報を表示したりできます。あるいは、ゲームでCNNを利用してユーザーの手を検出し、プレーヤーの仮想的な手に装置や道具を持たせるといったこともできます。手の位置を判定するのは、単に手の存在を認識するよりも困難です。CNNをベースにしたソリューションの中には、RGBセンサー出力だけでなく深度カメラの出力も利用してCNNグラフをトレーニングして実行するものもあります。
CNNはセマンティック・セグメンテーションにも応用できます。物体検出は画像内の関心のある物体のピクセルのみを対象としますが、セマンティック・セグメンテーションはそれとは異なり、すべてのピクセルを対象とします。たとえばCNNによるセマンティック・セグメンテーションを自動車で利用する場合、空、道路、建物、自動車を構成するすべてのピクセルをグループとしてラベル付けします。これは、自動運転車のナビゲーションに欠かせない機能です。セマンティック・セグメンテーションをARで利用すると、天井や壁、床、家具など空間に存在する物体を特定できます。シーンの意味を理解することにより、現実の物体と仮想的な物体をよりリアルに混在させることができます。
SLAMおよびCNNアルゴリズムはいずれも、カメラでキャプチャした1つ1つの画像(フレーム)に対して膨大な量の計算を実行します。ユーザーから見て違和感のないAR環境を構築するには、現実世界と仮想世界を重ね合わせる際のレイテンシが特に重要で、フレーム・レート20~30 fpsのビデオが必要です。つまり、ARシステムではキャプチャから処理、レンダリング、ディスプレイへの表示までを約33~40 ms以内に完了する必要があります。これらのタスクをより高速に処理できる方がフレーム・レートを高く設定でき、より自然なARを体感できるようになります。
単眼カメラを使用したSLAMシステムをシステム・オン・チップ(SoC)に統合するには、演算効率とメモリー最適化が設計上の重要なポイントとなります。カメラで4Kイメージを30 fpsでキャプチャする場合、1フレームのサイズは8,294,400ピクセルで、1秒あたり248,832,000ピクセルを格納して処理する必要があります。ほとんどのエンベデッド・ビジョン・システムは、各フレームを外部DDRメモリーに格納した後、そのイメージの一部をなるべく効率よく転送してビジョン処理を実行します(図3)。
図3:ビジョン・データを外部メモリーに格納し、AXIバス経由でプロセッサに転送
先進のARシステムで必要なアルゴリズムを、スマートフォンのアプリケーション・プロセッサのようなCPUで処理するのは効率がよくありません。ARシステムのグラフィックス描画に使用するGPUでアルゴリズムを実行すると、CPUで実行するよりもSLAMおよびCNNの計算を高速に実行できます。事実、AIおよびディープ・ラーニング・コンピューティングの時代が到来したのはGPUの性能が向上したことが大きな理由です。ただし、GPUでディープ・ラーニング・アルゴリズムを実行すると、消費電力が100 Wを超えてしまいます。このため、エンベデッド・ビジョン処理を専用のコアに割り当てて実行するのが最も効率的なアプローチとなります。
柔軟なCNNエンジンとベクターDSPを組み合わせると、性能と電力効率を両立できます。SLAMなどのアプリケーションはベクターDSPで処理します。一方、専用CNNエンジンは一般的なCNN演算(畳み込み、プーリング、要素ごとの演算など)をすべてサポートできます。また、これらのパラメータに合わせたカスタム設計が可能なため、面積と消費電力も最小に抑えることができます。
シノプシスのEV6xエンベデッド・ビジョン・プロセッサIPは、ARシステム用のSoC設計における性能と消費電力の課題を解決できるように最適化されています。DesignWare® EV61、EV62、EV64エンベデッド・ビジョン・プロセッサは高性能32ビット・スカラー・コアと512ビット・ベクターDSPに加え、高精度な物体検出、分類、およびシーン・セグメンテーションを高速に実行できるよう最適化されたCNNエンジンを統合しています。ベクターDSPはSLAMアルゴリズムの実装に適しており、CNNエンジンから独立して動作します。Ev6xファミリは16 nmプロセスでインプリメントした場合、通常の条件下で最大4.5 TMACs/secのCNN性能を発揮し、最大解像度4Kの複数カメラ入力をサポートします。EV6xは完全プログラマブル/コンフィギュラブルなエンベデッド・ビジョン・プロセッサで、専用ハードウェアならではの高性能、低消費電力とソフトウェア・ソリューションの柔軟性を両立させています。
CNNなどのディープ・ラーニング・アルゴリズムによって新しいARシステムが次々と登場し、ゲーム、教育、自動運転車など多くの分野でこれまでにない体験が可能になることが期待されます。ARシステムは非常に複雑で、性能、消費電力、面積に関して厳しい課題がありますが、EV6x IPなどのエンベデッド・ビジョン・プロセッサとホストCPUを組み合わせると、これらの課題を容易に解決できます。EVプロセッサを利用することで、ディープ・ラーニングと最新のSLAM技術を組み合わせたARシステムを開発できるようになります。