作業メモ

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

2024-10-13 19:01:42
2024-10-13 19:03:15
目次

作業内容

  • Core ML Stable Diffusionにモデルデータを追加する

  • 前回作業(https://taiyos.matrix.jp/articles/5)の続き

  • 参考:https://note.com/atatakun/n/n2ed8497d0ab7

手順1:事前準備

1. Xcode確認、準備

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

   (base) taiyo@Mac-mini ~ % xcodebuild -version
   Xcode 15.3
   Build version 15E204a
   (base) taiyo@Mac-mini ~ % sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
   Password:

2. モデルデータのダウンロード

  • 下記URLからモデルデータをダウンロードする

    URL:https://civitai.com/models/65203/disney-pixar-cartoon-type-a
    モデル名:Disney Pixar Cartoon Type A
    ファイル名:disneyPixarCartoon_v10.safetensors

手順2:Stable Diffusionの設定

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

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

   (base) taiyo@Mac-mini ~ % conda activate coreml_sd

2. omegaconfライブラリを取得する

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

   (coreml_sd) taiyo@Mac-mini ml-stable-diffusion % pip install safetensors
   Requirement already satisfied: safetensors in /opt/homebrew/Caskroom/miniforge/base/envs/coreml_sd/lib/python3.9/site-packages (0.4.2)

4. モデルデータの変換スクリプトを取得する

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

   (coreml_sd) taiyo@Mac-mini ml-stable-diffusion % cd ..
   (coreml_sd) taiyo@Mac-mini coreml_sd % wget https://github.com/huggingface/diffusers/raw/main/scripts/convert_original_stable_diffusion_to_diffusers.py

5. スクリプト実行エラーの対策

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

   (coreml_sd) taiyo@Mac-mini coreml_sd % pushd /opt/homebrew/Caskroom/miniforge/base/envs/coreml_sd/lib/python3.9/site-packages/transformers/models/clip/
   /opt/homebrew/Caskroom/miniforge/base/envs/coreml_sd/lib/python3.9/site-packages/transformers/models/clip ~/coreml_sd
   (coreml_sd) taiyo@Mac-mini clip % cp -a feature_extraction_clip.py feature_extraction_clip.py.`date +%Y%m%d-%H%M%S`
   (coreml_sd) taiyo@Mac-mini clip % vim feature_extraction_clip.py
   (coreml_sd) taiyo@Mac-mini clip % diff -U 0 feature_extraction_clip.py.20240324-115609 feature_extraction_clip.py
   --- feature_extraction_clip.py.20240324-115609	2024-03-23 10:16:25
   +++ feature_extraction_clip.py	2024-03-24 11:57:21
   @@ -28,5 +28,5 @@
   --        warnings.warn(
   --            "The class CLIPFeatureExtractor is deprecated and will be removed in version 5 of Transformers. Please"
   --            " use CLIPImageProcessor instead.",
   --            FutureWarning,
   --        )
   +#        warnings.warn(
   +#            "The class CLIPFeatureExtractor is deprecated and will be removed in version 5 of Transformers. Please"
   +#            " use CLIPImageProcessor instead.",
   +#            FutureWarning,
   +#        )
   (coreml_sd) taiyo@Mac-mini clip % popd
   ~/coreml_sd

手順3:モデルデータ変換

1. safetensors形式をdiffusers形式に変換する

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

   (coreml_sd) taiyo@Mac-mini coreml_sd % python -m python_coreml_stable_diffusion.torch2coreml \
          --convert-unet --convert-text-encoder \
          --convert-vae-decoder --convert-vae-encoder --convert-safety-checker \
          --bundle-resources-for-swift-cli --latent-w 96 --latent-h 96 \
          --model-version ./models/v1.5/disneyPixarCartoon_v10.diffusers \
          -o ./models/v1.5/disneyPixarCartoon_v10
   
   scikit-learn version 1.4.1.post1 is not supported. Minimum required version: 0.17. Maximum required version: 1.1.2. Disabling scikit-learn conversion API.
   Torch version 2.2.1 has not been tested with coremltools. You may run into unexpected errors. Torch 2.1.0 is the most recent version that has been tested.
   INFO:__main__:Initializing DiffusionPipeline with ./models/v1.5/disneyPixarCartoon_v10.diffusers..
   [以下略]

手順4:動作確認

1. 画像生成

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

   (coreml_sd) taiyo@Mac-mini coreml_sd % python -m python_coreml_stable_diffusion.pipeline \
          --prompt "a high quality anime of a black-haired girl wearing a bikini swimsuit. Her eye color is black." \ 
          -i ./models/v1.5/disneyPixarCartoon_v10/Resources \
          -o ~/Pictures --compute-unit CPU_AND_GPU --seed 65535 \
          --model-version runwayml/stable-diffusion-v1-5 --model-sources compiled
   
   WARNING:coremltools:scikit-learn version 1.4.1.post1 is not supported. Minimum required version: 0.17. Maximum required version: 1.1.2. Disabling scikit-learn conversion API.
   WARNING:coremltools:Torch version 2.2.1 has not been tested with coremltools. You may run into unexpected errors. Torch 2.1.0 is the most recent version that has been tested.
   INFO:__main__:Setting random seed to 65535
   INFO:__main__:Initializing PyTorch pipe for reference configuration
   [以下略]

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

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

   (coreml_sd) taiyo@Mac-mini coreml_sd % conda deactivate

この記事を書いた人

taiyos