
本レポジトリではインプレス社より出版されている 北田 俊輔 著 の機械学習シリーズ「Pythonで学ぶ画像生成」で扱うソースコードを管理しています。 ソースコードは Jupyter Notebook 形式でまとめられており、Google Colab 等で実行することを想定しています。
ソースコードの解説は主に書籍内に記載されており、本レポジトリのソースコードは補助教材となっています。
Warning
本書で使用する環境やライブラリの変更等に伴い、補助教材の内容を予告なく更新する場合があります。そのため、常に最新の情報を確認し、本文の内容を読み替えてください。
本書籍は「画像生成の基礎から実践までを一冊に凝縮」というテーマで各章が構成されています。 まず「画像生成とは何か」という基本を解説し、次に画像生成を支える深層学習の基礎を押さえます。その上で、現在の最先端技術である拡散モデルと、その効率化・応用例としてStable Diffusionなどを詳しく取り上げています。最後には、拡散モデルがもたらす革新的な可能性と同時に、技術の制限や倫理的な課題にも言及し、将来のさらなる発展・応用に向けた展望を示しています。
- 6章 + 各章末に実装に役立つコラム付き
- Python・PyTorchで学ぶ画像生成の実装
- Diffusersによる最先端技術の実践
- 画像生成を中心とした様々なタスクの解説を多数収録
本書のサンプルコードではでは以下の環境での動作を想定しています。
🐍 / 📦 | ドキュメント / レポジトリ | 最低要件 |
---|---|---|
🐍 python | https://docs.python.org/ja/3.10/ | 3.10 以上 |
📦 pytorch | https://github.com/pytorch/pytorch | 2.0 以上 |
📦 transformers | https://github.com/huggingface/transformers | 4.48.0 以上 |
📦 diffusers | https://github.com/huggingface/diffusers | 0.31.0 以上 |
📦 py-img-gen | https://github.com/py-img-gen/py-img-gen-lib | 0.1.0 以上 |
Jupyter Notebook の補助教材があるセクションには Open in Colab
のバッジを付与しています。バッジをクリックすると該当するノートブックを Colab で開くことができます。
Section | GitHub | Colab |
---|---|---|
1. 画像生成の概要 | --- | --- |
2. テキストからの画像生成 | ||
3. 画像生成技術の進歩による弊害 | --- | --- |
Section | GitHub | Colab |
---|---|---|
1. 深層学習の概要 | --- | --- |
2. 深層学習の訓練と評価 | ||
3. 注意機構と Transformer モデル |
Section | GitHub | Colab |
---|---|---|
1. 生成モデル | --- | --- |
2. DDPM(ノイズ除去拡散確率モデル) | ||
3. スコアベース生成モデル | ||
4. 拡散モデルの生成品質の向上 |
Section | GitHub | Colab |
---|---|---|
1. LDM(潜在拡散確率モデル) | --- | --- |
2. CLIP | ||
3. Stable Diffusion を構成する要素 | ||
4. Stable Diffusion v1 | ||
5. Stable Diffusion v2 | ||
6. Stable Diffusion XL | ||
7. Stable Diffusion v3 |
Section | GitHub | Colab |
---|---|---|
1. パーソナライズされた画像生成 | ||
2. 制御可能な画像生成 | ||
3. 拡散モデルによる画像編集 | ||
4. 画像生成モデルの学習および推論の効率化 | ||
5. 学習済み拡散モデルの効果的な拡張 | ||
6. 生成画像の倫理・公平性 | ||
Section | GitHub | Colab |
---|---|---|
1. 拡散モデルの発展に伴う議論 | --- | --- |
2. 拡散モデルによる画像生成の倫理 | --- | --- |
3. 画像生成にとどまらない拡散モデルのの進化と今後 | --- | --- |
- 書籍 『Pythonで学ぶ画像生成』コラム補足記事|Pythonで学ぶ画像生成|note
- 本書の各章末にPythonを用いた実装に役立つコラムを1ページ程度で掲載しています。コラム補足記事では更に内容を拡張して、具体的にどのように理想的な実装につなげていくかについて詳細の説明を記載しています。
- 📄 Pythonで学ぶ画像生成 ランディングページ
- 本書用のランディングページです。関連情報を掲載しています。
- ⚙️ py-img-gen/py-img-gen-lib: 🐍 A library for the book "Image Generation with Python"
- 本書で使用するライブラリの GitHub レポジトリです。補助教材を実行する際に必要な依存ライブラリのインストールや、教材内の一部コードを簡略化するために使用していただけます。
- ⚙️ py-img-gen/diffusers-ncsn: 🤗 diffusers implementation of Noise Conditional Score Network (NCSN)
- 本書で説明する NCSN を diffusers パイプラインとして実装した GitHub レポジトリです。README に従うとパイプラインをダウンロードおよび実行することができます。
- ⚙️ py-img-gen/diffusers-text-to-model-editing: 🤗 Fork of the diffusers implementation of "Text to Model Editing (TIME)"
- 本書で説明する TIME について、diffusers オフィシャルで用意されているものを fork して最新版 diffusers で正しく動作するように修正実装した GitHub レポジトリです。
- ⚙️ py-img-gen/huggingface-datasets_ukiyo-e-face-blip2-captions: 🤗 Ukiyo-e-face dataset with BLIP2 captions for huggingface datasets
- 本書で紹介する LoRA の実装例で浮世絵スタイルの画像生成を実現する方法について紹介しています。その際に Ukiyo-e-face データセットに対して、BLIP2 を適用して画像とキャプションのペアデータセットを作成しています。データセットは huggingface datasets 形式で公開しています。本レポジトリでは huggingface datasets を作成する際の loading script を公開しています。
- 🎞️ 画像生成AI入門:Pythonによる拡散モデルの理論と実践 リサーチサイエンティスト 北田俊輔 | Coloso.
- 著者が Coloso. というビデオオンデマンド型オンライン教育サービスにて公開している動画コンテンツです。本書と併せて学習することで、より深い理解を得ることができると考えています。
近年、生成AIの技術革新により「画像生成」の世界は急速に発展しています。そんな中、注目すべき一冊が『Pythonで学ぶ画像生成 機械学習実践シリーズ』です。本書は、深層学習を基盤とした画像生成について、基礎理論から実践的なPython実装例までを丁寧に解説しており、画像生成の全貌に迫る実践的な指南書と言えるでしょう。
画像生成の学びたい人にまず手渡したい本がやっとできたという気持ちになっています。著者の北田さんお疲れ様でした。(僕は気合が足りなくてかけませんでした・・・
前半は初学者でも分かりやすく、図や丁寧なコードで分かりやすく説明されており、読みやすいです。 図に関しても、ただ論文の図を貼っただけみたいなものではなく、今回のために分かりやすく作っていたり、注釈に理解できるように丁寧に解説が書いてあり、感動しました。 後半以降は、最近流行りの「画像編集」の手法や、プロンプト忠実性を高める手法、一貫性モデルなど、研究的な話も読めます。 内容的には少し難しくなるはずですが、とても分かりやすく簡潔に書かれているため、「手法の凄さ」と「設計の意図」がスッと入ってくるようになっており、無駄がないです。
疑問点や修正点は以下の Issue にて管理しています。不明点などございましたら以下を確認し、解決方法が見つからない場合には新しく Issue を作成してください。
https://github.com/py-img-gen/python-image-generation/issues
疑問点は他の読者にとっても疑問になり得ます。積極的な Issue の活用により、他の読者にとっても有益な知識の共有が進み、コミュニティ全体での問題解決が効率的になります。どうぞよろしくお願いします!