LoginSignup
2
1

More than 3 years have passed since last update.

GANを使って猫の画像で遊んでみる

Last updated at Posted at 2020-03-25

この記事について

この記事は、GANについて調べている私の取り入れた知識をテキトウにまとめておくためのものです。

ほんのコードを書くのは嫌なのでコーディングはしません。

役立つかどうかは不明。

使用した開発環境

Google Colaboratory
Python3

参考資料

実践GAN

GANの大まかな概要

GANはGenerate Adversarial Networkの略で日本語にすると敵対的生成ネットワークという。
たまに見かける「AIの書いた絵」を生成したりする技術。

GANの中身

GANはモデルの構造や活性化関数などとの考え方ではなく、学習手法の一つ。
教師あり学習、教師なし学習、強化学習と同じレイヤーの考え方。2つのモデルをぶつけ合って精度を上げていくのは強化学習に似ていると感じました。

学習方法

名前の通り、敵対する2つのモデルを交互に学習させていくことでAIを成長させていく学習手法。
用意するモデルは2つ。

  • 識別機
  • 生成機

識別機は本物の画像と偽物の画像を見分けるための学習モデル。
生成機は偽物の画像をランダムの配列から生成する学習モデル。

識別機の学習

真の画像を1、偽の画像を0とラベリングして識別機の学習を行う。
最初の段階では生成機が生成する画像というのはほぼノイズなので、容易に識別を行うことができる。

MNISTを例にすると以下のような学習になる。

image.png

生成機の学習

偽の画像を1とラベリングして生成機の学習を行う。
このとき識別機の学習は行わない。

image.png

偽の画像(0)を真の画像(1)と嘘をついて学習させることによって、偽の画像の精度を向上させていく。

学習モデル

全結合やCNNを使用して学習することを4章までで学びます。

全結合モデルによる生成画像
image.png

CNNモデルによる生成画像
image.png

CNNにすると全結合で発生していたノイズのような白い点々が無くなっていますね。
やはり画像処理にはCNNなのか。
また、こうしたところから分かる通り、GANはモデルの構造は考慮しません。つまりRNNやLSTMを使用したデータも生成することができるということです。

猫の画像でも試してみた

学習データが少ない(32×32の60枚の猫の画像)と生成画像がうまく学習できませんでした。
画像を少なくすればそっくりな画像が生成されるのかなと思ったのですが、そうでもないようですね……

100万回学習した猫
image.png

MNISTのコードを流用したからソースコードミスということはないと思うので、学習回数を増やすか、画像を増やせば行けるのではないでしょうか。

猫の画像でもっと試してみた

  • 学習データを探すのが面倒!
  • 学習回数を増やすのは時間がかかりすぎる!

という怠け者精神で、物は試しと画像を1枚だけにしてみます。
使用したの画像
image.png

学習回数は10万回!
さぁ、その結果は!!!

image.png

そっくりな画像ができたー!!!!!
え、完璧じゃね?

今回は10万回学習して、1万回学習ごとに画像を表示していたのですが、1万回の段階ですでに猫が猫でした。
もっと細かく見ていく必要がありますね。

猫の画像でもっともっと試してみた

今度は種類を増やします。
image.png

画像を2枚にして、毎回どちらかの画像を参考に学習をします。
学習結果がこちら↓
画像出力は200回毎2000回学習

image.png
image.png

学習用の画像が少ないと最終的にどっちか片方に寄るみたいですね。
繰り返すとだいたい400回目くらいでどちらかの画像に固定されます。

猫の画像でもっともっともっと試してみた

今度は画像を4枚使用して、さらに背景が黒いものを集めてみました。
構図も猫が前を見ているものだけですので、これなら面白いのができるのでは!?
image.png
また、学習にはランダムに二枚の画像を使用することにします。

学習結果がこちら↓
画像出力は200回毎2000回学習
image.png
image.png

前半のノイズが多い部分は飛ばします。
なかなか可愛い猫ができました!
少しずつ、与えていく画像データを増やしていくと猫が生成されて嬉しくなりますね!

G A N は い い ぞ !!!!!!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1