{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "41c4f308-b68a-46b3-8ae7-1c7d46c981e4", "metadata": {}, "outputs": [], "source": [ "# ------------------------------------------------\n", "# Hugging Face에서 다운로드할 모델의 URL\n", "model_urls = '''\n", "https://huggingface.co/nuigurumi/basil_mix/resolve/main/Basil_mix_fixed.safetensors\n", "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix2/AbyssOrangeMix2_hard.safetensors\n", "'''\n", "\n", "vae_urls = '''\n", "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors\n", "'''\n", "\n", "lora_urls = '''\n", "\n", "'''\n", "\n", "embedding_urls = '''\n", "\n", "'''\n", "\n", "# Google Drive에서 다운로드할 모델의 URL\n", "g_model_urls = '''\n", "https://drive.google.com/uc?id=1MTLIN8xkugpjQuY-gcoRSAnTBOITQLvr\n", "'''\n", "\n", "g_model_names = '''\n", "example(do_not_download).safetensors\n", "'''\n", "\n", "g_vae_urls = '''\n", "\n", "'''\n", "\n", "g_vae_names = '''\n", "\n", "'''\n", "\n", "g_lora_urls = '''\n", "\n", "'''\n", "\n", "g_lora_names = '''\n", "\n", "'''\n", "\n", "g_embedding_urls = '''\n", "\n", "'''\n", "\n", "g_embedding_names = '''\n", "\n", "'''\n", "\n", "g_wildcard_urls = '''\n", "\n", "'''\n", "\n", "g_wildcard_names = '''\n", "\n", "'''\n", "\n", "g_config_urls = '''\n", "\n", "'''\n", "\n", "# 기본 프롬프트\n", "positive = 'best quality, ultra high res, (photorealistic:1.4), cinematic film, (depth of field:1.2), (portrait:1.3), (close to face:1.3), beautiful woman, (kpop idol:1.2), (short lower face:1.2), girlish face, (big eyes:0.8), (busty:1.7), (huge breasts), thick thighs, (walking), outdoor, crowded street'\n", "negative = 'paintings, sketches, (film grain:1.6), (worst quality:2), (low quality:2), (normal quality:2), lowres, (wrinkles:1.8), ((monochrome)), ((grayscale)), (glossy skin), fat, skin spots, acnes, skin blemishes, age spot, glans, (saggy breasts:1.8)'\n", "\n", "# 설치할 확장 기능\n", "extensions = '''\n", "https://github.com/36DB/stable-diffusion-webui-localization-ko_KR\n", "https://github.com/mcmonkeyprojects/sd-dynamic-thresholding\n", "https://github.com/dustysys/ddetailer\n", "https://github.com/Mikubill/sd-webui-controlnet\n", "https://github.com/AUTOMATIC1111/stable-diffusion-webui-wildcards\n", "https://github.com/fkunn1326/openpose-editor\n", "https://github.com/jexom/sd-webui-depth-lib\n", "https://github.com/opparco/stable-diffusion-webui-two-shot\n", "'''\n", "# ------------------------------------------------\n", "\n", "import os\n", "import json\n", "import shutil\n", "\n", "home_dir = os.getcwd()\n", "repo_dir = os.path.join(home_dir, 'stable-diffusion-webui')\n", "os.chdir(repo_dir)\n", "\n", "# 원래 있는 sd 모델 삭제\n", "for i in [x for x in os.listdir(home_dir) if x.endswith('.ckpt')]:\n", " os.remove(os.path.join(home_dir, i))\n", "\n", "# Hugging Face에서 모델 다운로드\n", "models_dir = os.path.join(repo_dir, 'models', 'Stable-diffusion')\n", "for i in [x.strip() for x in model_urls.split('\\n') if x]:\n", " ! wget {i} -P {models_dir}\n", "\n", "# Hugging Face에서 vae 다운로드\n", "vae_dir = os.path.join(repo_dir, 'models', 'VAE')\n", "for i in [x.strip() for x in vae_urls.split('\\n') if x]:\n", " ! wget {i} -P {vae_dir}\n", "\n", "# Hugging Face에서 lora 다운로드\n", "lora_dir = os.path.join(repo_dir, 'models', 'Lora')\n", "for i in [x.strip() for x in lora_urls.split('\\n') if x]:\n", " ! wget {i} -P {lora_dir}\n", "\n", "# Hugging Face에서 embedding 다운로드\n", "embedding_dir = os.path.join(repo_dir, 'embeddings')\n", "for i in [x.strip() for x in embedding_urls.split('\\n') if x]:\n", " ! wget {i} -P {embedding_dir}\n", "\n", "# Goggle Drive에서 모델 다운로드\n", "g_model_dir = os.path.join(repo_dir, 'models', 'Stable-diffusion')\n", "for i in [x.strip() for x in g_model_urls.split('\\n') if x]:\n", " ! gdown {i}\n", "for i in [x.strip() for x in g_model_names.split('\\n') if x]:\n", " ! mv {i} {g_model_dir}\n", "\n", "# Goggle Drive에서 vae 다운로드\n", "g_vae_dir = os.path.join(repo_dir, 'models', 'VAE')\n", "for i in [x.strip() for x in g_vae_urls.split('\\n') if x]:\n", " ! gdown {i}\n", "for i in [x.strip() for x in g_vae_names.split('\\n') if x]:\n", " ! mv {i} {g_vae_dir}\n", "\n", "# Goggle Drive에서 lora 다운로드\n", "g_lora_dir = os.path.join(repo_dir, 'models', 'Lora')\n", "for i in [x.strip() for x in g_lora_urls.split('\\n') if x]:\n", " ! gdown {i}\n", "for i in [x.strip() for x in g_lora_names.split('\\n') if x]:\n", " ! mv {i} {g_lora_dir}\n", "\n", "# Goggle Drive에서 embedding 다운로드\n", "g_embedding_dir = os.path.join(repo_dir, 'embeddings')\n", "for i in [x.strip() for x in g_embedding_urls.split('\\n') if x]:\n", " ! gdown {i}\n", "for i in [x.strip() for x in g_embedding_names.split('\\n') if x]:\n", " ! mv {i} {g_embedding_dir}\n", "\n", "# ui-config.json 백업\n", "ui_conf_path = os.path.join(repo_dir, 'ui-config.json')\n", "ui_conf_bk_path = os.path.join(repo_dir, 'ui-config_bk.json')\n", "if not os.path.exists(ui_conf_bk_path):\n", " shutil.copy(ui_conf_path, ui_conf_bk_path)\n", "with open(ui_conf_path, 'r', encoding='utf-8') as f:\n", " orig_ui = json.load(f)\n", " ur_ui = orig_ui\n", "\n", "# ui-config.json 수정\n", "ur_ui['txt2img/Prompt/value'] = positive\n", "ur_ui['txt2img/Negative prompt/value'] = negative\n", "\n", "ur_ui['img2img/Prompt/value'] = positive\n", "ur_ui['img2img/Negative prompt/value'] = negative\n", "\n", "# 파일 저장\n", "with open(ui_conf_path, 'w', encoding='utf-8') as f:\n", " json.dump(ur_ui, f, indent=4)\n", "\n", "# Goggle Drive에서 config 다운로드\n", "for i in [x.strip() for x in g_config_urls.split('\\n') if x]:\n", " ! gdown {i}\n", "\n", "# 필요한 확장 모듈 설치\n", "ext_dir = os.path.join(repo_dir, 'extensions')\n", "os.chdir(ext_dir)\n", "for i in [x.strip() for x in extensions.split('\\n') if x]:\n", " ! git clone {i}\n", "os.chdir(home_dir)\n", "\n", "# Goggle Drive에서 wildcard 다운로드\n", "g_wildcard_dir = os.path.join(repo_dir, 'extensions', 'stable-diffusion-webui-wildcards', 'wildcards')\n", "for i in [x.strip() for x in g_wildcard_urls.split('\\n') if x]:\n", " ! gdown {i}\n", "for i in [x.strip() for x in g_wildcard_names.split('\\n') if x]:\n", " ! mv {i} {g_wildcard_dir}\n", "\n", "!wget https://civitai.com/api/download/models/11739 -O controlnetPreTrained_openposeV10.safetensors\n", "!wget https://civitai.com/api/download/models/11734 -O controlnetPreTrained_depthV10.safetensors\n", "!wget https://civitai.com/api/download/models/11724 -O controlnetPreTrained_cannyV10.safetensors\n", "!mv controlnetPreTrained_openposeV10.safetensors stable-diffusion-webui/extensions/sd-webui-controlnet/models\n", "!mv controlnetPreTrained_depthV10.safetensors stable-diffusion-webui/extensions/sd-webui-controlnet/models\n", "!mv controlnetPreTrained_cannyV10.safetensors stable-diffusion-webui/extensions/sd-webui-controlnet/models\n", "!apt-get update -y\n", "!apt install -y build-essential libgl1 python3-toolz libpython3.10-dev python3-distutils\n", "!pip install --upgrade pip setuptools wheel" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.6" }, "vscode": { "interpreter": { "hash": "c36c8ff63afb68809d72fa6323bde02fb9b90fe01b492d36c13befd021790766" } } }, "nbformat": 4, "nbformat_minor": 5 }