作業メモ

画像自動生成の準備(1)

2024-10-13 18:09:53
2024-10-13 18:38:56
目次

作業内容

  • 画像自動生成のため、Core ML Stable Diffusionを導入する

  • 参考:https://namileriblog.com/python/coreml-stable-diffusion_macos13-1/

手順1:事前準備

1. OS確認

  • ターミナルから下記のコマンド操作を行う

   taiyo@Mac-mini ~ % sw_vers
   ProductName:		macOS
   ProductVersion:		14.2.1
   BuildVersion:		23C71

2. python確認

  • ターミナルから下記のコマンド操作を行う

   taiyo@Mac-mini ~ % python3 -V       
   Python 3.11.7
   taiyo@Mac-mini ~ % pip list                 
   Package    Version
   ---------- ---------
   certifi    2022.9.24
   chardet    5.0.0
   idna       3.4
   pip        23.3.2
   setuptools 68.2.2
   urllib3    1.26.12
   wheel      0.41.3

3. pyenvをインストールする

  • ターミナルから下記のコマンド操作を行う

   taiyo@Mac-mini ~ % brew install pyenv
   ==> Downloading https://formulae.brew.sh/api/formula.jws.json
   ################################################################################################################################# 100.0%
   ==> Downloading https://formulae.brew.sh/api/cask.jws.json
   ################################################################################################################################# 100.0%
   ==> Downloading https://ghcr.io/v2/homebrew/core/pyenv/manifests/2.3.35
   ################################################################################################################################# 100.0%
   ==> Fetching pyenv
   ==> Downloading https://ghcr.io/v2/homebrew/core/pyenv/blobs/sha256:d19469261f788c09404f05872bd75357213ee58e98426e05edb962962d5e1a06
   ################################################################################################################################# 100.0%
   ==> Pouring pyenv--2.3.35.arm64_sonoma.bottle.tar.gz
   🍺  /opt/homebrew/Cellar/pyenv/2.3.35: 1,132 files, 3.4MB
   ==> Running `brew cleanup pyenv`...
   Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
   Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

4. miniforgeをインストールする

  • ターミナルから下記のコマンド操作を行う

   taiyo@Mac-mini ~ % brew install miniforge
   ==> Downloading https://formulae.brew.sh/api/formula.jws.json
   ################################################################################################################################# 100.0%
   ==> Downloading https://formulae.brew.sh/api/cask.jws.json
   ################################################################################################################################# 100.0%
   ==> Caveats
   Please run the following to setup your shell:
     conda init "$(basename "${SHELL}")"
   
   ==> Downloading https://github.com/conda-forge/miniforge/releases/download/23.3.1-1/Miniforge3-23.3.1-1-MacOSX-arm64.sh
   
   [中略]
   
   no change     /opt/homebrew/Caskroom/miniforge/base/etc/profile.d/conda.csh
   modified      /Users/taiyo/.zshrc
   
   ==> For changes to take effect, close and re-open your current shell. <==

5. ターミナルを閉じた後に再度開く

手順2:Stable Diffusionの設定

1. conda仮想環境を準備する

  • ターミナルから下記のコマンド操作を行う

   (base) taiyo@Mac-mini ~ % conda create -n coreml_sd python=3.9 -y 
   Collecting package metadata (current_repodata.json): done
   Solving environment: done
   
   [中略]
   
   Preparing transaction: done
   Verifying transaction: done
   Executing transaction: done
   #
   # To activate this environment, use
   #
   #     $ conda activate coreml_sd
   #
   # To deactivate an active environment, use
   #
   #     $ conda deactivate

2. conda仮想環境を有効にする

  • ターミナルから下記のコマンド操作を行う

   (base) taiyo@Mac-mini ~ % conda activate coreml_sd
   (coreml_sd) taiyo@Mac-mini ~ % 
   (coreml_sd) taiyo@Mac-mini ~ % python -V
   Python 3.9.18

3. Stable Diffusionを取得する

  • ターミナルから下記のコマンド操作を行う

   (coreml_sd) taiyo@Mac-mini ~ % mkdir ~/coreml_sd
   (coreml_sd) taiyo@Mac-mini ~ % cd ~/coreml_sd
   (coreml_sd) taiyo@Mac-mini coreml_sd % git clone https://github.com/apple/ml-stable-diffusion.git
   Cloning into 'ml-stable-diffusion'...
   remote: Enumerating objects: 640, done.
   remote: Counting objects: 100% (392/392), done.
   remote: Compressing objects: 100% (175/175), done.
   remote: Total 640 (delta 300), reused 232 (delta 216), pack-reused 248
   Receiving objects: 100% (640/640), 23.56 MiB | 9.20 MiB/s, done.
   Resolving deltas: 100% (354/354), done.

