コンピュータビジョンによる代表的な技術「顔検出」

あなたはデジタルカメラをお持ちでしょうか。デジタルカメラを触ったことがある方なら、「レンズを人物の顔に向けると自動的に顔の位置を検出して四角形で囲ってくれる」という機能をご存知と思います。このような、人間の顔の位置を自動検出する技術を「顔検出(face detection)」と呼びます。

登場当初は目新しいものであった顔検出も、今では各社デジタルカメラに標準搭載されるようになりました。また、インターネットやPCになじみの深いあなたなら、Facebook、Picasa、iPhotoなどで写真を管理されている方も多いと思いますが、こういった写真管理アプリケーションにも、顔検出機能が搭載されるようになりました。

このようにデジタルカメラや写真アルバムアプリケーションで標準的に使用されているという現状の普及度や知名度を考えると、今回紹介する「顔検出」がこの連載で紹介する各コンピュータビジョンの技術の中で、読者の皆様に一番なじみが深い技術だと言えます。今回は、その「顔検出」の仕組みについて紹介していきます。顔検出には、「パターン認識」と「機械学習」という、今日のコンピュータサイエンスを様々な場面で支えている技術により実現されています。今回より数回にわたり、これらについてもわかりやすくご説明したいと思います。

顔認識??顔検出??

ここまでの導入セクションを読む中で、勘のいい方なら少しぎこちない感じを受けたと思います。それはどこか?、「顔検出」という言葉です。「あれ? この顔の位置を検出するのって"顔検出"じゃなくて、"顔認識"って言うんじゃなかったっけ?」と感じた方が居たのではないでしょうか。そうなのです、"顔認識"と"顔検出"は違うのです。これら2つの区別があやふやで、混同してしまって居る方が多いはずです。というわけで、顔検出の仕組みを紹介していく前に、まずは「顔認識」と「顔検出」の違いを把握しておきましょう。

顔検出とは、簡単に説明すると「顔の位置を検出する技術」です。一方で、顔認識は、「たくさんある顔画像の中から特定の人間の顔を認識する技術」のことです。この連載ではまだ顔認識の仕組みについては紹介しておりませんが(今後、紹介する予定です)、簡単に言うと「カメラや画像に映っている画像中に映っている顔が、データベース上に存在する特定の人物の顔と一致しているかどうかを判定する」のが「顔認識」という技術です。顔認識を用いると、写真アルバムアプリケーションでよく搭載されている「家族や友達の顔を分類する」機能も実現することができます。なぜなら、顔認識により「この顔はAさんの顔」、「この顔はBさんの顔」というように、各顔の画像が一体誰の顔画像なのかを自動的に判別できるからです。

「顔認識」は通常「顔検出」とともに用いられることがほとんどです。それではなぜ顔認識を行う際に、顔検出を行う必要があるのでしょうか? 例えば、ある監視カメラの動画から犯人の顔を探すためにこの動画に対して顔認識の処理を行うことを考えます。この時、例えば総当たり的な処理で、顔検出は一切行わずに対象の画像全体に顔認識処理を行って、顔が存在していない画像中の背景部分にも全て顔認識による判定を行えば、特定の人物の顔画像を発見することも当然ながら可能です。ただ、これだと画像中の大部分を占める、顔ではない背景部分にも逐一全て顔認識処理を行う必要があるわけで、非常に計算効率が悪いです。従って、この計算を解決するために「誰の顔なのかはさておき、まずは人間の顔が存在する座標を取得する技術」である「顔検出」が、顔認識の前処理の技術として必ず行われるわけです。

以下の動画はAppleのiPhotoの顔認識機能の紹介動画です。この動画で登場する2人の子供「あおいちゃん」と「翔太君」を識別して自動分別しているのが「顔認識」技術です。一方、写真中から自動的に家族の顔の位置を検出して顔を切り出しているのが「顔検出」技術です。

また、2010年の話題ではありますが、東京のJR品川駅内に、カメラを用いて購入者の顔から年齢と性別を自動判別するという機能が搭載された自動販売機が設置されたというニュースがありました。また、2010年のESECではインテルのブースにて同様の機能を用いた次世代自動販売機のコンセプトモデルの紹介を行っていました

品川駅のデジタルサイネージ自販機はオムロンの技術により実現されたもので、顔認識により性別と年齢がデータとして取得できるので、このデータの蓄積により購買層の分析も可能になるというものでした。このように顔認識は単にAさんとBさんの違いを認識するだけではなく、各個人の顔のタイプを認識して年齢や性別(あるいは人種なども)を自動判別できるという応用もあります。

ちなみに、「デジタルカメラによる顔認識」という誤用をよく見かけますが、前者の場合は顔の位置を検出してくれるのみの機能なので、「顔検出」しか行っていないわけです。日本だと、こうした顔検出だけの場合も含めて「顔認識」と呼ぶことが普通になっており、顔検出と顔認識を混同されている方が多くなっているわけでした。それでは、次回以降、本題の「顔検出」の仕組みについてみていきましょう。