ディープラーニングは制御にも使える

馬路徹氏(以下、馬路):NVIDIAの馬路です。よろしくお願いします。

今日は車載用ディープラーニング、いわゆるAI、それと自動運転用のTegraのSoCプロセッサ、DRIVE PX2プラットフォーム、さらにこの上に乗せるDriveWorksのソフトウェア・デベロップメントキットをご紹介したいと思います。

本日のご紹介内容はこのとおりになっています。最初、自動運転産業における弊社の位置づけです。続きまして、AIですね。人工知能のなかでもディープラーニングという深層学習、これが非常に今、台頭しております。ここの先進の画像認識技術をご紹介します。

さらに、ディープラーニングは画像認識ばかりではなくて、実は制御にも使えます。新しい試みなんですが、このEnd-to-Endディープラーニング自動運転ですね。

なにかというと、こちらのEndはカメラです。そして、こちらのEndはステアリングを操作するという、そういうEndです。人間は視覚で見たものでそのまま運転していますので、そのとおりのことをディープラーニングでやっています。ただ、この使用方法は注意する必要がありますので後でご紹介します「DriveWorks」の中で説明させていただきます。

4番目は、こういうものを実現するには非常に膨大なプロセッシングパワーが必要です。GPUですね。これはGraphics Processor Unitなんですが、近頃のGPUは、実は汎用プロセッサになっております。

そこで、例えば3,000、4,000コアで超並列の処理を行ったり、もしくはその上にディープラーニングのライブラリを乗せて、非常に高速に学習それから判断をやる。そういうことに非常に適したプロセッサであるということを、4点目としてご紹介いたします。

5点目は、実は我々はスーパーコンピュータから車載SoCまで、すべて1つのGPUアーキテクチャで開発しております。お互いレバレッジしているんですね。例えば、スーパーコンピュータのいろんな計算、アルゴリズム、それから開発環境がこのまま車載に乗ります。とくに自動運転ではそれが要になっているので、そのあたりを紹介いたします。

次に、このSoCを乗せた「DRIVE PX2」といったプラットフォーム。続いて、このDRIVE PX2の性能をシングルのSoCで実現できる「Xavier」をご紹介します。2017年末にチップが出てくる予定です。

最後に、このDrive PX2に実装するソフトウエア・スタック「DriveWorks」をご紹介したいと思います。

対向車や反対車線の車、歩行者などはもう認識できる

まず最初に、自動運転産業におけるNVIDIAの位置づけということでご紹介します。

NVIDIAは自動車向けに最初の高機能プロセッサを出荷してから10年経ちました。これらのプロセッサは80モデル、1,000万台以上の車両に搭載されております。

最近注目されている製品はアウディ社のコックピットです。運転手の正面にあるTFTディスプレイに、速度・タコメーターという従来のメーター以外に、ナビそのものも変幻自在に高精度で描画できるという、そういうコックピットです。今、アウディ社のメインラインのA4やSUV、アウディTTなど、今どんどん展開されています。

我々DRIVE PX2というプラットフォームで、いろんなお客さまとエンゲージさせていただいていて、今約80社あります。もちろん乗用車のOEM。それから、最近はトラックやバスの商用車のOEMがけっこう増えてきています。あと、これらをサポートしているシステムサプライヤー……1st Tierですね。

それから、直近で注目すべきはTAAS(Transportation As A Service)です。例えばUberのように、車を売るのではなく、A地点からB地点への移動を商売にする。そういったTAASというジャンルの産業ですね。ここはちょっと伸びています。

それから、これらをすべてサポートするエコシステムです。研究開発拠点や大学、OSベンダー、センサーベンダーですね。こういうところを合わせて、今80社とやらせていただいています。この80社のなかで、本当に公開されているのは10社足らずなんですが、そのなかでも例えばボルボは2017年、実際に市街地を、DRIVE PX2を使って100台走行させることを今、進められています。

それから、ご存じの方も多いと思うんですが、フォーミュラですね。「フォーミュラ1」というのが有名なんですが。今「フォーミュラE」というEVカーがあり、そこに今度、自動操縦のフォーミュラカーが2017年から入っていきます。

