blog

GAN(敵対的生成ネットワーク)について説明します!

皆さん、「AI」という単語を耳にすることが最近増えてきたのではないかと思います。しかし、その仕組みについて知りたいと感じても、「私には難しそう…」と敬遠してしまっている方も多いのではないでしょうか?

ここでは、AIのネットワークであるGANについて、説明していきたいと思います!

GANとは

GANとは、Generative Adversarial Network(敵対的生成ネットワーク)と呼ばれるAIの一種です。
GANはデータから特徴を学習することで、実在しないデータを生成したり、存在するデータの特徴に沿って変換できます。

GANのネットワーク構造は、Generator(生成ネットワーク)とDiscriminator(識別ネットワーク)の2つのネットワークから構成されており、互いに競い合わせることで精度を高めていきます。

例えるならば、「偽物を作り出す悪人(Generator)」と「本物かどうか見破る鑑定士(Discriminator)」のような役割をネットワーク内に組み込み、競争させるような形で学習させます。(そのため「敵対的」と言われます)

一番の特徴は、教師なし(データのラベリングが不要)で学習が可能になることです。
従来の深層学習(ディープラーニング)では、データのラベリングが必須でしたが、GANではその必要がなくなります。

一方、ラベリングが無いことによって学習が不安定になるので、学習を安定させる工夫を施したGANも存在します。(GANの種類にて解説)

GANで何が出来るのか

GANの研究は日々進歩しており、様々な場面で使われています。実際GANを使って何が出来るのかの一例をご紹介します。

◆高品質の画像を作る

GANを使うことで、品質の低い画像から高品質の画像を作ることが出来ます。ピンボケした写真や昔の写真の解像度を上げるなどといった活用法があります。

また、複数の顔の画像を取り入れることで、実際には存在しない人の画像を作ることも出来ます。(例PGGAN)

Forensics Faces PG-GAN with high quality and image size 1024x1024 | Download Scientific Diagram

◆文章から画像を起こす

絵の特徴を書いた文章から画像を生成することが出来ます。音声による画像の修正というように、様々な場面での活用が期待されています。(例StackGAN)


◆画像を別の画像に仕上げる

1つの画像から雰囲気の異なる別の画像を作ることが出来ます。ただの風景の画像からイラスト風の画像に変換したり、印象派の作品のようなテイストの画像に変換したりすることが出来ます。(例CycleGAN)

CycleGAN

◆動画を別の動画に仕上げる

近年フェイクニュース等で話題になっている技術ディープフェイクにもGANが使われています。ある人の動画に別の人の顔を載せたり、別人の2人の動きをシンクロさせたりすることが出来ます。
詳細を別記事で解説していますので、是非こちらもご覧ください。
>> ディープフェイクとは?実例を含めてわかりやすく解説!

GANの種類

GANは画期的な技術ですが、オリジナルGANは動作が不安定になりやすいといった欠点があります。そのためそれらを解決するために様々な種類のGANが開発されています。

以下図内での略称

G:Generator D:Discriminator z:ノイズベクトル y:条件ベクトル 

G(z):Generatorが生成した偽のデータ

pix2pix

条件画像と画像のペアから画像同士の関係を学習することで、1枚の画像から学習したペアの画像関係を補完した画像を生成することが出来ます。またpix2pix は汎用性の高い画像生成アルゴリズムであり,問題ごとにネットワークを設計する必要がないというのも特徴です。

論文:https://arxiv.org/pdf/1611.07004.pdf

◆pix2pixの特徴

航空写真から地図の作成,白黒画像からカラー画像の生成,昼の風景から夜の風景の生成など多種多様な画像生成に用いられています。主に地理情報分野における活用が期待されており、地図から衛星画像へ、衛星画像から地図への変換においても実施事例として紹介されています。土地利用や地すべりなどの予測に用いられた事例もあり、今後土地の有効活用や災害などの予測などで活躍することが期待されます。

◆ネットワーク構造

