バックナンバーはこちら

today&tomorrow

What's New in DesignWare IP?

2018 Mar. vol.109

ADASアプリケーションを支えるディープ・ラーニングの進化

シノプシス エンベデッド・ビジョン製品マーケティング・マネージャー Gordon Cooper

エンベデッド・ビジョン・ソリューションは、完全自動運転車を実現する重要な要素技術となります。 自動車の「目」として多数のカメラやイメージ・センサーを搭載することはもちろん必要ですが、それ以上に重要なのは、自動車がこれらイメージの内容を解釈し、それに応じて動作できるようにすることです。 そのためエンベデッド・ビジョン・プロセッサには、消費電力と面積を抑えて十分な性能が得られるようにハードウェアを最適化すること、 ハードウェアを効率的に活用できるようにプログラムできるツールを用意すること、そしてこれらのプロセッサ上で実行するアルゴリズムを作成することが条件として求められます。

これまでも自動車の安全機能は飛散防止ガラス、3点式シートベルト、エアバッグなど大きな進歩を遂げてきましたが、これらは事故発生時に被害を最小限に抑える「パッシブ」な安全対策でした。 これに対し、現在のテクノロジは運転者が衝突を回避できるように「アクティブ」な支援機能を提供します。先進運転支援システム(ADAS)はいずれ自動運転車の実現へとつながっていくでしょう。 代表的なADASの機能としては、車線変更時に死角に入っている車両があると運転者に警告する死角検出システム、自動車が車線から逸脱しそうになると運転車に警告し、 運転手の代わりに操舵して元の車線に戻す車線逸脱警報/車線維持支援システム、前後の歩行者を検出して通知してくれる歩行者検出システム、歩行者などの障害物を検出して衝突を回避する衝突被害軽減ブレーキ(AEB)などがあります。 これらのADAS機能を組み合わせることによって自動運転車は現実のものとなりますが、そのためには高性能なビジョン・プロセッサが欠かせません。

図1に示すように、現在の自動車には多数のカメラが搭載されています。フロント・カメラは歩行者や障害物を検出する以外にも、適切なアルゴリズムと組み合わせてブレーキ操作の補助にも使用します。 リア・カメラは運転者から見えない後方の障害物を検出、警告して事故を予防するもので、2018年以降米国で販売されるほとんどの新車に搭載が義務付けられます。 また、運転者の目の動きを撮影して居眠り運転や脇見運転を検出、警告してくれるものもあります。最近では、4~6個のカメラを追加して車両周辺360度のサラウンド・ビューを可能にしたものもあります。

画像

図1:カメラと高性能ビジョン・プロセッサを組み合わせると、危険が予想される場所に物体が存在しないことを「目視」できます。

ビジョン・プロセッサを利用した物体検出

そもそも、運転者が前を向いているのにフロント・カメラを設置するというのは、フロント・カメラが人間よりも常に早く障害物を検出して警告できることが前提となります。 ADASシステムは物理的な反応速度では人間の運転者よりも上ですが、ストリーミング・ビデオをリアルタイムに解析して何に対して反応すればよいのかを把握する必要があり、そのためにはエンベデッド・ビジョンが必要です。

ビジョン・プロセッサは特長の異なるプロセッシング・ユニットを組み合わせたヘテロジニアス構成となっており、プログラミング・タスクはこれらのプロセッシング・ユニットに分割して割り当てられます(図2)。 コードの大半は、伝統的な32ビット・スカラー・プロセッサ用にC/C++で作成できるため、プロセッサのプログラムは容易に行えます。演算のほとんどはベクターDSPユニットで実行します。 これは、命令ワードが非常に大きく、1つの入力イメージを構成する多数のピクセルに対して並列計算が行えるためです。

画像

図2:スカラーおよびVLIW(Very Long Instruction Word)ベクターDSPユニットを組み合わせたヘテロジニアス構成のビジョン・プロセッサ