4. ライブラリを取得する

  • ターミナルから下記のコマンド操作を行う

   (coreml_sd) taiyo@Mac-mini coreml_sd % cd ml-stable-diffusion
   (coreml_sd) taiyo@Mac-mini ml-stable-diffusion % pip install --upgrade pip
   Requirement already satisfied: pip in /opt/homebrew/Caskroom/miniforge/base/envs/coreml_sd/lib/python3.9/site-packages (23.3.2)
   (coreml_sd) taiyo@Mac-mini ml-stable-diffusion % pip install -e .
   Obtaining file:///Users/taiyo/coreml_sd/ml-stable-diffusion
     Preparing metadata (setup.py) ... done
   Collecting coremltools>=7.0b2 (from python_coreml_stable_diffusion==1.1.0)
     Downloading coremltools-7.1-cp39-none-macosx_11_0_arm64.whl.metadata (2.4 kB)
   
   [以下略]

5. ライブラリをアップグレードする

  • ターミナルから下記のコマンド操作を行う

   (coreml_sd) taiyo@Mac-mini ml-stable-diffusion % pip install --upgrade diffusers transformers scipy
   Requirement already satisfied: diffusers in /opt/homebrew/Caskroom/miniforge/base/envs/coreml_sd/lib/python3.9/site-packages (0.25.0)
   Requirement already satisfied: transformers in /opt/homebrew/Caskroom/miniforge/base/envs/coreml_sd/lib/python3.9/site-packages (4.36.2)
   
   [以下略]

6. git-lfsをインストールする

  • ターミナルから下記のコマンド操作を行う

   (coreml_sd) taiyo@Mac-mini ml-stable-diffusion % brew install git-lfs
   ==> Downloading https://formulae.brew.sh/api/formula.jws.json
   ################################################################################################################################# 100.0%
   ==> Downloading https://formulae.brew.sh/api/cask.jws.json
   ################################################################################################################################# 100.0%
   ==> Downloading https://ghcr.io/v2/homebrew/core/git-lfs/manifests/3.4.1
   ################################################################################################################################# 100.0%
   ==> Fetching git-lfs
   ==> Downloading https://ghcr.io/v2/homebrew/core/git-lfs/blobs/sha256:63461c3fbf6ddab9d90c8c6dcb51748a68c4446f222709b970dd688dd78a77f6
   ################################################################################################################################# 100.0%
   ==> Pouring git-lfs--3.4.1.arm64_sonoma.bottle.tar.gz
   ==> Caveats
   Update your git config to finish installation:
   
     # Update global git config
     $ git lfs install
   
     # Update system git config
     $ git lfs install --system
   ==> Summary
   🍺  /opt/homebrew/Cellar/git-lfs/3.4.1: 78 files, 13.1MB
   ==> Running `brew cleanup git-lfs`...
   Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
   Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
   (coreml_sd) taiyo@Mac-mini ml-stable-diffusion % git lfs install
   Updated Git hooks.
   Git LFS initialized.

7. mlpackageを取得する

  • ターミナルから下記のコマンド操作を行う

   (coreml_sd) taiyo@Mac-mini ml-stable-diffusion % cd ~/coreml_sd 
   (coreml_sd) taiyo@Mac-mini coreml_sd % git clone https://huggingface.co/apple/coreml-stable-diffusion-2-base
   Cloning into 'coreml-stable-diffusion-2-base'...
   remote: Enumerating objects: 193, done.
   remote: Total 193 (delta 0), reused 0 (delta 0), pack-reused 193
   Receiving objects: 100% (193/193), 552.85 KiB | 4.16 MiB/s, done.
   Resolving deltas: 100% (40/40), done.
   Filtering content: 100% (72/72), 16.07 GiB | 20.78 MiB/s, done.

8. 動作確認

  • ターミナルから下記のコマンド操作を行う

   (coreml_sd) taiyo@Mac-mini coreml_sd % cd ml-stable-diffusion
   (coreml_sd) taiyo@Mac-mini ml-stable-diffusion % python -m python_coreml_stable_diffusion.pipeline \
   --prompt "a_high_quality_photo_of_an_astronaut_riding_a_horse_in_space" \
   -i ../coreml-stable-diffusion-2-base/original/packages \
   -o ~ --compute-unit CPU_AND_GPU --seed 11 \
   --model-version stabilityai/stable-diffusion-2-base

9.conda仮想環境を無効にする

  • ターミナルから下記のコマンド操作を行う

   (coreml_sd) taiyo@Mac-mini ml-stable-diffusion % conda deactivate                                                    
   (base) taiyo@Mac-mini ml-stable-diffusion %

この記事を書いた人

taiyos