strelka_dogのブログ

徒然なるままに心に移り行くよしなしごとをそこはかとなく書き尽くるブログ

GAN(画像生成)で遊んだ話

これはKMCのアドベントカレンダー21日の記事です
adventar.org


僕の前の人たちも結構遅刻してたので遅刻公開でもいいかなと思ってたら今日になりました。
アドベントカレンダー、僕の前日のhatsusatoさんの記事がこちらです
hackmd.io

経緯

KMCに強いGPUを積んだマシンがやってきました。昨今流行っていますよねAIとかDeep learningとか、せっかくなのでこのつよつよGPUマシンを用いて流行りの機械学習をしてみようとしたのがきっかけです。

実はこれをやる前にもテキストのバイナリ分類を学習させて遊んだんですがサークルのアドベントカレンダーとして公開するには憚られる内容だったので(授業の課題でGANで何か作る課題が出ていたこともあり)GANで遊んでみることにしました。

やったこと

最初は来年の干支である寅のイラストを学習させて年賀状を作ろうと思ってたんですが、ググってみると全く同じことをやってる方がいたので適当なデータセットで学習させるだけの話にしました。

データセット

血球の画像のデータセットです。血球の種類等のラベルもありますが今回は画像生成が出来ればそれで十分だったためラベルは用いていません
github.com

モデル

Light weight GANを用いて学習を行いました。ポケモンイラスト生成なんかで知ってる人が多いかも
github.com

やりかた

やり方もなにもreadmeに書かれている通りなんですが説明しないと書くことが何も無くなるので書きます
pip install lightweight-gan
でインストールした後、
lightweight_gan --data (画像のパス) --image-size 512
とやるだけです。
すごいですねコードを全く書かなくてもGANを走らせることの出来る時代ですよ。
データのかさ増し方法の指定などパラメーターもありますがこれで最低限動きます。気になるならreadmeを読んで。

結果

学習の過程がこちら赤血球が赤血球の形になってますし、なんか血球の顕微鏡画像に見える画像が生成されてますね。血液学の授業は一夜漬けだったのでもう血球画像見せられても赤血球の連銭形成とかしか分かんないですけど……

400枚程度の画像でこんな画質の高い画像が生成できるんですね。すごいな

ちなみにさらに学習を続けた結果がこれ
f:id:strelka_dog:20211224113558j:plain
似たような画像が生成されて過学習に陥ってそうなのが分かります。
ちなみに黒くなってるのはデータのかさ増し手法に「Cutout,Translation」を指定したからです。
データセットの画像を黒い四角でくりぬいたり、黒背景で画像を上下左右にずらしたりしてるから黒色が出てきたんだと思います。かさ増しの種類を
--aug-types [Offset]
にすると黒ずみは無くなると思います。

以上ノンコードで出来るGANによる画像生成でした。

22日担当は
こちらの記事です
blog.dnek.net