自動車の前にいる歩行者を検出する技術は、一般に「物体検出」と呼ばれます。従来のコンピュータ・ビジョンでは、対象となる物体ごとに検出アルゴリズムを人間が作成していました。 検出アルゴリズムとしてはViola-Jones、そして最近ではHOG(Histogram of Oriented Gradients)が有名です。 HOGアルゴリズムは画像内のエッジの方向を見て物体を記述しようとするもので、2014年頃までは最先端の歩行者検出アルゴリズムと考えられていました。

物体検出が可能なディープ・ラーニングの出現

ニューラル・ネットワークとは人間の脳をモデルにしたコンピュータ・システムで、そのコンセプト自体はかなり前から存在していました。 しかしそれを実用化できるようになったのは、半導体の進歩によってプロセッサ性能が十分なレベルに達したごく最近のことです。 2012年、ImageNetの画像認識コンテストに畳込みニューラル・ネットワーク(CNN)ベースのシステムがエントリーし、伝統的なコンピューター・ビジョン・アルゴリズムに比べ飛躍的に高い画像分類精度を達成しました。 以来、画像の分類、検出、認識にニューラル・ネットワーク・ベースの手法を使用することが主流となっています。

ディープ・ニューラル・ネットワークが画期的なのは、人間がコードを作成しなくても物体検出が可能になった点にあります。 ディープ・ニューラル・ネットワークでは、サンプルを使ってトレーニングを行うことで画像の特徴が自動的に学習されます。 ディープ・ニューラル・ネットワークとは、ニューラル・ネットワークのうち入力層と出力層の間に少なくとも1つの中間層(隠れ層)を持つものを言います。 各ノードは、直前の層の複数のノードからの重み付けした入力に基づいて計算されます。ビジョン用のディープ・ニューラル・ネットワークを最も効率よく実装できる現在最先端の方式が、CNN(畳込みニューラル・ネットワーク)です。 CNNの効率が高いのは、イメージ間で多くの重みを再利用できるためです。

組込み分野における初期のCNNは、GPUまたはビジョン・プロセッサに含まれるベクターDSPユニットを使用して実行していました。 しかし、実行されるタスクを考慮すると、図3に示すように3種類のプロセッシング・ユニットからなるヘテロジニアス構成の方が有利です。

画像

図3:エンベデッド・ビジョン・プロセッサにCNNエンジンを追加することにより、トレーニングを通じて学習が可能なシステムが実現

初期のCNNのハードウェア実装は積和演算(MAC)ユニットの数が限られていました。 たとえば業界初のプログラマブル/コンフィギュラブルなビジョン・プロセッサIPコアとしてシノプシスが発表したEV5xは、64個のMACユニットを内蔵したCNNエンジンを搭載していました。 EV5xを500 MHzで動作させた場合の性能は32 GMACs/sです(MACユニットは1命令で2演算を実行できるため、これは64 GOPs/sに相当します)。 この性能では、1MP(1280 x 1024)のイメージ・フレーム全体を処理できないため、イメージの一部分(たとえば64x64ピクセルのパッチ)に対してCNNを実行していました。 この方法で歩行者を検出するには、イメージ全体を2段階で処理する必要があります。 まず、ビデオ・ストリームの入力イメージ1つずつに対してベクターDSPが演算負荷の高い関心領域(ROI:Region of Interest)アルゴリズムを実行します。 ROIはスライディング・ウィンドウ方式を使用し、たとえば「空の一部」などを除外して「歩行者」と考えられる候補を特定します。 次に、「歩行者」と考えられるこれらの領域をCNNで処理し、それが本当に歩行者であるかどうかを判定します。 CNNを利用した歩行者検出ソリューションは、HOGなどのアルゴリズムよりも精度が高いことが実証されています。 そしてより重要なのは、歩行者の代わりに自転車を検出したい場合に、自転車検出用の新しいアルゴリズムを人手で作成し直すよりも、自転車を検出するようにCNNを再トレーニングする方が簡単だという点です。

カテゴリートップ