10チームが各チーム2台、合計20台でAIのアルゴリズムを競い合う。そういうところにもDRIVE PX2が採用されます。このあたりは共通のハードウェアなので、driving algorithmsと、それから人工知能の競争になるわけですね。

最近のニュースは、テスラモーターズです。弊社のプロセッサをお使いになって、それを全車に展開するということです。実際にもうハードウェアが、テスラーモーターズのWebに行かれますと、お客さんが自分の車をデザインできるようになっています。色を選んだりオプションを選んだり。そのなかでもうハードは買えるんですよ。

ベーシックな自動運転オプションは高速道路用です。これに追加オプションで市街地走行も可能な完全自動運転が提供されています。いずれにも弊社の高性能プロセッサが採用されています。

それを、ご覧になった方もいると思うんですけど、まずはビデオで紹介したいと思います。

(動画再生)

これは人がいなくても運転できますが、法的な規制で人が乗っています。これがもう市街地を走っているんですよね。

今、前方と後方2台のカメラでいろんなことを認識しています。対向車や反対側車線の車、歩行者、標識、レーンなどですね。そういうものを全部使って、人工知能が入っているんですけれど、もうできているんですよ。

ただ、やはり各地の法規制が厳しいので、実際これ今フィールドテスト中です。十分に検証した上で、もう作り付けのハードウェアにOTAですね。Over-The-Airで、まさにIoTですね。これでできあがったソフトウェアをダウンロードしていただく。この検証済みのダウンロード・ソフトをアクティベートしますと、このデモビデオのような完全自動運転が可能になります。世の中はみな様が思っている以上に早く進んでいます。少なくとも完全自動運転のハードウェアはもうすでに量産されています。

以上が、我々の自動運転の産業での立ち位置です。つまり、弊社の高性能プロセッサは完全自動運転向け量産品としてすでに出荷されています。

学習には膨大なデータが必要

次に、そこに使われている人工知能ですね。ディープラーニング。まずは画像認識から入ったんですけれども、そこに関してご紹介したいと思います。

これはみなさんがご存じの方も多いと思うんですが、今の人工知能のブームをまた再燃したきかっけになった、「ImageRecogrutionChallenge」という画像の認識のコンクールですね。ここは非常に難しくて、1,000種類のオブジェクトを認識すると。例えば、ヘルメットをかぶったドライバーがスクーターに乗って、横に車がオーバーラップしている。この4つを全部認識するとかですね。

これは2009年から2016年までのプロットなんですが、毎年コンクールがありました。このブルーのドットは、縦が認識率なんですが、ブルーが「traditional computer vision」と。人間が書いたアルゴリズムですね。例えば、人の認識だとHOGですね。

なかなかこう認識率75パーセントの壁を破れなかったんですが、2012年にトロント大学のヒントン教授(Geoffrey Hinton)の下で、アレックスという研究者が「AlexNet」を、8層の深層学習の認識のソフトを出して。これGPUで走ってるんですけれど。これがいきなり10パーセント性能を向上させまして。以降、これを見た他の研究機関がもうすべてグリーンに染まり(グリーンのドットはディープラーニング使用の画像認識)、ディープラーニングに移っていきました。

なお、これらのディープラーニングの画像認識はGPUが採用されています。2015年にはMicrosoftが152層もの非常に深いネットでこのコンテストに勝利しましたが、その認識率は、すでに人間の能力の95パーセントを凌駕しています。

そういう時代になっておりますので、やはりここからコンベンショナルなコンピュータビジョンからディープラーニングへ移行しないと、自動運転の画像認識では危なくてしかたがない状況になっています。

ここで1つ、難しい問題があります。認識は、単純にネットワークにイメージを入れて流せばいいので、これは弊社の組み込みプロセッサくらいの能力であれば簡単にできます。しかし、学習の方は、例えば自動車やバス、トラック、SUVの4種類の車種を区別するときは、それぞれ膨大なデータを用意しておかないといけないんです。

