コンテンツに飛ぶ | ナビゲーションに飛ぶ

  • 日本語
  • English
セクション

テキストページ4

第5回「京大おもろトーク: アートな京大を目指して」〜顔
2016年7月25日(月)

パネリスト:金剛 永謹氏(能楽 金剛流二十六世宗家)(以降敬称略、金剛)
牧野 圭一氏(漫画家・公益社団法人日本漫画家協会理事)(以降敬称略、牧野)
山極 壽一氏(京都大学総長)(以降敬称略、山極)
川嶋 宏彰氏(京都大学情報学研究科准教授)(以降敬称略、川嶋)
司会:土佐 尚子氏(高等教育研究開発推進センター教授)(以降敬称略、土佐)
土佐
牧野圭一さんでございました。
それでは次にコンピュータで顔を見る、画像認識の研究者をご紹介しましょう。本学大学院情報学研究科、知能情報学専攻の川嶋先生でございます。よろしくお願いします。
川嶋
京都大学の情報学研究科の川嶋と申します。今日はこんな機会をいただいて、どうもありがとうございます。私の方からは、またさらにコントラストの違う話題なのですが、コンピューターは顔をどう見るかということについて、ちょっとお話をしたいと思います。
川嶋 宏彰氏
川嶋
もともとずっと画像をコンピューターで撮る、要するにカメラを繋いで画像を撮ると。で、そこから何が映っているか、どんな動きがあるのか、そういったことを認識するというような研究をしてきました。その中でやはり、顔っていうのはかなり面白いテーマでして、以前に顔を扱った研究も行っていまして、今日はその紹介も少しさせていただければと思います。
まず、コンピューターと人の「目」の違いというところから見たいと思うのですが、人の目はレンズがあってですね、網膜がある。光が入ってくると、視細胞、例えば、実は視細胞は大きく二手に分かれていて、色をみる細胞と、動きとか白黒に感じる細胞があるのですが、人間も赤とか緑とか青に反応するような三種類ぐらいの細胞がある。で、ここの情報が脳の後ろ側の第一次視覚野に入ってきて、ここから脳の中での処理が始まるということです。網膜から映った像が、処理されながらここに入ってきてくる。
川嶋 宏彰 スライド
網膜断面図:http://webvision.med.utah.edu/book/part-i-foundations/simple-anatomy-of-the-retina/, 視覚野:https://commons.wikimedia.org/wiki/File:Constudeyepath_ja.png (by RobinH, translated by was_a_bee.)
川嶋
じゃあコンピューターのほうはどうかというふうに考えてみると、コンピューターはカメラが繋がっています。やはりレンズがあって光が入ってくる。ここに光が電気信号に替わるような素子(フォトダイオード)が並んでいまして、上にやはりこういうRGBのフィルターがある。高いカメラだと実は3枚あるのですが標準的な1枚の場合にはこういうフィルターがあって、あとで赤と緑と青の値を相互に補完していくということが行われて、画像が電子回路に入ってくるわけです。そうすると入ってきた画像というのは、例えばデジタル画像には、ご存じだと思いますがピクセルというものがありまして、それぞれに赤と緑と青の値が入っている。この辺は緑が強いですし、この辺は青が強い、ここは赤が強い。そういったピクセルが並んでいる訳です。これが処理の入力です。そういう意味で言うと人間の網膜の像が入ってきて処理が行われるところと近いのですが、要はそれを脳で行っているということですね。ものが見えたり意味が分かったりするという認識は全部脳が行っていますが、コンピューターのほうはこの箱の中にCPUプロセッサーが入っていまして、そこで行われているということで、若干類似点もあるのかなというふうに思います。
コンピューターが顔を見る時は、実はいろんなアウトプットの方法があります。誰が映っているかを認識する、フェイスブックだとマウスを置くとだれが映っているのか名前が出てくるわけですね、今は。コンサートのチケットの購入なんかにも顔認証を入れようと、そういうふうに人を認識するような話もあります。もしくは、年齢ですね。何歳ぐらいの年齢で、男性か女性か。そういったものの属性を推定したりとかです。さらにはその動きとかですね。こういう表情の場合、これは少し怒りの数値がちょっと高いのかなというかたちで表情を認識する。そういったことをコンピューターは画像が入ってきたときに行っていくわけです。
これが「出力」ということになるのですが、じゃあ「入力」と「出力」が、最初は画素が並んでいるだけ、色が並んでいるだけ、それがなぜこういう「出力」ができるのかというところなのですが、今の主流のプロセスはだいたいこんなかたちになっています。
川嶋 宏彰 スライド
川嶋
最初はやはり顔を見つけてくる、どこに顔が映っているのかという事が必要です。今日のポスターの画像で実際に顔を検出してみたのですが、顔が映っているところ、顔と認識されて、こうやって抽出されてくる。実はここら辺(川嶋先生の写真の後ろの暗い部分)も認識されているのですが、実はうっすらとここに顔があって、それが検出されている感じです。そのうちの一部を取り出して、今度はその顔の特徴点、要するに眉毛の点だとか、目の端だとか、目の周りだとか、口の周りだとか、顎など、そういうのを取ってくる。人物の顔の認識を行う場合は、この特徴点をベースに大きさと位置を合わせていくわけですね。それから、もともと登録されていているものと照合してあげて、一致するかどうかで顔認証をします。
一方で表情の方では、顔の特徴点は非常に大事になってくるので、より詳細に解析していく。当然顔の向きなど、そういったものも計算しながら、各部位がどういうふうに変形しているか、眉毛がどのくらい持ちあがっているか、そういったものもすべて数値化して統合して表情認識をしていく。そういった流れになります。今日はですね、このスライドの下側の流れ(表情認識)をメインに紹介したいと思っています。
川嶋 宏彰 スライド
川嶋
特徴点の検出というのはここ数年でかなり精度が上がってきているので、どういう方法かというのを少し紹介させていただきたいと思います。基本的には形のモデル、あと見た目のモデル、この二つを組み合わせていくということになります。形のモデルというのは簡単に言うと、目があってそれが横に並んでいる、下に鼻があって、口がある、そういう配置関係ですね。この配置関係で許される配置関係、許されない配置関係というのがあります。顔らしいかどうか、顔のパーツらしいかどうか、表情が変わると当然配置関係もずれるのですが、どこまでそれを許容するか、それをデータから学習しておくということになります。当然こういうのは、顔以外のたとえば肺の動きであるとか内臓の形とか、そういったものにも使われているモデルでして、形状を使っていきます。
もう一つは見た目ですね。見た目に関してはふたつ流派があるのですが、一つはこういう特徴点の周りのテクスチャーです。顔の柱というのはちょっと三角のようになっているとか、そういった特徴をそれぞれ局所的に見た目を持っておくということでやります。これのいいところは、多少はある人を学習するときに使ったデータを、また別の人を入力してもその人に対してもよく動くということで、かなり今こちら側の方法が主流になっている感じです。もう一つは、つい5年から10年くらい前まではこちら側の方法がかなり主流で、こちらは顔の中のテクスチャーをそのまま使いましょうと。こちらもいいところがありまして、顔のこちら側の形状モデルと合わせるとCGの顔の生成みたいなことができます。実は今回のポスターで顔が並んでいるところがあるのですが、あれも実はこのモデルを使って生成した顔の画像です。あれはコンピューターで生成した顔なのです。学習しておくと実写に近い顔の形の生成ができる。よくCGとか唇の動きを音にあわせて、しゃべるときに口をアニメで動かすとかいったのは、こういう方法でやったりしています。
こういう特徴点の検出があるのですが、あともうひとつ出力の方で話しておきたいのが、表情認識の最後のところで、どういう表情の分類にするかということです。これもいろんな議論があるのですが、よく使われるのは、実はログカテゴリーと言って、幸福とか悲しみ、驚き、恐怖、怒り、嫌悪ですね。確かダーウィンのあたりでですね、万国共通の感情としては7種類だったと思うのですが、そこからきています。またポール・エクマンという方が70年代にこの6つに関しては万国共通の表情だよということをかなり詳細に調べまして、いろんな議論もあるんですが、今かなりの認識方法ではこの6種類か、もしくは何種類か加えた大体10種類くらいの表情に認識しようということでいろいろ取り組んでいます。いくつに分類するかほんとうにいろんな議論がありまして、喜怒哀楽なのか、もしくはさらに二つ追加する。もしくは、中国だと五情という形だったと思うのですが、いろんなカテゴリー分けがありますが、まあ大体これが基本になっています。実はそういう表現も、例えば二次元でさらにマップされたりしています。横軸が「快・不快」で、縦軸が「興奮度・活性度」で、喜びだとポジティブでかつ活性度が高いとか、そういったような分類もできるよ、というような話もありまして、コンピューターで最後にこういった形で出力するようなこともあります。
川嶋 宏彰 スライド
川嶋
じゃあどうやってこういう認識をしていくかということなのですが、一番よく使われている方法というのは、FACS(Facial Action Coding Systemの略:顔動作記述システム)と呼ばれる方法で、これもポール・エクマンらの提案したものです。要は各部位の変形情報の足し合わせで表情を検出しましょうというものです。例えば驚きであれば、眉の内側が上がる、外側も上がって、上瞼が上がる、かつ顎が下がる。で、これで驚きだということですね。1+2+5+26って書いてあるのはこの番号なのですが、こういう表現の仕方でやります。実はコンピューターでやるときも、まずAU(Action Unitの略:各部位の変形情報)、これをまず学習しておいて、顔を読み込ませた時に「今AU1番が高いよ」とか、そういうことを出力できるように学習しておきましょうというようなことをやったりします。
こういう組み合わせで、ということを考えていくとLINE(スマートフォンのチャットアプリ)とかで、顔文字の代わりに使えるかもしれないなと思いまして。例えば、「今から向かうわー」とか言って、AUの足し算で見せると、「46+12+27」となります。まあわからないですね。間違い無く はてな が返ってくるか、スルーされるかだと思いますが。実はこれは、こんな感じの表情ですね。46番ウインクですね。12番がちょっとこう頬が上がって、27番で顎が下がる。このぐらいの情報量ですね。
川嶋 宏彰 スライド
川嶋
こういった感情による表情の表出は、実は自分の状態がこれで伝わるわけですね。相手は読み取ってくれると。ただ、今のLINEの話のように、実は「伝える」っていう話もあってですね、表情というのは実は感情だけじゃなくて、意図的に作っているときもかなりあるだろうと。獲得過程を見てみると、もともと笑うとか泣くとか驚くというのはあるとは思うのですが、後天的に生まれてからずっと親の表情とかを見ているわけですよね。そうすると、いないいないばあをしてみたりとか、あとは表情遊びで親の顔を真似てみたり、その顔を親が真似てみるとか。相互に真似し合っていると、どうもなんか繋がっている感覚がするとか、そういったコミュニケーションの手段としてよく使われるのではないか。もしくは、アメリカで歩いているときに誰かとすれ違う。目が合うと、その時に必ずこちらも少し笑顔になって挨拶をするわけですね。もちろん元々は敵ではないよということを示したいというのはあったのかもしれないのですが、やはりそれも社会的なある種のルール、規則になっているというのをアメリカに行ったときに非常に強く感じました。そういった文化的な、もしくは社会的な文脈での表情の作り方というのはある。もともとの感情に意図がオーバーライトして、表情が出ているよと、要はコミュニケーションの手段としての表情だよ、ということを考えながら表情認識をしなきゃいけないのではないかなというふうに思っております。
実は今はまだ感情レベルでやっています。やはりFACSとかでやっていくことの限界がとこかにあってですね、エクマン自身も表情の持続とかタイミングのズレ方とか、そういった情報が意図的な表情を扱うのだったら大事だよということを言っています。それではどういう表情の記法が今後いいのかなということで以前考えた方法がありまして、要は顔の各部位がパートだし、動きが音符だと考えると、いろんな動きが顔の中で統合されていると。英語だと統合とか組織化とか” orchestration”という言葉を使うのですが、そうすると顔の中にもなにかしらオーケストラがあって、なにかこう動きが統合されて、組み合わさって表情を作っている。そうすると音楽のような形で、顔の中の表情を捉えられないかと。これはピアノロールでメロディラインですし、これはあのアバーノーテーション、舞踏句ですね。各ボディパートがどんな動きをするかを記述する。時間軸上での動きを見るわけです。そうするとこれはある種、和音みたいな形になっているので、動きの足し算ということですね。
川嶋 宏彰 スライド
川嶋
やはりこの時間軸上で、こういう譜面の形で、何か表したい、表情を表したいということで、以前提案したのが表情譜という表現方法です。顔パートがこうある、眉が上がるとか下がるとか、要は要素的な動きが切り替わる。そんな形でメロディのように、顔の部位の動きを捉えたいというような方法ですね。これをいろんなパートについて行うわけです。ちょっと口は複雑な動きがあって、しゃべったりすると特に複雑な動きがありますが、一つの音符にあたる、モードと呼んでいますが、あるモードはすぼめるとかですね。こういった動きを関連すると。こういった記法にしておくと、動きのタイミングと持続長が見えてくるかなあというので、実際やってみた話がありますので、ちょっと紹介します。
川嶋 宏彰 スライド
川嶋
これは入力が画像の系列だと。画像を、先ほど言ったトラッキングで特徴点のトラッキングをして、表情によって今の譜面みたいな形に変換する。こうすると持続長とか動きのずれ方が解析しやすくなるので、そこから意図的な笑顔とか、自発的な笑顔を分離できるような解析ができないかということです。
おもしろいのはこれが逆向きにも使えてですね、表情を与えることができるのです。ここから今度は画像の系列が形成できる。つまり音楽を再生できる形で表情を再生すると、映像が出てくる。そういう枠組みを提案してみました。例えば目の動き、頬の動き、瞬きしたり、笑うときに目が細まったりするわけなのですが、ここから一回音符として使うための動き、単純な動きが何通りぐらいあるのかな、それそのものを見つけてくる。同時に自動採譜ですね。譜面を自動的に獲得できないか。入力はこのデータです。y座標を見てみると、まばたきがあったり、目が細まったり、そういうデータですね。
川嶋 宏彰 スライド
川嶋
これをちょっと詳細省いていますけど、似たような動きをどんどんまとめていくと。最初は全部違う動きだってことで切っていきますが、だんだん似ているのをまとめていくと最後は2種類ぐらいになって、細まる動きと開く動きぐらいになります。実際に得られた表情はこんな形なのですが、これが各部位ですね。
川嶋 宏彰 スライド
川嶋
この縦軸、それぞれ違う動きに色が付いているのですが、それぞれまとめた動きを12個ぐらいにしたときに再生してみると、これが再生された生成された動きですね。(生成された表情の動画を再生する。)CGの顔になります。そうすると瞬きとかは残っているのですが、わりかし自然なのかな。こっちは最終的に2個にしています。(もうひとつの動画を再生する。)各部位2個ぐらいにしてしまうと、瞬きも消えてしまって、かなりロボット的な感じになっていますけど、まあこういう動きになってくると。
で、こういう生成ができそうだ、じゃあ認識に使えるのでしょうかという話になります。要は、意図的な笑顔と自発的な笑顔。こういった笑顔がそもそもコンピューターで判別できるのか。実際にデータをとってやってみました。結構データ取るのは大変で、意図的な笑いの方は「作り笑いをしてください」でいいのですが、自発的な笑いは最初の方は冗談を言い合ってがんばって笑わせていたのですが、ちょっと限界を感じまして漫才の映像を見てもらう形にしました。そういう形で、6人ぐらいの実験参加者でやっていただきました。私の場合を見てみると、意図的な場合は全部のパーツが同期しやすい。笑うときなぜか、下の方、口の方からだんだん動きが始まるということもあって、動き出しのずれ方をうまく縦軸横軸にとると、意図的な笑いと自発的な笑いがそれぞれ分離できるということですね。これはもしかするといけるのかもしれないと思いましていろんな実験参加者でやったのですが、人によってどこの特徴点を見ればいいのかというのが、かなり違います。それぞれの人で、例えば笑い出し、笑っている、笑い終わり、それぞれの持続長とかずれでどの特徴点が最も意図的・自発的表情を分離するのに有効なのだろうか。
川嶋 宏彰 スライド
川嶋
有効な特徴2個を取り出してやると、だいたいこんな形になります。6人分です。青い方が自発的な笑い、これ1個1個笑っているのですごい回数笑っています。赤い×印が笑いですね。意図的な方は自発的な方と比べてかなりずれ方とか長さとかが分布としてかなり狭いですね。毎回同じような笑い方をしています。自発的な方は広がっています。ただ、かなり動き出しのずれとか動き終わりのずれとかを特徴点として使うとよさそうだと。人によっては持続長が大事とかあるのですが。これで最後認識してみると大体8割から100%ぐらいの確率が出ます。実はこういう単純な特徴なのですが、タイミングを見るだけでも実は人の表情認識ができる。こういったタイミングを使うような情報ってあまりこれまで注目されていなかったのですが、こういう情報をうまく使ってもっと詳細な、表情だけじゃない人の「間」の取り方とか、そういったものが認識できないか、そういうことを考えています。
最後に、コンピューターの顔認識がどこに向かっているのか。私自身、とことん顔認識の専門家ではないのですが、検出とか特徴点認識とかこのあたりの技術が今かなり実用的なレベルになっていると感じています。基本感情の認識もかなり進んできているのですが、やっぱりこれではちょっと限界があって、普段現れる表情の認識ということになると、感情プラス意図ですね。意図でオーバーライトしているとか。あとは文脈の中の表情、例えばこれ(赤ちゃんの笑っている画像)だとハピネス度が高いということで、これは笑っているかということになりますが、実はこれは恥ずかしがっているかもしれない。だから文脈の中で見ないとわからないわけです。個人差もあります。付き合いが長ければいい。機械の学習でいうと学習量がもっともっとあればいいということです。それと顔だけでは難しいですよね。頭の動かし方とか傾きもかなり情報を持っていますし、しゃべり方のイントネーションとかもあります。こういったところを使ってかなきゃいけないと。あと面白いのは、頭部の動き方ですね。商用の認識ソフトで、同じ表情だけど頭の傾きだけを変えるとなぜか認識ソフトは喜びの値が変わるとかいうことも見えて、どうやってこの辺と分離しているのか。もしくはこれも含めて認識するべきなのかと色々考えたりしています。
あと、本質的な難しさとしてはやっぱり最終的には人の内面、内部の状態というのはわからないところがあるので、どうやって対応をとっていくのかということは、最後までなかなか難しいのかなと考えています。はい。以上になります。コンピューターによる表情の見方ということで紹介させていただきました。どうもありがとうございます。