Pix2Pix:CGANによる画像変換 | NegativeMindException

https://blog.negativemind.com/2019/12/29/pix2pix-image-to-image-translation-with-conditional-adversarial-networks/

◆生成画像

img

CycleGAN

2組の画像を使い、一方の画像から他方の画像を生成し、他方の画像から一方の画像に戻した時に(サイクルした時に)精度が高くなるように学習させます。訓練データとしてそれぞれがアンペアな二つの画像群を与え、ウマ →→ シマウマ、景観写真 →→ モネの絵画というような写像を学習し、一方からもう一方へ自動的に変換が行えるようにしました。

論文:https://arxiv.org/pdf/1703.10593.pdf

◆CycleGANの特徴

画像から画像への変換をすることが出来ます。またpix2pixと異なる点は、pix2pixは(下図(b)部分)しか行わないのに対し、画像を元に戻す作業(下図(c)部分)も行っていることによって、両方向の変換作業が行えるという点です。これによって、pix2pixは輪郭がピッタリ合っているようなペア画像のみ変換可能なのに対して、CycleGANは厳密なペアでなくても、柔軟に変換可能です。さらに両方向の変換を学習させたい時はCycleGANを使うことでpix2pixの半分程度の時間で学習させることが出来ます。

◆ネットワーク構造

論文メモ

◆生成画像

生成画像img

CGAN (Conditional GAN)

条件付きGANと呼ばれ、生成器と識別機に画像データに加えて追加の情報を与えることで、条件付けができるように訓練を行うGANの事を指します。

論文:https://arxiv.org/pdf/1411.1784.pdf

◆CGANの特徴

通常のGANとは異なり、指定した条件にマッチした画像を生成することが出来ます。例えば、0~9の数字を生成するように学習すると、「数字の3を生成」といったように生成させたい画像を指定できるわけです。

◆ネットワーク構造

https://blog.negativemind.com/wp-content/uploads/2019/10/cgan_architecture.jpg

◆生成画像

mnist数字データ

DCGAN (Deep Convolutional GAN)

GANに比べて高解像度であり、学習も安定化されました。シンプルな画像を生成することが出来ます。GANではぼやけていた画像を自然な形で生成することが出来ます。DCGANはこれまであまり注意の向けられていなかった教師なし学習にCNNを用いて取り組む有力な候補であり、新しいタスクに対して学習した特徴量を適用し、画像の汎用的な表現として応用性を示します。

論文:https://arxiv.org/pdf/1511.06434.pdf

◆DCGANの特徴

DCGANは広い意味でCGANの一種であり、オリジナルGANとの大きな違いは、generatorとDiscriminatorそれぞれのネットワークに全結合層ではなく、畳み込み層と転置畳み込み層を使用している点です。畳み込み層と転置畳み込み層について以下で説明します。

畳み込みとは、2つの情報源が組み合わさった系統的な手法で、ある関数を別のものに変える操作です。一般的に、畳み込みは画像をぼかしたり鮮明にしたりする効果を得るために画像処理です。

逆畳み込みとは、畳み込みの逆プロセスではなく、入力データを拡大するためにデータを補完してから畳み込みを行うことです。

◆ネットワーク構造

DCGANのネットワーク構造

◆生成画像

DCGANの生成画像

PGGAN (Progressive Growing GAN)

PGGANもDCGAN同様に畳み込み層、転置畳み込み層を使っており、段階的な学習によってDCGANより高解像度の画像を生成することができるようになりました。GANは生成する分布(画像など)の解像度が高くなるに連れてランダム要素の影響が色濃くなり、DiscriminatorはGeneratorの生成分布と教師データを区別することが容易になってしまい、ネットワーク全体の学習が不安定になります。 このように、GANは高解像度の画像を出力することが難しいという問題があります。そこでPGGANは段階的にネットワーク層を増加させ、高解像度を実現しています。

論文:https://arxiv.org/pdf/1710.10196.pdf

◆PGGANの特徴