どれくらいのデータが必要かというと、先ほどのコンテストは1,000種類で100万枚の画像イメージくらいでした。フィールドの環境は、露光量が違ったり、物体のサイズが違ったり、アスペクトレイシオが違ったり、向きが違ったり、だいたい2桁くらいイメージの数を増やさないと、本当に強固でロバストな認識ができないんです。これが(データの準備が)、馬鹿にならないんですね。

従来のサーバクラスのGPU/CPUだと、1週間くらい一通りの学習にかかり、結果が思わしくなければチューニングし直す。それが何週間、何ヶ月、何年も学習にかかっちゃうんです。

GPUはそれを1桁性能上げられるんですよね。これがその例です。

これはイメージの数です。イメージの数に対して、CPUだと、例えば256イメージが257秒。これを線形換算すると、1億のイメージでだいたい11.6日なんですよね。これでGPUを使うと1桁、28.5秒で済む。だいたい1.3日ですね。こんなに大きな差があったので、みなさんGPUへいっちゃったわけです。

このデータは3年前で非常に古いんですが、このときのCPUはIvy Bridgeの10コアのものを2個。GPUはたった1個の「K40」です。しかも、ライブラリーが「cuBLAS」といって、我々のSuperコンピュータのライブラリしか使っていない。そのとき、我々はまだディープラーニング用のライブラリを持っていなかったんですよね。

では、いったい我々はどういうふうにAIをサポートしているのか。まずGPUのハードウェアがありまして、その上でCUDAという……あとで説明しますが、スーパーコンピュータで使っている超並列のプログラミング環境があります。

この上に、非常に最適化した「cuDNN」という、ディープラーニングのライブラリを乗せ、さらにその上にいわゆるフレームワークを載せています。ディープラーニングの開発環境です。これが「Caffe」とか「Chainer」ですね。

同じネットワークを使って認識を行うAIの強み

最後に、我々はここでもう1つ加えています。「DIGITS」という非常にビジュアルな学習環境を入れて、音声認識とかイメージレコグニションとかですね、こういうアプリを開発しています。

もうちょっとビジュアルに示すとこうなっていまして。上がアプリですね。真んなかがフレームワーク、下が我々がご提供しているライブラリ群ですね。

これがディープラーニング用のライブラリです。真ん中は、10年以上も我々が開発している、超並列用のCUDAの数学ライブラリです。それから、マルチコアで学習を獲得するためのユーティリティ。それから最後はインファレンスですね。認識するときにコードを最適化する、そういうエンジンを持っています。

例えば、我々は2013年からこういうものをご提供しているんですが、今、それがどれぐらい学習速度が上がったのか。

先ほどの「CPUに比べて10倍早い」というのは、実はK40で、cuDNNというライブラリがない状態なんですが、今年はPascalのP100、8コア並列、それからcuDNNの第5世代を入れて、だいたい60倍速くなったんですよね。だから、1日かかっていた学習が、半時間で終わる。今、そういったかたちで急加速をしています。

ということで、学習はほぼ弊社のGPUをみなさんお使いという状況になっています。そのなかで、「じゃあ車とどうつながるか?」というところですね。今、車での認識方法がなぜAIになりつつあるのか。従来の認識方法は、例えば歩行者はHOG、スピードリミットはハフ変換、各対象物によってアルゴリズムが変わる。しかも、認識率が75パーセント以下。

人工知能だと認識率が高いのに加えて、同じネットワークを学習さえすれば、歩行者であれ車であれ標識であれ、先ほどのテスラさんではないですが、認識されちゃうんですよね。そこが非常に大きな強みです。

我々も自身のネットワークを作って……。あ、もう1つメリットは、人間が書くアルゴリズムじゃないんですよね。非常に学習の向上速度が早いんですよね。2015年7月から39パーセントの認識率が、いきなり2016年2月に89パーセントも上がって、今、世界第3位ですね。

これはいくつかの結果ですが、どこかの場で紹介したので今日は省略いたします。

人間と同じように、目で見て操縦する

