私的AI研究会 > AI_Program
これまで検証してきた結果をもとに、Python で生成 AI プログラムを書く
このプロジェクトの概要と必要な環境設定 |
PS > nvidia-smi Thu Jun 12 10:30:34 2025 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 576.52 Driver Version: 576.52 CUDA Version: 12.9 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Driver-Model | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA GeForce RTX 4070 Ti WDDM | 00000000:01:00.0 On | N/A | | 31% 31C P8 4W / 285W | 1013MiB / 12282MiB | 1% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+
ライブラリ名 | 概要 |
PyTorch | 深層学習向けの機械学習フレームワーク |
Transformers | 自然言語処理の Transformer 系モデルの学習と推論用のライブラリ |
Diffusers | 画像生成などに使われる拡散モデルのライブラリ |
Accelerrate | PyTorch で分散学習や高速化を簡単にするためのライブラリ |
SciPy | 数値計算用のライブラリ |
(base) PS > conda create -n sd_test python=3.11 -y
(base) PS > conda activate sd_test (sd_test) PS >
(sd_test) PS > pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128・CPU 環境の場合
(sd_test) PS > pip install torch torchvision torchaudio
(sd_test) PS > pip install transformers diffusers accelerate scipy
(sd_test) PS > cd /anaconda_win/workspace_3/sd_test
導入Step | インストールコマンド | 備 考 |
Step 8 | pip install matplotlib | |
Step 12 | pip install translate | 自動翻訳パッケージ |
Step 23 | pip install -U peft | |
Step 48 | pip install controlnet_aux | |
pip install opencv-contrib-python | ||
Step 50 | conda install dlib=20.0 -c conda-forge | pip ではインストールできない |
pip install face_recognition | インストール後のエラー対応 → OMP: Error #15: | |
Step 51 | pip install asdff | |
Step 82 | pip install opencv-python ffmpeg-python imageio scikit-image pyaudio | |
sd_rembg | pip install rembg | 背景消去 |
pip install onnxruntime | ||
pip install numpy==2.2.6 | エラーとなる場合 → ImportError: NumPy.. |
:\(ドライブ・ルート) ├─anaconda_win/ │ ├─workspace_3/ │ │ ├─sd_test/ ← プロジェクトの実行フォルダ : ├─StabilityMatrix/ │ └─Data/ │ ├─Models/ │ │ ├─StableDiffusion/ │ │ │ ├─SD1.5/ ← SD1.5 モデルの場所 │ │ │ └─・・・・・・ ← SDXL モデルの場所・「workspace_3/sd_test/」フォルダが配置されているドライブ直下に「StabilityMatrix」フォルダが存在すること
(sd_test) PS > python -c 'import torch;print(torch.cuda.is_available())'
Step | プログラム | GPU | CPU | |||||
RTX 4070Ti | RTX 4060 | RTX 4060L | RTX 3050 | GTX 1050 | i7-1260P | |||
(基本編1)テキストから画像を生成する txt2img | ||||||||
1 | 一番簡単なテキストからの画像生成 | sd_001.py | 00:05 | 00:13 | 00:18 | 00:23 | 06:56 | 09:49 |
2 | 不要な出力抑制と画像サイズの指定 | sd_002.py | 00:09 | 00:22 | 00:32 | 00:53 | 12:33 | 15:23 |
3 | 半精度にして高速化とメモリー節 | sd_003.py | 00:04 | 00:08 | 00:18 | 00:15 | 01:37 | × |
4 | ステップ数を指定して高速化する | sd_004.py | 00:03 | 00:09 | 00:14 | 00:21 | 04:51 | 06:22 |
5 | 複数生成1 - 同じ条件で複数生成 | sd_005.py | 00:12 | 00:30 | 00:43 | 00:55 | 18:39 | 22:19 |
6 | 複数生成2 - 複数プロンプトで生成 | sd_006.py | 00:04 | 00:10 | 00:16 | 00:23 | 05:50 | 07:52 |
7 | 複数生成3 - メモリーの開放 | sd_007.py | 00:12 | 00:30 | 00:51 | 01:00 | 16:20 | 24:14 |
8 | 同じ画像を生成してステップ数の変化をみる | sd_008.py | 00:10 | 00:23 | 00:35 | 01:03 | 14:19 | 09:23 |
9 | プロンプトの重要度を変える | sd_009.py | 00:16 | 00:38 | 00:53 | 01:30 | 17:22 | 25:58 |
10 | CLIPを飛ばす | sd_010.py | 00:25 | 01:00 | 01:24 | 02:24 | 32:02 | 48:24 |
11 | スケジューラー(scheduler)を変える | sd_011.py | 00:20 | 00:58 | 01:05 | 02:11 | 29:05 | 45:27 |
12 | 日本語でプロンプト入力する | sd_012.py | 00:03 | 00:09 | 00:14 | 00:21 | 04:50 | 06:24 |
13 | 生成したくないないものを指定 | sd_013.py | 00:02 | 00:05 | 00:09 | 00:12 | 02:43 | 04:02 |
20 | 【SDXL】SDXL モデルを使用する | sd_020.py | 00:05 | 04:15 | 00:25 | 09:56 | 22:22 | × |
21 | 【SDXL】VAE / スケジューラを設定する方法 | sd_021.py | 00:05 | 00:26 | 00:24 | 10:16 | 21:59 | × |
22 | 【SDXL】望ましくない結果を避ける | sd_022.py | 00:05 | 03:11 | 00:20 | 05:54 | 16:40 | × |
23 | 【SDXL】LoRA を使う | sd_023.py | 00:07 | 03:36 | 00:59 | 08:44 | 20:08 | × |
24 | 【SDXL】LoRAの比率を設定する(fuse_lora) | sd_024.py | 00:32 | 10:47 | 01:53 | 67:01 | 161:30 | × |
(基本編2)画像から画像を生成する img2img | ||||||||
30 | 一番簡単な画像から画像生成 | sd_030.py | 00:01 | 00:01 | 00:05 | 00:03 | 00:19 | × |
31 | 変化の強さを調整する(strength) | sd_031.py | 00:10 | 00:12 | 00:15 | 00:28 | 02:49 | × |
32 | プロンプトの重さ(guidance_scale) | sd_032.py | 00:18 | 00:53 | 01:06 | 02:45 | 14:01 | × |
33 | 【SDXL】モデル合成(refiner) | sd_033.py | 06:00 | 07:03 | 08:21 | 12:20 | 26:46 | × |
34 | 【SDXL】モデル合成(refiner)パラメータを比較 | sd_034.py | 50:00 | 66:59 | 56:26 | 85:33 | 174:54 | × |
35 | 潜在空間の変換(latent) | sd_035.py | 00:02 | 00:02 | 00:27 | 00:29 | 00:41 | × |
36 | 元画像を4倍拡大(x4 upscaler) | sd_036.py | 00:05 | 02:07 | 03:53 | 02:07 | 02:51 | × |
37 | 潜在空間で2倍拡大(x2 latent upscaler) | sd_037.py | 00:04 | 00:07 | 02:42 | 01:35 | 13:17 | × |
38 | 特定の部分だけ修正(inpaint) | sd_038.py | 00:01 | 00:55 | 03:05 | 02:42 | 02:45 | × |
(応用編1)画像から画像を生成する instruct-pix2pix と controlnet instruct-pix2pix / inpaint / outpaint / scribble / openpose | ||||||||
40 | 「instruct-pix2pix」で画像を変換 | sd_040.py | 00:03 | 00:04 | 00:08 | 00:23 | 00:50 | 05:32 |
sd_040.py※ | 00:08 | 00:13 | 00:31 | 08:26 | 18:19 | 24:11 | ||
41 | 「image_guidance_scale」パラメータによる変化 | sd_041.py | 00:12 | 00:26 | 00:24 | 00:47 | 04:52 | 14:23 |
sd_041.py※ | 00:42 | 03:07 | 02:00 | 46:37 | 160:30 | 218:17 | ||
42 | 「controlnet instruct-pix2pix」で画像を変換 | sd_042.py | 00:02 | 00:03 | 00:14 | 00:06 | 00:54 | 06:30 |
43 | 「controlnet_conditioning_scale」パラメータによる変化 | sd_043.py | 00:06 | 00:12 | 00:24 | 00:31 | 04:56 | 17:01 |
44 | 「controlnet inpaint」で画像の一部を変換 | sd_044.py | 00:01 | 00:01 | 00:10 | 00:03 | 00:45 | 05:17 |
45 | 「strength」パラメータによる変化 | sd_045.py | 00:05 | 00:10 | 00:15 | 00:28 | 03:53 | 12:12 |
46 | 「outpaint」画像の外側を書き加える | sd_046.py | 00:01 | 00:02 | 00:12 | 00:06 | 00:45 | 05:15 |
47 | 「controlnet scribble」手描きの線画から画像を生成 | sd_047.py | 00:01 | 00:13 | 00:12 | 00:24 | 00:53 | 05:36 |
48 | 「controlnet openpose」画像から同じ姿勢の画像を生成 | sd_048.py | 00:02 | 00:03 | 00:10 | 00:06 | 01:17 | 05:25 |
(応用編2)顔の崩れを修正する face_recognition と ADetailer controlnet Paint-By-Example / コントロールネット機能のまとめ | ||||||||
50 | 顔の崩れを修正する1 | sd_050.py | 00:01 | 00:03 | 00:10 | 00:05 | 00:37 | 02:12 |
51 | 顔の崩れを修正する2「ADetailer」 | sd_051.py | 00:01 | 00:03 | 00:03 | 00:05 | 00:34 | 03:35 |
52 | 画像の一部を変換する「Paint-By-Example」 | sd_052.py | 00:02 | 00:05 | 00:13 | 00:15 | 02:51 | 04:03 |
53 | 画像を拡大する「4x Upscale」 | sd_053.py | 00:01 | 00:02 | 00:04 | 00:06 | 00:26 | 01:51 |
60 | コントロールネットの機能をまとめる | sd_060.py | 00:02 | 00:07 | 00:16 | 00:15 | 00:40 | 05:18 |
(実践編1)GUI 画像生成のプログラムを書く1 <基本版> txt2img / txt2img+IP-Adapter / img2img / img2img+IP-Adapter | ||||||||
80 | テキストから画像生成(txt2img) | sd_080.py | 00:03 | 00:08 | 00:11 | 00:18 | 03:59 | 05:58 |
テキストから画像生成(txt2img)+ IP-Adapter | sd_080a.py | 00:03 | 01:32 | 00:14 | 07:54 | 05:39 | 06:02 | |
txt2img + IP-Adapter IP-Adaptervscale の変化 | sd_080b.py | 00:30 | 04:10 | 01:52 | 74:31 | 42:16 | 27:40 | |
81 | txt2img / txt2img + IP-Adapter 統合プログラム | sd_081.py | 00:09 | 00:09 | 00:22 | 00:14 | 00:38 | 06:22 |
82 | txt2img GUI プログラム | sd_082.py | - | |||||
90 | 画像から画像生成(img2img) | sd_090.py | 00:05 | 00:08 | 00:23 | 00:37 | 03:06 | 23:42 |
画像から画像生成(img2img)+ IP-Adapter | sd_090a.py | 00:05 | 00:13 | 00:23 | 00:38 | 13:44 | 23:04 | |
91 | img2img / img2img + IP-Adapter 統合プログラム | sd_091.py | 00:08 | 00:07 | 00:16 | 00:12 | 00:17 | 05:20 |
92 | img2img GUI プログラム | sd_092.py | - | |||||
(実践編2)GUI 画像生成のプログラムを書く2 <統合版> | ||||||||
100 | 統合した GUI プログラム ①機能選択版 | sd_100.py | txt2img/img2img/pix2pix/controlnet-pix2pix/inpaint/outpaint/ scribble/openpose/face_recognition/ADetailer/paintex | |||||
101 | 統合した GUI プログラム ②統合版 | sd_101.py | txt2img/img2img/controlnet-pix2pix/inpaint/outpaint/scribble/ openpose/ADetailer/canny/lineart/depth/segment/shuffle/ normal_map/lineart_anime/mlsd/tile/paintex |
: OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.
"C:\Users\<USER>\anaconda3\envs\sd_test\Lib\site-packages\torch\lib\libiomp5md.dll" "C:\Users\<USER>\anaconda3\envs\sd_test\Library\bin\libiomp5md.dll ← 削除"2. 2つ目の「libiomp5md.dll」を削除
: raise ValueError("PEFT backend is required for this method.") ValueError: PEFT backend is required for this method.
(sd_test) PS > pip install -U peft
: cv2.error: OpenCV(4.12.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1284: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvNamedWindow'
pip uninstall opencv-python-headless pip install opencv-python
: File "C:\Users\XXXX\anaconda3\envs\sd_test\Lib\site-packages\controlnet_aux\midas\midas\transforms.py", line 6, in <module> def apply_min_size(sample, size, image_interpolation_method=cv2.INTER_AREA): ^^^^^^^^^^^^^^ AttributeError: module 'cv2' has no attribute 'INTER_AREA'
pip install opencv-contrib-python
パッケージ名 | 特徴 | 注意事項 |
opencv-python-headless | GUI を持たない OpenCV で GUI環境が不要な場面で使用 | GUI関連の関数は使用できなくなる |
opencv-python | Pythonで画像処理やコンピュータビジョンを扱うためのライブラリ | OpenCVの Pythonバインディング |
opencv-contrib-python | opencv-python パッケージに含まれていない追加のモジュールや機能 | 非商用ライセンスのアルゴリズムあり |
: File "C:\Users\XXX\anaconda3\envs\sd_test\Lib\site-packages\numba\__init__.py", line 45, in _ensure_critical_deps raise ImportError(msg) ImportError: Numba needs NumPy 2.2 or less. Got NumPy 2.3.
(sd_test) PS > pip index versions NumPy NumPy (2.3.2) Available versions: 2.3.2, 2.3.1, 2.3.0, 2.2.6, 2.2.5, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.3, 2.1.2, 2.1.1, 2.1.0, 2.0.2, 2.0.1, 2.0.0, 1.26.4, 1.26.3, 1.26.2, 1.26.1, 1.26.0, 1.25.2, 1.25.1, 1.25.0, 1.24.4, 1.24.3, 1.24.2, 1.24.1, 1.24.0, 1.23.5, 1.23.4, 1.23.3, 1.23.2, 1.23.1, 1.23.0, 1.22.4, 1.22.3, 1.22.2, 1.22.1, 1.22.0, 1.21.1, 1.21.0, 1.20.3, 1.20.2, 1.20.1, 1.20.0, 1.19.5, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19.0, 1.18.5, 1.18.4, 1.18.3, 1.18.2, 1.18.1, 1.18.0, 1.17.5, 1.17.4, 1.17.3, 1.17.2, 1.17.1, 1.17.0, 1.16.6, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16.0, 1.15.4, 1.15.3, 1.15.2, 1.15.1, 1.15.0, 1.14.6, 1.14.5, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14.0, 1.13.3, 1.13.1, 1.13.0, 1.12.1, 1.12.0, 1.11.3, 1.11.2, 1.11.1, 1.11.0, 1.10.4, 1.10.2, 1.10.1, 1.10.0.post2, 1.9.3, 1.9.2, 1.9.1, 1.9.0, 1.8.2, 1.8.1, 1.8.0, 1.7.2, 1.7.1, 1.7.0, 1.6.2, 1.6.1, 1.6.0, 1.5.1, 1.5.0, 1.4.1, 1.3.0 INSTALLED: 2.1.2 LATEST: 2.3.2
pip install numpy==2.2.6