PGGANとDCGANの大きく違う点は、以下の図のように、段階的に学習データの解像度を上げて行き、これに合わせてGeneratorとDiscriminatorのネットワークもその対象構造を保ったまま層を追加して解像度を上げて行くことです。これにより、1024×1024解像度まで生成することができるようになりました。

◆ネットワーク構造

PGGAN:段階的に解像度を上げて学習を進めるGAN | NegativeMindException

◆生成画像

BigGAN

PGGAN同様、BigGANも高解像度の画像を生成することが出来ます。GANは一般的に学習が不安定であり、高品質な画像出力が難しかったのですが、BigGANはネットワークを大規模化することでそれを可能にしました。

論文:https://arxiv.org/pdf/1809.11096.pdf

◆BigGANの特徴

BigGANは最大の512×512ピクセルの高解像度画像を条件付きで生成するモデルで1000カテゴリーの画像を生成することが出来ます。またBigGANははジェネレータに直行正規化を用いており、これによりInceptionスコアが大幅に改善した。

Inceptionスコア:識別ネットワークの識別容易性と生成画像の多様性というふたつの観点を考慮した指標で、値が高ければ高品質であることを意味するもの。

直行正規化:過学習によるモデルの性能劣化を防止する正則化の手法のひとつ。BigGANでは直交正則化のほかにも、CNNの学習効率を上げる手法のひとつであるSkip connectionが使われている。

◆ネットワーク構造

◆生成画像

StyleGAN

PGGAN同様に、段階的に解像度を上げていく手法を採用することで、本物と区別がつかないような画像を生成することが出来ます。StyleGanは,高レベルな属性(例:人の顔で訓練されたときのポーズ,アイデンティティなど)を教師なしで分離し, 生成画像に確率的な変動(例、そばかす,髪など)を含めることを可能にしました. これにより,スケールに応じた直感的な画像生成の制御を可能にしました。また学習したデータの特徴を元に実在しないデータを生成したり、データを変換することができ、『写真が証拠になる時代が終わる』なんてことが起こるかもしれません。

論文:https://arxiv.org/pdf/1812.04948.pdf

◆StyleGANの特徴

StyleGANはMapping networkとSynthesis networkの2つのネットワークで構成されています。またStyleGANでは高解像度な画像を生成するためにprogressive growing[6]というアプローチをとっています。progressive growingとは、GANの学習過程において、低解像度の学習から初めて、モデルに徐々に高い解像度に対応した層を加えながら学習を進めることで高解像度画像の生成を可能にするというものです。例えば初めに4×4の学習から始め、次に8×8の層を追加というように学習を進めていくことで最終的に1024×1024の画像を生成しています。

◆ネットワーク構造

左の図がこれまでのGAN(PG-GAN)、右の図がStyleGANです。

StyleGANでは以下のように本物と区別がつかないような画像を生成することが出来ます。

◆生成画像

AGE-cGAN

年齢別で高品質な顔画像を生成できる技術です。

論文:https://arxiv.org/pdf/1702.01983.pdf

◆AGE-cGAN特徴

顔の属性を変更するためにGANを採用した従来の研究とは異なり、元の人物のアイデンティティをエイジングされたバージョンの顔で維持することに特に重点を置いています。これを用いると、自身の顔の画像を若返らせたり、老いさせたりすることが出来ます。齢を横断する顔認識、迷子の捜索、そしてエンターテインメントを含む様々な産業で活用事例があります。スマホのカメラアプリなどでも最近はよく見かけますね!

AGE-cGANネットワーク構造

◆ネットワーク構造

◆生成画像

AGE-cGAN生成画像

StackGAN

文章から画像を生成することが出来ます。文章から画像を生成するネットワークと生成された画像を高精度にするネットワークの2つのGANで構成されています。字の意味を反映した大まかな画像を生成することには成功していましたが、詳細な部分の表現や物体の要素については表現できない問題がありました。しかし、StackGANを用いることで画像の精度を向上させることが出来ました。

