ソフトウェア

リアルタイムで性別変換してしまう話題のカメラフィルターのすごさをAI研究者が分析


男性が自分の顔をカメラで写すと瞬間的に顔が女性に変化し、顔の向きを変えたり表情を変えるとリアルタイムでその変化が「女性の表情」として表現される……といったことが可能な性別交換フィルターを写真共有アプリのSnapchatがリリースしました。もちろん女性から男性への変換も可能で、あまりの精度の高さゆえ、フィルター目的で新たにSnapchatをインストールする人が続出するほどの機能となっており、AIを開発するGoogle Brainチームのエリック・チャンさんがこのフィルターのすごさについて分析しています。

Eric Jang: Fun with Snapchat's Gender Swapping Filter
https://blog.evjang.com/2019/05/fun-with-snapchats-gender-swapping.html

Snapchatがリリースした「性別交換フィルター」がどんなものなのかは以下から確認可能。カメラが男性の顔を認識すると、瞬間的に女性の顔に変換されます。しかも顔の動きや表現はリアルタイムに女性に変換されていくので、もはや女性を撮影しているとしか思えません。


フィルターを利用して1人デュエットを実現させる人もいました。


チャンさんは自身のブログで「機械学習アルゴリズムを使ったことがある人が見れば、この機能は魔法のように強力です」と述べています。

一体どういう仕組みなのだ?ということで、チャンさんは実際にアプリをダウンロードして性別交換フィルターには何ができて何ができないのかを実際に確かめてみたとのこと。まず、以下の3枚の写真のうち中央が無加工のチャンさんで、左側が「男性フィルター」、右側が「女性フィルター」を追加したもの。


フィルターの特徴の1つがインターネット接続なしでリアルタイムで性別交換をやってのけるということ。帽子を脱ぐときの髪の表現まで自然です。クリックするとGIFアニメーションで帽子を脱ぐ瞬間を見ることが可能。帽子に手をかけて…………


後ろ方向に帽子をずらしていくと、それに合わせて髪の毛がふわっとした動きつきで現れます。


顔の向きを変えると、性別が戻る瞬間があることから、顔の向きは許容される範囲があることがわかります。ブール型変数の条件が満たされた時にフィルターが適用されるようです。


場所の明るさ・暗さを問わずにフィルターは適用されますが、髪のかげは本人の体に落ちません。


ただし、髪は光源の影響を受けます。以下の写真を見ると左側の髪がしっかりと光を反射していることがわかります。フィルターが光源を反映するため、性別交換後の様子も非常に自然に見えるわけです。


ではどうしたらフィルターが失敗するのかというと、まずカメラと顔の前に障害物が入るのはアウト。右から左に障害物を動かすと……


障害物が顔の半分近くを覆った瞬間に女性の顔が男性へと変化します。


上から下へと障害物を動かしている様子が以下。性別交換フィルターは「顔の重要な特徴が遮られたか」ではなく「顔のどのくらいの割合が遮られたか」によって適用されるかどうかが変わります。これが障害物に遮られる前。


遮っていくとこんな感じに変化していきます。興味深いのは、アプリが「顔を交換すべきか」という問いに「偽」と判断する直前、障害物が半透明になり、髪が金髪っぽく変化すること。「これはアプリが訓練した統計データのアーチファクトが反映されたもの」「金髪の人はメイクアップのチュートリアルを作成しがちということだろうか?」とチャンさんは述べています。


頬を黒いマスクで覆ってもフィルターは安定して作動しますが、マスクの部分は肌の色に変換されません。また、髪の毛が唐突&直線的にカットされていることから、フィルターの範囲が顔を追跡する長方形の領域に限られていることがわかります。


ただし顔の大部分をマスクで覆ってしまうとマスクは正常に作動しなくなります。目や口周りの肌色に露出する丸い部分が「顔」だと認識されているようで、その周囲に髪を生やそうとしています。


マスクを剥がして顔の半分以上が露出すると安定して動作するようになりました。


チャンさんが最も感銘を受けたことの1つが髪の毛のリアルさ。チャンさんの分析によると髪はPhotoshopのようなレイヤーとしてレンダリングされていますが、猫耳などを写真に追加するレイヤーとは異なりアルファチャンネルが部分的に透明になっているとのこと。髪に手をかざすと一部が手の下に、一部が手の上に現れることからレイヤーが明確なセグメンテーションを持っていることがわかります。性別交換フィルターは髪の処理のために、2Dアルファマスクを駆使してヘッドトラッキングを実行し、ユーザーの頭の位置を特定して髪を表現しているとみられます。


このフィルターはSnapchatがこれまで収集してきた何十億というデータを利用したものであり、「機械学習アルゴリズム『CycleGAN』を使っているのではないか?」というのがチャンさんの印象です。CycleGANはGANでスタイル変換する手法の1つで、形状や位置がバラバラな画像からでも学習して変換が可能になります。チャンさんは、ペアになっていないオブジェクトをグラウンド・トゥルースでペアにした限定的なデータセットを用いることで、CycleGANは正則化しているとみています。

また、顔と髪は別々のレイヤーで合成されており、「アルファチャンネルでGANが利用されているのを見たのはこれが初めてだ」とチャンさん。髪が全てGANで生成されているかどうかは微妙なところだそうですが、ハイライトの変化や障害物によって髪色が変わるところは、データから学習していることを示しているそうです。一方で、髪の表現が非常に安定しているがために完全にGANで生成されているかどうかには疑いがあるとしています。東南アジアの男性の顔が東アジア系の女性のヘアスタイルに代わるアプリは少なく、ここから大量のヘアスタイルのライブラリがあることも推測できるとのことです。

この記事のタイトルとURLをコピーする

・関連記事
架空のアイドルを自動生成しまくる「アイドル生成AI」が誕生、どこかで見たことがあるようなないような顔が生成されまくり - GIGAZINE

カスタマーサポートの写真を「女性」「男性」「ブロンド美女」「猫のキャラクター」に変更すると、何が起こるのかという記録 - GIGAZINE

写真共有SNS「Snapchat」のソースコードがGitHubに流出 - GIGAZINE

落書きをリアルな風景写真にリアルタイムで変換できる驚異的なお絵かき技術「GauGAN」をNVIDIAが発表 - GIGAZINE

人気声優の声にリアルタイムで変換してくれるボイスチェンジャーアプリ「リアチェンvoice~ジュラ紀版」レビュー - GIGAZINE

in ソフトウェア, Posted by logq_fa

You can read the machine translated English article here.