テキストから画像を生成するGANまとめ
この記事は,テキストから画像を生成するGANについて横断的にまとめることを目指しました.
"text-to-image"と呼ばれるタスクであり,テキスト(キャプション)を条件として,そのテキストにあう画像を生成することを目指します.
有名な研究では,StackGANがあります.
以下目次です.
- References
- なぜテキストから画像を生成するのか?
- どういう生成モデルが優れているのか?
- このタスクを困難にしている要因は?
- 自然画像の高次元空間
- テキスト空間と画像空間の違い
- データの用意
- text-to-image synthesisの研究の流れは?
- どういう画像を生成するか?
- 使われているデータセットは?
- 生成できる解像度は?
- ネットワーク構造はどうなっているか?
- Loss関数やDiscriminatorに工夫はあるか?
- 雑感
- おわりに
続きを読む
最近のファッション系人物画像生成まとめ
- 含まれる論文(7つ)
- なぜ人物の画像を生成するのか?
- 3D vs 2D
- ポーズ変化と服装変化
- データセット
- 人物画像の生成は何が難しいのか?
- それぞれの手法について
- end-to-endか2ステージか
- 何を出力するか?
- 入力の面白い工夫
- データの用意
- おわりに
含まれる論文(7つ)
- A Generative Model of People in Clothing, in ICCV 2017
- Pose Guided Person Image Generation, in NIPS 2017
- The Conditional Analogy GAN: Swapping Fashion Articles on People Images, in ICCV 2017 workshop
なぜ人物の画像を生成するのか?
各論文中での研究背景や応用先についての記述から,人物の画像を生成する理由として考えられるのは,
・データセットの拡張
・image editing
・re-ID(人物再同定)
・in-painting(画像補完)
・synthesizing video(動作の生成)
珍しいポーズや珍しい見え方の人物の画像を生成することができれば,各タスクをこなす機械学習モデルの性能をさらに向上させることができると考えられる.
・仮想試着(virtual try-on)
画像中の服装を自在に変化させることができれば,ファッション系のオンラインサイトで,検討中の服がどのようなコーディネートになるか試すことができる.
(例 TriMirror http://www.trimirror.com/en/about/から)
続きを読む
10/2017 読んだもの
38. Fast-AT: Fast Automatic Thumbnail Generation using Deep Neural Networks , CVPR2017
- 1枚の画像から,アスペクト比を指定してサムネイルを生成.アスペクト比ごとに畳み込み層のカーネルを使い分ける.
- 物体検出のフレームワークが元.saliencyは利用しない.
- 高速でサムネを生成することは,画像検索結果の表示や広告配信でもキーになるので今後も発展すると思う.
39. Neural Face Editing with Intrinsic Image Disentangling , CVPR2017
- 'in-the-wild'な画像を使って,shape, illumination, albedoのようなレンダリング要素をもつれを解いた潜在変数空間にエンコードするunsupervised autoencoder.
- EB-GAN lossと,autoencoderなのでL2 lossを使う.L2は生成画像と正解画像の比較だが,'in-the-wild'な画像には変形後の正解がないので,3D Morphable Modelを使って,擬似的に正解画像を作る.
- 結局 3D Morphable ModelをDNNで近似しているように思えるが,もつれを解いた潜在変数空間を作ることができているところにインパクトがある.
- 多すぎるほどのLossを使うところが面白い.
- 影のかかり方を変えたりすることも結構できるのが驚き.
40. Automatic Understanding of Image and Video Advertisements , CVPR2017
- ラベル付き広告データセットの作成と公開.
- 広告をComputer Visionで理解するための課題が挙げられていたが,明らかに難問.’森が焼けている’ではなくて’肺が焼けている’を理解し,そこから’禁煙を訴えている’ことを導かなければならない,など.
41. Conditional Image Synthesis with Auxiliary Classifier GANs , 2016
- ImageNetをGANで学習,生成するとぐちゃぐちゃな画像が出ていたが,classラベルをつけて学習させると,global coherenceな高解像画像を(ある程度)生成できた.
- StyleTransferでも,GANロスだけでなくて,ラベル情報を使った分類ロスを併用する手法が出ている.
42. Real-Time User-Guided Image Colorization with Learned Deep Priors , 2017
- Iizuka+(Let There be Color!)の手法を,ユーザによる局所的な色のヒントから複数の着色パターンを出力するように発展させている.
- 大域的な統計量を中間特徴量に組み込む構造であることから,カラーヒストグラムを指定することででも,全体の色味を指定することができるのが面白い.
43. Perceptual Losses for Real-Time Style Transfer and Super-Resolution , 2016
- Gatysらの手法は,画像自体をPerceptual Lossで繰り返し最適化していくが,この手法では,Image Transformation Network(feed-forward)をPerceptual Lossで最適化する.
- それによって,feed-forwardで高速に変換でき,かつ,Perceptual Lossによるハイクオリティーな変換ができる.
- 平易に書かれた論文で,勉強になった.
44. Universal Style Transfer via Feature Transforms , NIPS2017
- feed-forwardかつ,fine-tuningを必要とせず任意の(universal)スタイルに対応するStyle Transfer.StyleBankに似ており,auto-encoderでスタイルを特徴空間にembeddingする.
- その特徴空間において,(スタイルを変換したい)コンテンツの特徴をスタイルの特徴に一致させれば,再構成した時にそのスタイルを持つコンテンツが生成できる.特徴空間での特徴量の変換にwhiteningとcoloringを利用する.
- Perceptual lossを元に特徴量を近づけるのではなく,強制的に特徴量を一致させるという方法が面白いところ.
45. Deep Photo Style Transfer , CVPR2017
- photo-realisticなstyle transferを実現.絵画などのスタイルをtransferする研究が多い中で,新しい枠組み.しかし,著者らもphoto-realisticとは何か?という問いに対する答えを見つけているわけではない.
- もともとphoto-realisticなコンテンツ画像のエッヂを保存し,color spaceのみを変化させることで,photo-realisticさを保ったstyle transferを行なっている.
- 用いている手法はfeed-forwardではなく,optimization-basedの手法である.損失関数の工夫によってエッヂの保存を実現しているが,feed-forwardでエッジの保存を行うのであれば,同じ損失関数はあまり有効ではないのかもしれない.
9/2017 読んだもの
28. Learning from Simulated and Unsupervised Image through Adversarial Training
- シミュレータで画像を生成した時についてくるアノテーション情報と,refineした画像が食い違わないようにする工夫が面白い.
- 現実的な画像に近づけられたかをどう定量的に評価するか?→実際にモデルの学習に利用して精度が出るか確認・・・なるほど
29. Visual Worlds as Proxy for Multi-Object Tracking Analysis , 2016
- virtual KITTIの公開
- CGを用いてDNNを訓練しても精度が出ないと言われている中で,作成したCGのデータセットでMOTのパフォーマンスが向上したという報告が気になる.
- real to virtual worldでもモデルの学習で精度が出たので,CGをより現実に近づけれたかどうかの判断で,モデルの学習の精度を見るのは不十分か?
30. Creativity: Generating Diverse Questions using Variational Autoencoders , CVPR2017
- 'diverse question'の重要性について力説していたのが印象的.
- コンピュータの「創造性」は,例えば未来予測やこの研究のように1枚の画像から複数の質問を挙げることとしていたのが興味深い.
31. Style Transfer for Anime Sketches with Enhanced Residual U-net and Auxiliary Classifier GAN, 2017
- PaintsChainerでは色のヒントを手動でつけるが,この論文は参考イラストでの色の選び方を自動で真似して着色してくれる.
- U-netの勾配消失を防ぐためにGuide Decoderを2つも追加する工夫が面白い.
32. StyleBank: An Explicit Representation for Neural Image Style Transfer, 2017
- StyleBankという,auto-encoderによってスタイルをfeature embeddingにしたものを利用する.従来のneural style transferでは,新たなスタイルで変換できるようにするために,再度,ネットワークを訓練する必要があった.提案手法では,CDを取り替えると別の音楽を聞けるように,StelyBankを取り替えるだけで,別のスタイルで変換を行えるようになるという.面白い.
33. Texture Networks: Feed-forward Synthesis of Texture and Stylized Images, 2016
- texture synthesis でも style transfer でも生成結果を見ると,Gatysらの結果に劣っているように感じるが,feed-forwardで生成できるという点が当時では大進歩だった.
34. Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification, SIGGRAPH2016
- シーン分類のクロスエントロピー損失を用いて,適切に大域的な特徴量が取れるようにネットを訓練し,シーンにあった着色を行えるようにした工夫がある.シーン分類のラベル付けをより細かくしたらどうなるのか.
35. Fast Image Processing with Fully-Convolutional Networks, 2017
- dilated conv. とMSEの単純なネットワーク構造で複数の画像処理の効果を近似することができるというのが面白い.
- 高速に処理を施せるので,今後フレーム間で整合性を保てれば,リアルタイムで映像の処理が行え,ライブ配信などでの表現の幅が広がりそう.
36. A Learned Representation for Artisitc Style, 2017
- 32.StyleBankと同じ問題設定.一つのstyle transfer ネットワークが一つのstyleにしか変換できないという問題.スマホアプリなどに搭載するには,メモリの観点から,一つのネットワークで複数種類のスタイル変換が行えるべきである.
- この論文の約2ヶ月後に32.StyleBankが発表されている.違いとしてはStyleBankはコンテンツとスタイルを明示的に分けようとしている点.変換の質はStyleBankの方が良さそう.
- スタイルを二つのベクトルで表現できるように落とし込めているのがすごい.スタイル変換だけでなく,そのほかの画像処理などもこのように,異なるパラメータと,共通のパラメータの畳み込み層で表現して使い分けることができるようにならないだろうか.
37. Semantic Image Inpainting with Deep Generative Models , CVPR2017
- CVPR2017の画像補完
- 構造としては,DCGAN.生成される画像と元画像の穴のない領域との間での重み付きL1Lossを使って,その2つがもっとも近いzを探すことを繰り返す.
- SIGGRAPH2017のIizuka+の手法の方がSOTAだと思うが,手法の方向性は異なる.
~8/2017 読んだもの
1. Generative Adversarial Nets
2. unsupervised representation learning with deep convolutional generative adversarial networks (pdf)
3. Image-to-Image Translation with Conditional Adversarial Networks (pdf)
4. InfoGAN
5. Pose Guided Person Image Generation
6. Coarse-to-Fine Volumetric Prediction for Single-Image 3D Human Pose
7. 3D Human Pose Estimation = 2D Pose Estimation + Matching
8. Dynamic FAUST: Registering Human Bodies in Mostion
9. Visual Attribute Transfer through Deep Image Analogy
10. DeepSketch2Face: A Deep Learning Based Sketching System for 3D Face and Caricature Modeling
11. Example-Based Synthesis of Stylized Facial Animations
12. Context Encoders: Feature Learning by Inpainting
13. High-Resolution Image Inpainting using Multi-Scale Neural Patch Synthesis
14. Globally and Locally Consistent Image Completion
15. WarpNet: Weakly Supervised Matching for Single-view Reconstruction
16. Universal Correspondence Network
17. Artistic style transfer for video
18. Conditional Generative Adversarial Nets
19. Pixel Deconvolution Networks
20. StreetStyle: Exploring world-wide clothing styles from millions of photos
21. Deep Photo Style Transfer
22. Transformation-Grounded Image Generation Network for Novel 3D View Synthesis
23. A Point Set Generation Network for 3D Object Reconstruction from a Single Image
24. A Hierarchical Approach for Generating Descriptive Image Paragraphs
25. Age Progression/Regression by Conditional Adversarial Autoencoder
26. Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
27. Controlling Perceptual Factors in Neural Style Transfer
Globally and Locally Consistent Image Completionを試す
SIGGRAPH 2017で発表された「Globally and Locally Consistent Image Completion」を簡略し実験した記録です.(ディープネットワークによるシーンの大域的かつ局所的な整合性を考慮した画像補完)
論文へのリンク:
http://hi.cs.waseda.ac.jp/~iizuka/projects/completion/data/completion_sig2017.pdf
プロジェクトページへのリンク:
飯塚里志 — ディープネットワークによる画像補完(SIGGRAPH 2017)
感動.すごい.
気になるアイデア
Dilated Convolution を使うことで
・受容野を広げ,画像中の広範囲の情報を利用,
・ダウンサイズをできるだけ避けて,解像度をキープ.
また,2つの識別器(Discriminator)の利用し,
・画像全体がリアルか
・補完付近がリアルか
をみることで,より補完が上手くいく.
早く自分でも試して見たいと思い,ソースコードの公開を待ち望むも中々その日は来ず.
簡単にでも自分でコードを書くことに.
論文と同じPlace2を利用しましたが,その一部のジャンルに絞ることや,後処理を施していないなど,結構論文とは異なる状況で実験しています.
結果
学習途中の画像を載せました.
補完領域は,あるサイズの矩形です.画像の4分の1くらいを占めています.
補完領域の形を複雑にすると,補完している場所がよりばれにくくなりそうです.
Completion NetworkのMSEによるPretrainingが終わった段階では,下のようにぼやけた感じでした.
このあとGANによる手続きで,より自然な画像を生成するように更新していきます.
論文中でも, heavily structured objectsの補完は困難であると書いてあるように
人や飛行機などを復元するなどは難しいようですね.
→得意なジャンル,不得意なジャンルがある.
いくつか試して,Adversarial Loss + L2 Loss を組み合わせるのが効果的という実感も.
Adversarial Loss だけで飛行機画像の生成を行うとグチャグチャに.
そもそも飛行機画像の生成自体難しいとは思いますが.
ハイパーパラメータの調整もしていないですし,論文のように2ヶ月間学習していませんので,全然再現できていないので,
論文筆者によるソースコードが待ち遠しいです.
Pose Guided Person Image Generation
5/25 arXivに投稿された,Pose Guided Person Image Generation という論文を読みました.
[1705.09368] Pose Guided Person Image Generation
Pose Guided Person Generation Network
服や人の情報を残して,任意のポーズを取った,人の画像を生成したい.
・ Network は,2つのステージで構成される.
一つ目のステージ
同一人物のポーズを変えた,ぼんやりとした画像を生成
2つ目のステージ
ぼんやりとした画像を高精度にするためのconditional GAN
・ネットワークの構造
ステージ1:
Generator1:encoder-decoder U-netに似ている.
encoderやdecoderの各層はResidual Block になっている.
encoderとdecoderの間には全結合層がある.
ステージ2:
GAN
Generator2:encoder-decoder U-netに似た構造.
encoderやdecoderの各層はResidual Block になっている.
encoderとdecoderの間には全結合層がない.
Discriminator: DCGANのDisciminator
・Loss関数
ステージ1:poseMaskLoss ( L1損失関数+poseMask )
poseMaskによって,ターゲットにしているポーズの位置の損失を強調する.
ステージ2:
Generator2の損失関数は,
Discriminatorが real 画像だと判定したかどうか
→ ラベル1とDの出力値の binary cross-entropy
さらに,poseMaskLossも加える.
Discriminatorは,
real 画像が入力された時には,1
fake 画像が入力された時には,0が出力されているかどうかで
binary cross-entropy
・データセット
Market-1501 http://www.liangzheng.org/Project/project_reid.html
re-identification のデータセット
DeepFashion http://mmlab.ie.cuhk.edu.hk/projects/DeepFashion.html
服などのデータセット
poseMaskLossは背景変化の影響の低減のため,人物の体に注目するようにするための工夫.
したがって,DeepFashionのように白背景の場合は大きな効果は得られないようだ.
・データの前処理
pose-estimationをして,18点の,関節や頭の位置を示した18 x 1chの白黒画像を作る
論文中には state of the art な手法で推定したとあり,
を使っている.しかし今はもうOpenPoseが state of the art ?
・実装
U-net like なネットワーク構造で,https://arxiv.org/pdf/1612.05360 で提案されているU-net 風のものを使っているようだ.
U-net との違いは,skip-connectionをconcatではなく,要素ごとの和にしている点.
論文中には,ダウンサンプリングやアップサンプリングの手段が載っていなかったので,自分の実装では,
Conv2d stride=2 でダウンサンプリング.
ConvTranspose2d stride=2 でアップサンプリング.
また,encoder側のResidual Blockのどの位置からskip connectionを作り,どのいちでdecoder側に足しこむのかに関しては明らかになっていない.
論文中のNetwork architectureの図にはいくつか間違いが含まれているので,その部分のアップデートと共により詳しい構造について述べられるのを期待したい.
・結果
(学習中)
・コード (ここ)
DeepFashion用.
データの前処理として,Pose-estimationが必要.
変数 dataloader にバッチごとの画像をだすイテレーターを設定しないと動かない.