Herta Securityは顔認識を行う会社である。当然、顔認識にはディープラーニングを使っており、顔の画像から性別、年齢、人種などを認識する。

GTCの展示会場は、夕方のHappy Hourになるとビールやワイン、ウイスキーなどを出すブースがオープンし、GTCのバッジと一緒に配られた飲み物券を出すと好きな飲み物がもらえる。Hertaは、それらのブースとは別に、YOU Barというブースを出していた。YOU Barの看板には、Pre Compiled Drinkとして、Herta My Heart(Bloody Mary)、The George Jetson(Gin and Tonic)、El Quadro(The Margarita)、NVIDIA Toolkit(Screw Driver)という名前が並んでいる。それ以外のカクテルや、ビールやワイン、ソフトドリンクもある。

YOU Barでは、最初に顔をスキャンして記憶すると、次からは、なじみ客として前に注文した飲み物が言わなくても自動的に出てくる。顔認識さえできれば、それ以外には大して難しい技術は必要ないと思われるが、印象に残るデモである。

展示会場のHertaのブース

YOU Barの看板

Herta Securityのシステムは、ビデオをデコードして、その中から顔を見つけて前処理を行う。その結果をDNN(Deep Neural Network)で処理して結果を出すという構造になっている。Hertaのシステムは、これらの処理をすべてローカルで行っている。

しかし、顔の切り出しをDNNでやろうとすると、640×480画素のイメージを処理するには、Tesla K20を使ってもCNN2のソフトカスケードでは15fps(フレーム/秒)かかり、GTX760を使ってHOGとDNNでは0.7fpsと非常に時間がかかる。

これでは4K画像を、消費電力に制限のあるTegra X1でリアルタイムに処理することはできない。このため、HertaはカスタムのCUDAカーネルをカスケードにして使うという方法を開発した。この方法では3840×2160画素のイメージを、Tegra X1では最大30fps、Quadro K2200を使えば最大150fpsで処理できる。

Hertaは、ビデオ画像から顔を検出し、目尻、口角などの特徴点を見つけて、目の位置を一定にする処理をCUDAで書いた専用のカーネルで処理している。さらに、CUDAカーネルで顔の向きを正面に向ける処理を行ってから、DNNの認識に入力している。

この正面に向ける処理であるが、次の図の青線は目の位置の一定化までの前処理後にDNNに入力した場合の認識率で、赤線は正面を向ける処理を追加した場合の認識率である。この図に見られるように正面化を行うと、誤認識の率が半分以下になり、学習に必要な時間も1/3になっている。これがHertaがTegra TX1という消費電力が低い小型のGPUでも高速の顔認識が実現できている理由である。

つまり、大きなDNNを使って顔の切り出しから認識までのすべての処理をやらせるより、効率的な前処理と8~15層程度の比較的小さなDNNを組みわせる方が良いという。