Pythonで学ぶ画像生成読みました。 良い本だったので紹介します。
最初は手を動かして仕組みを理解しよう系の本だと思って写経をしていましたが、どちらかというとコードはgithubの物を見れば良くて写経する本では無かったです。前半で基本を抑えた後、後半から各手法と特徴がわかりやすくまとまっていて圧倒されてしまいました。最近はロボット関係で強化学習の方を追っていて画像生成が全然追えず、この本で一通り押さえられたのは良かったです。
表紙に「画像生成の基礎から実践までを一冊に凝縮」と書いてあるとおり、5章の拡散モデルによる画像生成技術の応用が特にすごく、順番に手法を紹介しながら、そこで出てくるキーワードの整理、既存手法との違いが図付きでわかりやすく説明されています。もちろん本気でやるならここからもっと調べないといけないですが、ちょっと雰囲気知るのであれば十分です。その後に実装のポイントがあり、実装で苦労するところ、改善のポイントが紹介されています。
5章一番最初のTextual Inversionの例で紹介します。
実装で躓きやすいポイント
- placeholder_tokenとinitializer_tokenの扱い
- マルチベクトルの利用
- 勾配の更新を行う時の注意点
パラメータ調整や拡張の方法
- 複数GPUの時とGPUが一つしか無いときの変更箇所
- データセットが少ないときの調整箇所
デバッグ周辺
- VRAM不足対策
- placeholder_tokenの衝突時の挙動
- 明らかにおかしくなったときの確認ポイント
発展例
- サンプルを拡張して複数オブジェクトや複数スタイルを同時学習する方法
- 生成画像の管理方法
- テンプレートのカスタマイズ
まで、具体的なパラメータまで上げて説明してあります。これが、DreamBoothやAttension-and-Excite等、この後出てくる手法全てにそれぞれ違うアドバイスがあります。恐らくですが論文にはここまで全部は載っていないのと思うので、筆者(もしくは筆者のチーム)が実際に苦労した結果じゃないのかなと想像しています。
参考文献は章末にしっかりまとまっていますし、動くコードはgithubで動かせるし、とても良い本だと感じました。
今から画像生成の技術に追いつきたい人、画像生成をやっているがチューニングのポイントを知りたい人にお勧めです。