マスクをした顔を正しく顔認証! 精度の違いは?

目次
「顔」を顔だと検出する方法は?
スマホで人を撮ろうとすると顔の周りに四角が表示されませんか?デジカメも含めて人の顔に焦点をあわせてくれる便利な機能です。この仕組みはどうなっているのでしょうか?まずは歴史から。
1993年に、米国国防省が顔認識プロジェクトFERET(Face Recognition Technology)を開始した。主な目的は、顔認識システムの開発と評価であり、そのためにいち早く顔データベース(FERET Data Baseとよぶ)の作成に着手した。1996年には、1199人合計14,126画像(同じ人でも、異なる時、表情、向き、髪など)を完成し、一般に公開した。世界の顔認識の研究は、FERETデータベースを使うことによって加速された。無断で顔写真を使うことは肖像権の侵害となるので、公開可能な顔データは貴重である。このプロジェクトは、2000年からは顔認識システムの評価(Facial Recognition Vendor Test(FRVT))に移行し、より大規模なデータベースを用いるようになった。(中略)
役に立つ画像処理 立命館大学 白井良明
2001年に、Viola等は、高速に顔を捜す方法を提案した。顔特徴としては、顔の種々の部分領域に対応する簡単な局所パターンに限定した。それは、顔の部分に対応する明暗の組み合わせを検出する方法である。処理を効率よく行うため、まず眼に相当する特徴を検出し、それが検出されたとき(T)のみ口に相当する部分を検出する。このように段階的に処理をおこなう。 顔でない領域の大部分では、早い段階で棄却される(F)ので、計算量が大幅に削減される。

この様にして組み込み用チップでもリアルタイム処理できる工夫がされています。
更に現在では以下のような方法があります。
- Haar-Like 特徴量(カスケード分類)
- HOG + SVM
- CNN
1 の Haar-Like 特徴量は以下のような感じで顔かどうかを区別します。
2のHOG+SVMについては「顔認証が顔を識別する仕組み」でご紹介しました。明暗の勾配から顔を推定するのでした。もっと深くお知りになりたい方はこちらからどうぞ。

3 の CNN はどうでしょうか。Convolutional Neural Network (直訳すると畳み込み神経ネットワーク)は以下の原理で成り立っています。
3.jpg?resize=640%2C480)
CNN 自体の計算方法は確立されていますが、ブラックボックス問題も持っています。たとえば中間層で

上の図が何を示しているか分かる人はまず居ないと思います。(答えは「猫」です)
しかし、そんなディープラーニングにも弱点はあります。その中でも大きい問題点が、「何を根拠に判断しているかよくわからない」ということです。
ディープラーニングの判断根拠を理解する手法
ディープラーニングは、学習の過程でデータ内の特徴それ自体を学習するのが得意という特性があります。これにより「人が特徴を抽出する必要がない」と言われたりもしますが、逆に言えばどんな特徴を抽出するかはネットワーク任せということです。抽出された特徴はその名の通りディープなネットワークの中の重みに潜在しており、そこから学習された「何か」を人間が理解可能な形で取り出すというのは至難の業です。
これは「人工知能が出した答えが、どんなふうに考えて出してきたのか分からない」と言う問題です。
第4回 ディープラーニング(深層学習)のブラックボックス問題と課題 – NTT DaTa
現在の人工知能ブームはディープラーニングによるものとお話してきました。それ以前は、前にもお話しましたが、人間がルールを決めて、コンピューターに判断させる手法でした。つまり、答えを出す方法を人間が決めていたのです。「写真の中に白い三角形があれば、ヨット」とかね。ところがディープラーニングはコンピューターが勝手に判断するルールを探すのです。このルールはニューラルネットの重みづけの塊となって表されるのです。重みづけの塊が何を意味するのかを読み解けば、人工知能が出した答えの出し方が分かるのです。「なんだ、簡単じゃないか!ブラックボックス問題なんて問題じゃない!」
いやいや、この重みづけは、莫大な数のニューロンをつなぐ莫大な数のシナプスの重みづけです。複雑な関係を表現したネットワークなのです。これを解明するのは、現時点ではほぼ不可能です。ですので、ブラックボックス問題は問題になるのです。
それでも謎を謎のままにせず解析しようという試みはいくつもされています。「判断根拠の「理解」の定義」
パーセプトロンが第3次AIブームの火付け役に!
深層学習の基本的考え方に「パーセプトロン」があります。今の人工知能ブームは歴史的には 3 回目です。このあたりは色々な書籍・サイトに載っているので割愛します。
余談ですが、このパーセプトロンの考え方は本当に脳によく似ています。もっと言うと「小脳」の仕組みにそっくりなんです。
小脳におけるシナプス可塑性が学習に関係することを初めて予測したのは、マー ( Marr ) という 35 歳で亡くなった天才肌の学者でした。彼は、小脳の神経細胞の構築を見て、神経回路のはたらく仕組みの一つとして提唱されていた「パーセプトロン」という数学的なモデルに合った動きを、この小脳の神経回路がしているのではないかと考えたのです。
岩波ジュニア新書「脳科学の教科書(神経編)」p.198

パーセプトロンを多段階にすると良好な結果を得られたことから、それまで冷え切っていた人工知能ブームが再燃したのです。これを第 3 次人工知能ブームといいます。「多層パーセプトロン」もご参照ください。
そして2012年には、ILSVRCという画像認識の精度を競い合う競技会で、ディープラーニングを利用したトロント大学のチームが圧勝します。これをきっかけにして、ディープラーニングがブームとなり、今ではさまざまな分野でディープラーニングが活用されるようになりました。
パーセプトロンからディープラーニングまでの歴史
ごく簡単に言ってしまうと、パーセプトロンを ものご〜く複雑 にしたもがディープラーニングです。そのためディープラーニングを学ぶためには、この「パーセプトロン」の仕組みを理解しておくことがとても大切になります。
今までの機械学習を根本から覆す精度の良さに、世界はびっくりしたのでした。
各検出器の精度はどのくらい?
実際にマスクをかけた状態での写真をもとに精度比較をしてみました。元となる画像は以下です。

Haar-Like 特徴量(カスケード分類)の場合

加藤元厚労大臣のマスク姿はほぼ検出しています。対して小池都知事は横顔しか検出していません。このように照明状況や背後に何があるかで検出率が変わっています。
HOG + SVM の場合

HOG+SVM の場合もほぼカスケード分類と同じ結果になっています。加藤元厚労大臣のマスク姿は検出するものの小池都知事は横向きのみ検出しています。
CNN の場合

CNN で検出した場合、全ての顔に対して検出を行えました。現実的な処理速度を出すにはNVIDIA製GPUカードが必要になります。
まとめ
どの方式でも加藤元厚労大臣の顔は下向き以外しっかりとクロップで来ておりますが、小池都知事の場合には差が出ています。このように照明条件や人の背後に何があるかなどで差が出てしまう可能性があるのがカスケード分類やHOG 、安定して顔を検出するのがCNNという感じです。
計算資源としてCPUしか使えない場合HOG、ミドルレンジ以上のNVIDIA製GPUカードが使える場合にはCNN方式を選ぶのが良いと思います。
以上です。
最後までお読み頂きありがとうございました。