はじめに
世間では生成AIというものが流行っています。
一般の方でもプロンプトを入力するだけで簡単に画像を生成することができ、使う側としての触れる機会が増えました
一方でどのように生成されているのかということがあまり理解できていないまま使用している状態だったため簡単に作ってみたいと考え、初学者でも簡単にできそうなGANを使って遊びたいと思いました
↑1年ほど前に生成した画像たち。かわいいこりゃAI絵師増えるわ
GANとは
GANとは生成AIモデルの一種です。Webとは関連がありません※1
深層学習の要領で大量の画像を使用し学習します
具体的には、偽物の画像を生成するGenerator(生成器) と、偽物と本物を識別するDiscriminator(識別器) の2つのモデルを使って戦わせてより本物に近い画像を生成させるという手法です。

↑ありえないほどわかりやすい画像(GANの説明ページ)
使用するデータセット
Anime Face Datasetを使用しました

これが元となるデータです。これに似た画像を生成していきます 右下の子かわいい
生成したアニメキャラ

epoch_50というものは50回学習を繰り返したという意味です。
結構それっぽい画像たちが生成できたのではないでしょうか?
これが既存のアプリを使わずとも制作できるわけです。楽しいですね
手を動かして確認したい方へ
興味のない方は飛ばしてもらって構わないです
私のGitHubのレポジトリにcolabでGANを動かしてみたコードを作成しているためここに移動してください

この画像になるOpen in Colabを押してもらうと遊べます。
ランタイムをGPUにする、kaggle.jsonを入手すると動作できます。
kaggle.json入手方法
- Kaggleにログインする
- 右上のプロフィールアイコンから Account を開く
- 画面下部の API セクションを探す
- Create New API Token をクリックする
また、このコードを実行するには 1時間以上かかります。気長に待ちましょう
待てない方へ
改善点
左が元画像で、右が生成した画像です。 比較してみると生成した方は全体的に色が薄く自信のなさが現れています。また顔のパーツがところどころおかしいです。
これらの原因として、学習時間が十分でなかったことも考えられますが、それに加えて Generator(生成器)と Discriminator(識別器)のパラメータ設定が適切でなかった可能性もあると感じました。
まとめ
自分でパラメータをいじってよりそれっぽい画像に寄せていく作業は難しかったですが楽しかったです。
普段は簡単に使えてしまう生成AIも実際に1からコードを動かして学習させてみることで仕組みや大変さを理解することができました。
また、今回作成したモデルはAPI化してWebアプリに組み込むこともできるらしいため、納得のいく画像が生成できたらそちらにも挑戦してみたいと思います
注釈
※1 モデル自体はWeb技術ではありませんが、Webサービスの裏側で使われることは多いです。