また別のデモでお見せします。

(動画再生)

もう1つ、これは自動操縦用にEnd-To-End、つまり人間と同じように目で見て操縦することができるんじゃないか、と。

我々はドライビングのとき、カメラを1本、convolutional neural net、深層学習のネットに入れて、いきなりステアを操る試みもやっております。

(動画を見て)サンルーフから手を出しているので、ステアを触っていないという証拠なんですが。こういうレーンがはっきりしていないような道なき道も、ブラインドカーブも、人工学習でいける。

これは学習前なので、コーンをどんどんなぎ倒していってるんですけれど、少しの学習でスムーズで走れるようになるんです。人間と同じですね。

(動画を見て)これは教師あり学習です。学習時は、教師がハンドルを握って、そのステア角とそれからカメラの情報を合わせてラーニングしています。こういう道なき道の障害物を避けたり、急カーブしたり、あとは工事現場でスムーズにコーンに沿って走ることができたりとかですね。人工知能も、人間と同じことができる。

しかしOEMにご紹介すると、ディープニューラルがブラックボックスなので、なにかあれば故障の原因究明ができないなどいろいろ問題があります。そこは、我々も工夫しています。ただ、習熟したドライバーのノウハウをここで吸収できるので、非常に使い勝手はあるんですよね。

こういった非常に望ましき人工知能を本当にできるプロセッサがあるか。そして、実はGPUがあります。

ソフトウェア・サポートがふんだんにあるアーキテクチャ

NVIDIAはスーパーコンピュータでもかなり地位を上げていまして。毎年2回、Top 500といって、性能の番付を500番付までやるんですけど。これは去年なんですけども、今、2位につけています。日本の「京」は、ちょっとこのときは4位ですね。

もう1つ大切なのは、この500番付のなかで、100台あまりがアクセレータを使っていて、このなかのまた60パーセントあまりが弊社のGPUを使われている。我々はたぶん、スパコンのシェアが15パーセントくらいありますね。

そのCUDAという超並列のコンピュータ環境も、今、ソフトウェア人口が非常に多くいまして。例えば2008年、大学でこの講座を持っていた大学は60はあったんですが、2016年ですと、950校が全世界でこのCUDAを教えている。そのために今、論文が7万7,500件ある。あとなによりも、このCUDAを走らせられるコンピュータ、GPUが今6億3,800万台が、世のなかに散らばっています。

もうデスクトップに弊社のGPUを突っ込んでいただくと、環境をダウンロードするだけで、みなさんのデスクトップスーパーコンピュータができあがります。こういう背景がありますので、取ってつけたようなプロセッサではなくて、非常にソフトウェア・サポートがふんだんにあるアーキテクチャになっています。そのおかげで今、cuDNNというディープラーニングのライブラリや、cuBLASという、線形代数やFFTなど、こういうライブラリが非常に充実しています。

自動運転ではヒトが書いた制御アルゴリズムも重要であり、それは非常に高い処理能力を要求します。そこにはGPUスーパーコンピュータで開発された線形のマトリックス演算やFFTなど、いろんなものが使われます。これは非常にキーコンポーネントになります。我々はそういうスーパーコンピュータをサポートする大切な使命があるので、2年おきに確実に世代交代していまして。今、Pascalの世代になるんですけれど。

この縦の指標が実は「SGEMM/W」、同じ電力でどれだけ処理性能を上げていくか。これが上がるということは、同じ性能であれば電力が下がっていくことになります。

プログラムにポジティブ・フィードバックをかけていく

今日、最後に。このスーパーコンピュータ、ディープラーニングに使用されているGPUがどのように自動運転に搭載されているかをご説明いたします。我々は次世代の車載プロセッサ「Xavier」に向かって、今、パワーを4分の1に下げています。同じ性能でです。そういうことが実現できるので、今日、例えば80ワット使っていた自動運転のプログラムが、2020年には20ワットでできると。そういうシナリオが描けるわけです。これをもう1つサポートするのが、ONE ARCHITECTUREということでございます。

