blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2022.10.18 インターンレポート

画像生成技術によるモバゲーアバターのアイテム制作における発想支援

by Takato Yoshikawa

#mobage #ai #image-generation #design-idea-support #deep-learning #computer-vision #internship

はじめに

AIスペシャリストコースのサマーインターンに4週間参加させていただいた吉川です。大学では深層学習を用いた画像生成・編集について研究をしています。 この記事では私がインターン中に取り組んだ内容についてご紹介します。

※今回利用したコードおよび生成したアウトプットは技術評価のためにのみ使用し、サービスには利用いたしません。

テーマ概要

モバゲーでは、ユーザーが自分のアバターの着せ替えを楽しむサービスを提供しています。アバターアイテムの大まかな制作フローの一例は以下のようになっています。

  1. アイテムテーマ等の企画
  2. 参考画像やテキスト、過去のアイテム等で製作仕様書を作成
  3. アバターアイテム作成

ここで、AIを使って手軽にアバターアイテムを生成・編集できるようになれば、製作仕様書でより具体的な参考画像を用意できたり、デザインの発想を支援できるようになります。 今回のインターンではStyleGANをベースにこの課題に取り組みました。

(実際にはStyleGANの改良版であるStyleGAN2-ADA1を使用していますが、本記事ではStyleGANと表記します。)

StyleGANをベースとしたアバターの生成

StyleGANはGAN(Generative Adversarial Network)の一種で、教師なし学習で高品質画像を生成できます。 また、StyleGANは生成する画像をコントロールすることが比較的簡単であることから、様々な応用手法が提案されています。 これらの手法を用いながら、デザインの発想支援となるような画像生成・編集を実現するために、以下の実験を行いました。

StyleGANによるアバター生成

新規アバター画像の生成

今回学習に用いた画像はすべて同じポーズのアバターの正面の画像で、全部で24,262枚です。 この画像を用いてStyleGANを学習させることで、学習データに存在しないアバターの画像をランダムに生成できるようになります。

以下の画像が実際にランダムに生成した画像です。

ALT

StyleGANによってランダムに生成した画像。

どうでしょうか。ぱっと見ただけでは本物と区別がつかないほどのクオリティの画像が生成できているかと思います。 また、フードをかぶっていたりドレスっぽいアイテムを着ているものもあれば、シンプルなアイテムを着ているものもあり、多種多様なアバターが生成できていることが見てとれます。

StyleMixing

StyleGANではStyleMixingという操作を行うことで、2つの画像の要素をミックスさせたような画像を作ることができます。 下の画像では、上から1行目のアイテム形状と左から1列目のアイテムの色をミックスさせたアバターを行列で並べています。

ALT

StyleMixingによって生成した画像。

この技術を用いることで、アイテムの色違いのバリエーションを簡単に作れたり、同じ配色で様々な形状のアイテムを作ることができます。

Latent Factorizationによるアバター編集

StyleGANを学習させて、実際には存在しない様々なアバターを生成することで、デザインの発想をサポートすることができるようになりました。 ここで、より柔軟な生成画像のコントロールを行うために、Latent Factorizationという技術を用いました。 Latent Factorizationとは、人にとって意味のある変化を生成画像に反映させることができる技術です。 今回は、Latent Factorizationの代表的な手法の一つであるSeFa2という手法を用いて実験しました。以下はSeFaによるデモです。

ALT

SeFaによるLatent Factorizationによるデモ。動画は見やすさを優先し倍速で再生しています。

左側のSemanticの値を操作することで、右の画像が何かしらの意味(例:性別、丈の長さなど)に従って変化していきます。 上の例ではSemantic003を動かしていますが、プラスに行くほどレディースアイテムっぽくなり、マイナスに行くほどメンズアイテムっぽくなります。 また、StyleGANの推論は高速であるためリアルタイムで結果を確認しながら操作できていることがわかると思います。

ただし、SeFaでは教師なしでこの意味を探すため、それぞれのSemanticが何を表しているのかは実際に動かしてみないとわかりません。 以下にSemantic002とSemantic006の例を示します。

ALT

Semantic002:スカートやジャケットの丈の長さ。

ALT

Semantic006:肌の露出度。

上記のようにいくつかの画像で試すことで意味を解釈することができます。 他にも様々なSemanticがあり、また複数のSemanticを同時に動かしたときに新たな意味を発見できる可能性があります。

ラフスケッチからのアバター生成

前節で紹介したように、SeFaによって生成画像のより柔軟なコントロールが可能になりました。 意味によるコントロールが可能となりましたが、さらに直感的な操作を可能とするために、ラフスケッチからアバター画像を生成できるようにしました。

ALT

ラフスケッチからアバター画像を生成。

Pixel2Style2Pixel(pSp)3という手法では、学習済みStyleGANをデコーダとして固定し、エンコーダを学習させることで、画像対画像変換を実現できます。 今回はDeepFaceEditing4という手法で使われている線画抽出の方法を用いて、アバターの正面画像の線画を作成します。 線画抽出は様々な方法がありますが、比較的手描きによるスケッチに見た目が近いものを選びました。 以下がpSpを用いて、ラフスケッチからアバター画像を生成するデモです。

