マスクのせいで顔がとにかく分からない
コロナ禍で、マスクはもはや必需品となった。新しい生活様式というやつだ。
当たり前だが、マスクをすると顔の下半分が隠れてしまう。もともとマスク(=mask)には「仮面」という意味や「隠す」という意味がある。マスクで顔が隠れるのは自然なことだ。
何が言いたいかというと、感染予防のためにマスクをつける「新しい生活様式」では、人々はマスクという仮面をつけたままコミュニケーションをとるということだ。
仮面は顔を隠すだけでなく心も隠す。これではコミュニケーションが取りづらい。これは非常に大きな問題である。
マスクの下に隠れた部分をAIで補完する
そこで、マスクの下に隠れた部分をAIで補完するツール「人類マスク補完ツール」を作った。まずは見てください。
どうだ!すごくないですか?
AIを使って何の役にも立たないツールができた!やった~。
みんなの顔を補完する ~人類マスク補完計画~
編集部におじゃまし、編集部やライターの方々のマスク姿もAIで補完することにした。
パリッコさん「自分の肌と言われても違和感ないですよ」
思ったよりうまくいっている。すごいぞAI!うまく当てはまっても本人とはちがう顔になるところが面白い。
ナミノリさん「赤ちゃん系ですね」
AIが「幼い」と判定したのかもしれない。でもあまり違和感がない。いい感じだ。
石川さんは、マスクだけでなく首や肩もクロマキーが反応してしまった。しかし、輪郭がものすごく当てはまっている。AIの「しっくりくる度」のスコアも見たことのない高さを示していた。メガネも違和感が全くない。すごい。
ここまで、女性には女性っぽい画像が当てはまったし、男性には男性っぽい画像が当てはまった。安藤さんを除いては輪郭もだいたい合っていて、違和感がなかった。思ったよりうまく行ったなぁ。
どうやって作ったか
ここからはおまけ。どうやってこのツールを作ったかを簡単に紹介する。さっきからAI、AIといっているが、先に謝っておくとそんなにAIっぽくないです。単純な画像処理と、ニューラルネットワークと呼ばれる機械学習のモデルで実現している。
マスクの白色でクロマキー
クロマキーでは緑や青を切り抜くことが一般的だが、今回は(マスクの色である)白を切り抜くように設定している。なお、黒マスクの場合は、切り抜き対象が黒となるようプログラムを書き換えればよい。
ちなみに、クロマキーの仕組みを実装するためには「画像の特定の部分にだけ処理をする」という処理が必要となり、そのことをマスク処理と呼ぶ。マスクの部分を切り抜くためにマスク処理をするのだ。これはダジャレだ!そもそもこの企画はこのダジャレを言いたいがために始めたのであった。
大量の顔写真に当てはめる
マスクの切り抜きができたら、今度は1,000枚の顔写真に当てはめる。顔写真のデータセットはここから取得した。ほとんどの写真が正面を向いており、また、多様な肌の色・表情を含んでいるので、使いやすい。
ちなみに、当てはめた顔写真の肌の色は、マスク着用者の肌の色にできるだけ合うように、補正している。筆者は、肌の色での偏見や差別は絶対にあってはならないと心から思っている。しかし、だからこそ、多様な肌の色をデータセットに含めているし、うまく扱うことが重要だと思う。
しっくりくる画像を選ぶ
1,000枚の当てはめた画像の中には、しっくりくるものもあれば、そうでないものもある。
1,000枚の中から、「最もしっくりくる画像」を選ぶ。しかし、「しっくりくる」の基準をプログラムで書くのは難しい。そこで機械学習を用いる。コンピュータに事前に大量のデータを学習させることで、細かいルールを伝えなくても自動的に処理してくれるというやつだ。機械学習は、今回のような漠然とした問題を解くのに向いている。
1,000枚の当てはめた画像の1枚1枚に対して「しっくりくる度」のスコアを機械学習で算出する。
ちなみに、学習用の0点の画像1,000枚と、100点の画像1,000枚と、当てはめ用の画像1,000枚は、全部異なる画像を用いている。元のデータセットには70,000枚もの画像が含まれているので、じゃぶじゃぶ使っていく。
最終的に、ツールではスコア最大の画像を表示する。また、スコア上位10の画像をフォルダ「top10」にコピーする。これにより、候補の10枚の画像の中から、あとからお気に入りを選べるというわけだ。
ちなみに、1,000枚の当てはめた画像に対して、スコア上位10の画像と、スコア下位10の画像を並べるとこうなる。
主観だが、全体を比べるとある程度うまく判定できている気がする。ただし、スコア上位10の左上の画像は若干横を向いているのでそこまでしっくりこない。(鼻だけは完璧にぴったりはまっている!) 一方、スコア下位10の右上の画像はけっこうきれいにはまっており、スコア下位なのにしっくりくる。まだまだAIの判定と人間の主観の間にズレがある。学習のさせ方には改善の余地がありそうだ。
もっとうまくやる余地はある
思ったよりうまくできたし、うまくできないときもそれはそれで面白かった。でも、もうちょっとうまくやる余地はある。
まず、今回は撮影される人が頑張って顔の位置をうまく調整する必要があるが、顔認識を使えば本来は自動で調整できる。ただ、マスクをした状態での顔認識はけっこう難しい。顔認識には鼻や口などの特徴も利用しているので、マスクで隠されてしまうと認識できないのだ。今回はあきらめたが、調べてみると、マスク検出データセットというものがあるので、これを使えばできるかもしれない。
あと、今回は単純にクロマキーで合成していたが、ちゃんとしたAIを使えばもっと自然に合成できるはずだ。今回はそこまでの気力がなかったので、今度試します。