先ほど、スーパーコンピュータに使っているデバイスは「Tesla」という我々の製品群で。これ1つひとつが実はDSPのような演算機でありまして。32bit、64bitフローティングポイント積和をシングルクロックでできるという、相当強力なDSPがあるんです。これを3,000、4,000搭載しています。

同じアーキテクチャをスケールダウンするだけで、9割の市場シェアを持っている。ワークステーション用のQuadro製品群とか。あと、ヴァーチャルリアリティは非常にグラフィックスの性能が必要です。例えば、GeForceですね。民生用のGPUもここに切り出して使っています。

最もミニマムなのが、車載に乗ってくるAutomotive Tegraですね。これが一番ミニマムの構成です。ただ、この場合はGPUだけじゃなく、ここにARMのCPUコアも搭載されています。ということで、この車載用のチップは一品一様のある時期に作った特殊なチップではなくて、その背景にはスーパーコンピュータの技術が入っています。

これはそのロードマップです。我々は「X1」から自動運転用のプラットフォームを作ってきまして、第1世代「DRIVE PX」、今は第2世代「DRIVE PX2」になっています。

あとでご紹介しますが、ここには「Parker」を乗せています。256コアですね。最後にご紹介しますXavierは、コア数を倍に強化しまして、CPUも相当強力にしております。

これが現行のParkerですね。Pascalの世代のGPUが256コアと、ARMv8ですね。64bitのCPUが6個。そのうちの2個は、我々、ARMからアーキテクチャライセンスをもらいまして、約5割性能が高い独自のCPUを入れています。

もう1つ自動車で大切なのがセーフティエンジンです。このロックステップで、きちっと相互監視できるマイコンが入ったセーフティエンジンを中心に、全チップを自己診断して、きちっとISO26262に準拠するように今進めております。

ONE ARCHITECUREのメリットのもう1つは、先ほど、学習が非常に時間かかると申しましたが、弊社のスーパーコンピュータとかサーバを使うと、それが非常に高速にできる。学習したネットはそのまま、変換せずに、自社のGPUを搭載したDRIVE PX2にダウンロードできると。

ここでデータフォーマットを変えますと、他のプロセッサやFPGAなど、非常に人手もしくはほかのツール・コンパイラが入るので、ISO26262機能安全上は危険なんですよね。我々はコンパチなので、そのままどっと落とせる。実際、フィールドでここですべて学習しきれたかというのは、学習漏れもあるし、環境がダイナミックですから変わることもある。それをプローブカーで読み取って、またサーバに返す。

サーバはまたそれを再学習して、最新のニューラルネットをまたダウンロードするという、ポジティブフィードバックをかけてますます車が賢くなっていく。そういうシナリオを今描けるようにしております。

背後だけでなく側面も見られる3Dディテクション

今度はPX2というプラットフォームですね。SoCだけだととても自動操縦につながらないので、我々はこういうプラットフォームを作っています。最初に出したのが「Autochauffeur」と言って、かなり強力な4プロセッサが乗っているプラットフォームです。2016年に出させていただいたのが1 Parkerだけの、AutoCruiseとです。高速道路の自動運転だとこれで足りるんですね。

完全自動運転だと、これは現在のところは複数枚使っていただく必要はあるんですが、今日それもできる状況になっています。

DRIVE PX2は表に2つのParker、裏にGPUだけのモジュールを2つ入れていまして。この4個のプロセッサでDeep LearningのTera ops/secが20出ています。非常に効率のいい電力のところで使うと80ワットということで、上の性能を得ています。

カメラ入力は、テスラさんも8を使っていらっしゃっていたんですが、このプラットフォームは12まで共用できます。これが一番ミニマム単位で、AUTOCRUISEですね。高速道路用です。非常にコンパクトになりますが、1個のParkerで、SoCとして10ワットですね。非常に軽い処理で高速道路の自動運転ぐらいだとできます。

次世代SoC、XAVIERは、実は先ほどのDRIVE PX2の4個の強力なプロセッサを、性能を逆に上げて、電力を下げています。そういうのが1個のSoCに集約されます。

