Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CycleGANで顔写真をアニメ調に変換する/cyclegan_selfie2anime

meow
November 13, 2019
1.1k

 CycleGANで顔写真をアニメ調に変換する/cyclegan_selfie2anime

2019年11月13日(水)にコワーキングスペース秋葉原Weeybleにて開催された『機械学習 & Pythonもくもく会 + LT』でLTとして発表した資料です。

https://weeyble-data.connpass.com/event/155143/

meow

November 13, 2019
Tweet

Transcript

  1. おしながき  GAN, CycleGANとは  公式CycleGANの使い方  CycleGANを用いたselfie2anime  取り組み1:

    とりあえずやってみた編  取り組み2: データを増やした編  取り組み3: むりやり特定画像に特化させた編  今後の取り組み
  2. pix2pixの応用可能性  一方の変換は楽に行えるが、その逆は難しいという時に 強力。復元過程をモデルが学習できる可能性がある タスク例 処理 入力画像 出力(生成)画像 デノイジング ノイズを付与

    ノイズをまぶした 画像 元の画像 (線画)彩色 カラー → グレー (or2値) グレー(or2値)の 画像 元の(カラー)画像 超解像 画像の解像度を落 とす 解像度を落とした 画像 元の画像 画像A 画像B 処理 簡単 復元 困難 画像Aから画像Bをつくるだけで、 画像B→画像Aへの復元過程を獲得できるかも・・・!
  3. 必要なもの  Linux マシン  GPU(グラフィックボード)必須  Video RAMは最低限4GBはほしい 

    Deep Learning 開発環境、ライブラリのインストール  CUDA  CuDNN  変換元、変換先の画像  変換元の画像を1つのディレクトリにまとめておく  変換先の画像を1つのディレクトリにまとめておく  お金  Deep Learningは電気代との相談 おそらくGoogle Colaboratoryでもできると思うが未確認
  4. セットアップ  必要なら、pythonの仮想環境を作る  githubから公式のCycle GANリポジトリをクローン  https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix  pythonパッケージをインストール

     $ pip install –r requirements.txt  自分のCUDAバージョンによっては、最新のPyTorchが入らないこ ともある。だめだったら、torch==1.0.1にしてみる
  5. 画像の配置  ${repo_root}/dataset/<データセット名>/  変換元の画像ディレクトリをtrainAという名前にする  シンボリックリンクでもよい  サブディレクトリがあってもよい 

    現行のコードはディレクトリ名に敏感なのでtrainAという名前は固定  同じく変換先の画像ディレクトリもtrainBという名前にする  AとBが逆につけてしまっても大丈夫  A→Bだけでなく、B→Aの変換のネットワークも学習してくれる  画像がないなら、とりあえずgoogle mapsの画像を落としてこよ う  $ bash ${repo_root}/datasets/download_cyclegan_dataset.sh maps
  6. 学習の実行  $ python ${repo_root}/train.py ¥ --dataroot ./datasets/<dataset_name> ¥ --name

    <任意のmodelの名前> ¥ --model cycle_gan  中間結果はhttp://localhost:8097で見れる  lossは上下するので、学習の収束の判断基準にならない  一定iter(デフォルトは5,000)の後、モデルのスナップショッ トが、 ${repo_root}/checkpoints/<任意のmodelの名前>下に 吐かれる  スナップショットを得た後、学習を中断し、再開したい場合は “—continue_train”をオプションにつける
  7. 評価の実行  ${repo_root}/dataset/<データセット名>/testA ディレク トリを作る  $ python ${repo_root}/test.py ¥

    --dataroot ./datasets/<dataset_name> ¥ --name <任意のmodelの名前> ¥ --model cycle_gan  結果はHTMLファイルで吐かれる  ${repo_root}/results/<任意のmodelの名前>/test_latest/index.html  real_A: 変換元の画像  fake_B: real_Aを変換した画像  rec_A: fake_Bをさらに、変換元になる変換をしたあとの画像  基本的にはreak_Aとほぼ一致しているはず
  8. 取り組み1: とりあえずやってみた編  何はともあれ追試のような形でCycleGANで画像変換を やってみよう  selfie画像: CelebA dataset 

    http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html  CUHKのmmlabが提供する顔画像データセット  合計約200,000枚ある  Celebというだけあって、名の通った人(習近平主席など)が混ざっ ているので取り扱いには注意  アニメ画像: animeface-character-dataset  http://www.nurs.or.jp/~nagadomi/animeface-character-dataset/  約200名のアニメキャラクターの画像  合計約15,000枚ある
  9. TWDNEv2  “This Waifu Does Not Exist v2”  https://www.thiswaifudoesnotexist.net/

     Style GANで存在しないアニメキャラクターを自動生成 したものの展示サイト  15秒おきに画像が更新される
  10. 参考文献  敵対的生成ネットワーク(GAN)/ ⽚岡 裕雄  https://www.slideshare.net/cvpaperchallenge/gan-133159239  GANのまとめスライド 

    PyTorchニューラルネットワーク 実装ハンドブック  https://www.shuwasystem.co.jp/book/9784798055473.html