ALT

ラフスケッチからアバター画像を生成するデモ。長袖→スカート→大きめのスカートを描き足し。動画は見やすさを優先し倍速で再生しています。

トラックパッドで適当に線を引いているので大分雑な線ですが、その線を汲み取ってアバターの画像が変化しているのがわかると思います。 また、StyleGANの高速な推論のおかげで、線を追加した部分がリアルタイムにアバターの画像に反映されています。

上記のデモではアバターアイテムの形状のみをスケッチでコントロールできており、色は変更されていません。 色と形状を分離したコントロールが可能であるため、以下のように色だけ変更することも可能です。

ALT

ラフスケッチから生成したアバター画像の色だけを変更するデモ。動画は見やすさを優先し倍速で再生しています。

以上のように、pSpを用いたラフスケッチからのアバター生成により、より直感的な生成画像の操作が可能となりました。 これによってデザインを考える際に、「このアバターアイテムを長袖にしたらどう見えるのか」や 「パンツ、ミニスカート、ロングスカートの場合をそれぞれみたい」といったことをすぐに試して結果を見ることができるようになります。

まとめと今後の展望

本記事では、モバゲーアバターのアイテム制作における発想支援という課題に対して、いくつかのアプローチの結果をデモとともに紹介しました。 高速な推論が可能なStyleGANをベースとしたことで、リアルタイムで生成画像をコントロールすることができました。 また、今回紹介した方法でアバター画像の生成や操作をする際に、デザインの知識や専門的な知識を必要としないため、非デザイナーの方でも簡単にアバター画像が作れるようになります。

今後の展望を、今回紹介したアプローチを実際に発想支援として用いる際に起こりうる問題とともに考えてみました。

今回はStyleGANを使ってアバター画像を生成していますが、どんなアバターでも生成できるわけではありません。 例えば、帽子を被ったアバターをスケッチで描いて生成しようとしても、欲しい結果は得られない可能性が高いです。この原因は大きく分けて以下の2つが考えられます。

  1. GANの生成結果の多様性が低くなってしまうという欠点
  2. 生成したい画像が学習データの分布から外れている

1. GANの生成結果の多様性が低くなってしまうという欠点

これは、GANの生成モデル全体で言われている課題です。 今回のアバター画像だと、ドレスや浴衣っぽいアイテムは高品質な画像が生成されやすい一方で、頭にアイテムを被っているアバター画像は生成されづらい(生成されても低品質)です。 これを解決するためには、GAN以外の手法を用いるのが一つの方法です。 Diffusion Model5では、高品質で多様な画像の生成が実現できると言われています。 このようなモデルを使用することは一つの選択肢ですが、Diffusion Modelは推論時間がGANのモデルよりも遥かに遅いです。 基本的には、品質、多様性、推論時間がトレードオフの関係となっているため、実際に使う人の要望に合わせて選択することが重要だと思います。

2. 生成したい画像が学習データの分布から外れている

今回は既存のアバター画像のみを使ってStyleGANを学習させました。 そのため、既存のアバター画像と同一ではないけれど似通った画像が生成されます。 そもそも学習データの分布から外れた画像はどんなモデルを使っても生成できません。 しかし発想支援という観点で考えると、今までにはなかったアバター画像を生成できたほうがメリットがあるように思います。 これを実現するためには、学習データ以外の参照画像の情報を取り入れたり、 大規模なデータセットで学習したモデルのファインチューニングによって、他の情報を取り入れるなどの方法が考えられます。

インターンの感想

今回、AIスペシャリストコースのサマーインターンに参加させていただき、多くの貴重な経験を積むことができました。 タスクに取り組むにあたって、実験してみたというだけにとどまらず、実際に使うとなった場合に生じる問題とそれを解決する方法について考えながら進めることができました。 これはメンターの社員の方々と議論できる場を設けてくださり、気軽に質問や議論ができる雰囲気を作ってくださったおかげです。 また、タスクに関するサポートが手厚いだけでなく、ランチ会や雑談会などの場を設けていただき、社内の雰囲気を感じることもできました。 様々な分野で働く社員の方々とお話ができ、今後自分がどのような仕事をしたいかを具体的に考える良い機会になりました。 今回はフルリモートでのインターンであり、最初は不安もありましたが、社員の方々のサポートのおかげで充実した4週間を過ごすことができました。4週間、お世話になりました。


  1. https://github.com/NVlabs/stylegan2-ada-pytorch  ↩︎

  2. https://github.com/genforce/sefa  ↩︎

  3. https://github.com/eladrich/pixel2style2pixel  ↩︎

  4. https://github.com/IGLICT/DeepFaceEditing-Jittor  ↩︎

  5. Jonathan Ho, et al. 2020, “Denoising Diffusion Probabilistic Models” https://arxiv.org/abs/2006.11239  ↩︎

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。