論文:https://arxiv.org/pdf/1612.03242.pd

◆StackGANの特徴

GANを多段構成にすることによって、最初のステージのGANで大枠をとらえた低解像度な画像を生成し、以降のステージのGANでより高解像度な画像を生成することで画像の精度を向上させています。

Fig.13 StackGANの構造
img

◆ネットワーク構造

◆入力文字と生成画像

AttnGAN

StackGAN同様、AttnGANも文章から画像を生成することが出来ます。StackGANとの違いは、より細部までの詳細な表現力を持つtext-to-image生成モデルの実現したことです。自然言語から画像を自動生成することは、多くの芸術や設計におけるコンピュータ支援の分野での大きな課題となっており、 近年ではtext-to-imageにGANを用いた生成モデルが活発に研究されています。 text-to-imageには文章全体をベクトルに変換し、そのベクトルを使用して画像を生成するものが一般的です。このような手法では表現力豊かな画像を得ることができる一方で、入力となる文全体のベクトルからは単語レベルの細かい粒度の情報が抜け落ち、詳細な画像の生成は未だ難しいのが現状の中、AtnnGANがこの課題解決の一助となっています。

論文:https://arxiv.org/pdf/1711.10485.pdf

◆AtnnGANの特徴

AttnGANは、新しい生成ネットワークを使用して、画像のキャプションのようなテキストによる描写の個々の単語に注意を払うことにより、画像のさまざまなサブ領域で詳細を合成できます。その結果従来のテキストから画像を描く技術と比較して画質がほぼ3倍に向上しました。AttnGANの生成する画像はまだ不完全ではありますが、将来的には画家やインテリアデザイナーのアシスタント、音声による写真修正、さらには脚本から直接アニメ映画を作ることも可能になるかもしれません。

Microsoft、テキストから画像を描く人工知能「AttnGAN」で見事な小鳥の絵 - ITmedia NEWS

◆ネットワーク構造

◆生成画像

gan 1

弊社のサンプル

弊社では、GANを用いて、人の画像から顔の輪郭を捉えた線画を生成することに成功しています。

顔の輪郭抽出にかけるための人の顔のサンプル画像
GANで抽出された人の顔の輪郭の画像

以下の顔画像から、

GANは下のような顔輪郭画像を生成できます。

まとめ

ここまで、GANとは何か?から、どのなことができるのか、そして様々な種類のGANを紹介してきました。ある程度GANについて掴めたことと思います。GANはさまざまな種類があり、様々な用途で利用することができるのです。

しかし、GANも良い面だけを持つわけではありません。

例えば、昨今のウクライナの紛争で話題に上がったディープフェイク動画にもGANが利用されています。
私達ユーザは、この便利な技術をどのように使うのか、気をつける必要あるのです。

弊社公式Twitter:https://twitter.com/CrystalmethodZ9
弊社公式Facebook: https://www.facebook.com/クリスタルメソッド株式会社-100971778872865/

AIブログ購読

 
クリスタルメソッドがお届けする
AIブログの更新通知を受け取る

Study about AI

AIについて学ぶ

  • DeepAI提供形態のご紹介

    DeepAI提供形態のご紹介

    DeepAIは、さまざまな場面でご利用いただけるよう、提供形態をいくつかご用意しております。バーチャルヒューマンを利用することによって、自動化された顧客対応を可...

  • 社長AIが社員の質問になんでも答えます!

    社長AIが社員の質問になんでも答えます!

    社員だけでなく、社内外の方とコミュニケーションがとれます。クリスタルメソッドでは、企業の社長さんをDeepAI化するプロジェクトを行っています。社内外でのイベン...

  • 芸能人をAIアバターにして活動の幅を広げます

    芸能人をAIアバターにして活動の幅を広げます

    俳優業やイベントの出演などに忙しいタレントさんをDeepAI化 一度自分のAIをつくれば、時間や場所にとらわれることなく、AIが活動してくれます。タレントが常に...

View more