有名なpix2pixの検証
GANの一種 Keras で pix2pix を実装する。【 cGAN 考慮】by トミーさんの結果検証をAKB総選挙ランキング上位者の画像を使って実施してみました。
コードは以下に置きました
MuAuan/pix2pix
やったこと
①img2h5.pyが画像の入ったフォルダからh5pyファイルを生成
最初、yahooから収集した画像はいろいろなサイズのものがあり、読み込みで失敗。Canny関数を勘違いしてサイズ変更しているものと考えていました。一度サイズ変更してやればやれましたが、同じ手間なのでトミーさんのimg2h5.pyを書き換えて入力画像の大きさに依存しないようにしました。
実行は以下のとおりです。
まず、images/にカテゴリ毎にディレクトリを作成して画像を配置しています。
以下を実行すればdatasetimages.hdf5ファイルが作成されます。
python img2h5.py -i images/ -o datasetimages -t canny
使い方は以下のサイトを参照してください。
tommyfms2/pix2pix-keras-byt
※画像はカテゴリ毎に読み込みと合わせて配置してください。
※画像サイズはバラバラでも対応しています、サイズ変更されてしまうので、 元画像を保存したい場合はあらかじめコピーするか、別途ディレクトリを決めてそこに保存・取得するように変更してください。
②Trainingは以下で実行
python pix2pix.py -d datasetimages.hdf5
オプションがあるみたいですが、使いませんでした。 上記サイトを参照願います。
出力は時々刻々変化するので、出力ファイルに番号付けました。そして、Weight再利用できるように、出力できるようにしました。
結果
③出力はTrainigとValidationの二つがでます
あまり記載されてませんが、このGANは収束がとても速いです。
様子を示すと、以下のとおりです。
因みに約1000個の画像データ(128x128)に対して1epoch 72secです。
上段が元画像をCannyした線画
中段がGenerateされた画像
下段が元画像 です。
【epoch 0 Training】なんとなく人の絵??
【epoch 2 Training】ほんとに見えてきました!
【epoch 3 Training】もはやそれぞれの似顔絵?
【epoch 5 Training】絶対カンニングしてるよ?
【epoch 20 Training】。。。
【epoch 50 Training】カンニングしても描けない。。
【epoch 180 Training】元画像に近づいてきた
【epoch 180 Validation】苦手はあるんだな、でもTestデータ!
【epoch 400 Validation】つまり400回回した最後のTest。。
感想とこれから。。
最後、Testデータに対しては、苦手な画像がはっきりしていて、少し安心。でもこれだけ、きれいな絵が得られると、これ使って何やろうかな??
たとえば、
①普通の風景とか動画からフレームごとの連続シーン入力にして再度動画再作成とか。。そのあと線郭まんがからリアル動画できるね??
②セルフィッシュ画像を入力にして、似顔絵?返信サービスとか