まず、Deep Learning TOPSですね。これは、20は20のまま。それからCPUのSPECINTは120から160に逆に上げて、80ワットが20ワットになっています。これがその概要です。ここに512個のGPUコア、コアは64bitのCPUコアが8個。新たにcomputer vision acceleratorをこの上に持ってきまして、これで先ほどの電力性能を出しております。

これなにができるかというと、DRIVE PX2でソフトを書いていただいて、そのソフトがコンパチでそのままXavierに乗る。だから、非常に複雑なアルゴリズムをこちらに乗せていただいて、量産時に、2020とかそれ以降はもうこっち移れると。こういうタイムマシンのようなものがプログラムできる体制に持ってきています。

この上に乗るソフトもまた大切でありまして。我々、こういう実車を作っていまして。今、米国のニュージャージと、それから、先週カリフォルニアで正式に自動運転をできるような許可を取りまして、今、やっています。

これは6カメラを持っておりまして。ディープニューラルが非常に長けています。車の背後だけじゃなくて、側面も見れるようにしました。3Dのディテクションですね。これによって、この車がどういうエリアを占めているかというのを正確に認識できる。

あと、今6カメラ同時処理して、これ、FREE SPACEですね。ちょっと見にくいんですけれども。「ここには他車がいて、自動運転車がここは通れない」「ここは歩行者でやはり通れない」というので、自車からどこが通れるかというフリースペースを探す、そういうニューラルネットも搭載しています。

習熟した運転と、安全な運転をする自動車

ここで、ちょっとデモをお見せしたいんですけれども。

(動画再生)

(動画を見ながら)ちょっと画面が小さいですが、これが3次元のパーセプションですね。DRIVE PX2で動かしていますが、サイドも見ています。

これがフリースペースですね。あとこういう市街地も行ってます。同時にできるんですね。レーンとフリースペースと車の3Dの検出が同時にリアルタイムでできている。こういう性能がございます。我々はこれをDriveWorksというソフトウェアディベロップメントキットに搭載しております。ここに「DriveNet」「OpenRoadNet」。これがフリースペースですね。こっち側が物体を検出しています。

そしてLocalizationしてから、こういうOccupancy Gridを作ります。Occupancy Gridというのは、みなさんご存じのように、自車位置に対して破線、レーンですね。それからブルーが障害物ですね。トラックであったり車だったりモーターサイクル。それからこのグリーンがフリースペースですね。こういうものをマッピングします。

この上で、Gridマップした上で、推測して、次の時間、道路がどう変わるか、自車位置がどう変わるか、他のオブジェクトがどう動くかというのを推論した上で、ここで3つのパス・プラニングを使います。

1つは、先ほど言いました「PilotNet」ですね。AIを使った自動操縦のパスプラン。それからあと、人間が作ったアルゴリズムを組み込みますし、あとヒューマンドライバー、運転手ももちろんここに参加して、ここで安全の検出をします。安全性の度合いをですね。

例えば、レーンまでの距離とか、スピードを遵守してるかとか、前車との距離とかですね。こういうものを天秤にかけて、この場合は「if then else」で、最初はPilot Net、次は人間が書いたパス・プランナー、最後にばんざいすると人間のドライバーに「お願いね」ということで、そういうシーケンスになっています。これは変えられるんですけれども。これで最後に操縦する。まあ、こういうことで。

先ほど人工知能だけでドライブするのは、センチメーターの精度は保証しかねるので、ここはもうhigh-definition mapも使った、5センチ程度の精度があります。人工知能のパスプランナーを、人間のステアを切る習熟したドライビングを加えて、安全な運転をするという賢い自動車ですね。こういうものを今目指しています。

ちょっとこれは時間の関係で省略しますが、ビジュアライゼーションと言いまして、我々グラフィクスも得意なので、同じデバイスでできるので、自車が……自動運転車が周りをどう認識しているかというのも今できています。

以上でご報告を終わります。どうも、ご清聴ありがとうございました。

(会場拍手)