Download main_pro.py from RenSilan/DC: direct link, hf CLI and curl.
- Browser
- Download file 17.2 kB
-
https://huggingface.co/RenSilan/DC/resolve/main/main_pro.py
- Command line
-
hf download hf://RenSilan/DC/main_pro.py
-
curl -L -o main_pro.py https://huggingface.co/RenSilan/DC/resolve/main/main_pro.py
17.2 kB
| import argparse #line:1 | |
| import binascii #line:2 | |
| def str_to_bool (O000O00OOO0O0OO00 ):#line:5 | |
| if O000O00OOO0O0OO00 .lower ()in ('yes','true','t','y','1'):#line:6 | |
| return True #line:7 | |
| elif O000O00OOO0O0OO00 .lower ()in ('no','false','f','n','0'):#line:8 | |
| return False #line:9 | |
| else :#line:10 | |
| raise argparse .ArgumentTypeError ('Invalid boolean value: {}'.format (O000O00OOO0O0OO00 ))#line:11 | |
| parser =argparse .ArgumentParser ()#line:14 | |
| parser .add_argument ('--UI',type =str )#line:16 | |
| parser .add_argument ('--Version',type =str )#line:17 | |
| parser .add_argument ('--ControlNet',type =str )#line:18 | |
| parser .add_argument ('--Roop',type =str_to_bool )#line:19 | |
| parser .add_argument ('--Drive_Map',type =str_to_bool )#line:20 | |
| parser .add_argument ('--Key_words',type =str_to_bool )#line:21 | |
| parser .add_argument ('--SadTalker',type =str_to_bool )#line:22 | |
| parser .add_argument ('--Segment_Anything',type =str_to_bool )#line:23 | |
| args =parser .parse_args ()#line:26 | |
| UI =args .UI #line:29 | |
| Roop =args .Roop #line:30 | |
| Version =args .Version #line:31 | |
| ControlNet =args .ControlNet #line:32 | |
| Drive_Map =args .Drive_Map #line:33 | |
| Key_words =args .Key_words #line:34 | |
| Segment_Anything =args .Segment_Anything #line:35 | |
| SadTalker =args .SadTalker #line:36 | |
| import sys #line:40 | |
| import os #line:41 | |
| import json #line:42 | |
| import base64 #line:43 | |
| import importlib .util #line:44 | |
| from IPython import get_ipython #line:45 | |
| from IPython .display import clear_output #line:46 | |
| from google .colab import drive #line:47 | |
| import tensorflow as tf #line:48 | |
| print ("TensorFlow version:",tf .__version__ )#line:51 | |
| if tf .test .gpu_device_name ():#line:52 | |
| drive .mount ('/content/drive')#line:53 | |
| else :#line:54 | |
| raise Exception ("\n请在《代码执行程序》-《更改运行时类型》-设置为GPU~")#line:55 | |
| w =base64 .b64decode (("d2VidWk=").encode ('ascii')).decode ('ascii')#line:57 | |
| sdw =base64 .b64decode (("c3RhYmxlLWRpZmZ1c2lvbi13ZWJ1aQ==").encode ('ascii')).decode ('ascii')#line:58 | |
| wb =f'/content/Gm'#line:61 | |
| gwb =f'/content/drive/MyDrive/SD_DATA'#line:62 | |
| get_ipython ().run_line_magic ('cd','/content')#line:64 | |
| get_ipython ().run_line_magic ('env','TF_CPP_MIN_LOG_LEVEL=1')#line:65 | |
| def cloudDriveSync (O00O0O00OO00O00O0 ,OO0OOOO0000OOO000 ='',OO00O0OOO0O0O0000 =False ):#line:68 | |
| if not os .path .exists (O00O0O00OO00O00O0 ):#line:70 | |
| get_ipython ().system (f'mkdir {O00O0O00OO00O00O0}')#line:72 | |
| if not OO00O0OOO0O0O0000 :#line:75 | |
| return #line:76 | |
| get_ipython ().system (f'rm -rf {OO0OOOO0000OOO000}')#line:79 | |
| get_ipython ().system (f'ln -s {O00O0O00OO00O00O0} {OO0OOOO0000OOO000}')#line:81 | |
| def initCloudDrive ():#line:84 | |
| cloudDriveSync (f'{gwb}')#line:85 | |
| cloudDriveSync (f'{gwb}/Config')#line:86 | |
| cloudDriveSync (f'{gwb}/Models',f'{wb}/models/Stable-diffusion',Drive_Map )#line:87 | |
| cloudDriveSync (f'{gwb}/Lora',f'{wb}/models/Lora',Drive_Map )#line:88 | |
| cloudDriveSync (f'{gwb}/LyCORIS',f'{wb}/models/LyCORIS',Drive_Map )#line:89 | |
| cloudDriveSync (f'{gwb}/hypernetworks',f'{wb}/models/hypernetworks',Drive_Map )#line:90 | |
| cloudDriveSync (f'{gwb}/Vae',f'{wb}/models/VAE',Drive_Map )#line:91 | |
| cloudDriveSync (f'{gwb}/Outputs',f'{wb}/outputs',Drive_Map )#line:92 | |
| if not os .path .exists (f'{gwb}/Config/config.json'):#line:96 | |
| get_ipython ().system (f'wget -O {gwb}/Config/config.json "https://huggingface.co/gmk123/main/raw/main/config.json"')#line:97 | |
| if not os .path .exists (f'{gwb}/styles.csv'):#line:99 | |
| get_ipython ().system (f'wget -O {gwb}/styles.csv "https://huggingface.co/gmk123/main/raw/main/styles.csv"')#line:101 | |
| def gitDownload (O0O000OO00OOOOOO0 ,OOOO0O00OOOO0O0OO ):#line:104 | |
| if os .path .exists (OOOO0O00OOOO0O0OO ):#line:105 | |
| return #line:106 | |
| get_ipython ().system (f'git clone {O0O000OO00OOOOOO0} {OOOO0O00OOOO0O0OO}')#line:108 | |
| def installAdditional ():#line:111 | |
| O0OO000O000O00O0O =[f'https://github.com/camenduru/{sdw}-images-browser',f'https://github.com/camenduru/sd-{w}-tunnels',f'https://github.com/etherealxx/batchlinks-{w}',f'https://github.com/camenduru/sd-civitai-browser',f'https://github.com/AUTOMATIC1111/{sdw}-rembg',f'https://github.com/thomasasfk/sd-{w}-aspect-ratio-helper',f'https://github.com/hanamizuki-ai/{sdw}-localization-zh_Hans',f'https://github.com/kohya-ss/sd-{w}-additional-networks',f'https://github.com/fkunn1326/openpose-editor',f'https://github.com/hnmr293/posex',f'https://github.com/s9roll7/ebsynth_utility',f'https://github.com/ashen-sensored/{sdw}-two-shot',f'https://github.com/nonnonstop/sd-{w}-3d-open-pose-editor',f'https://github.com/camenduru/{sdw}-huggingface',f'https://github.com/camenduru/{sdw}-catppuccin',f'https://github.com/IDEA-Research/DWPose',f'https://github.com/KohakuBlueleaf/a1111-sd-{w}-lycoris',f'https://github.com/Physton/sd-{w}-prompt-all-in-one',]#line:144 | |
| for OOO0OO000OO000OOO in O0OO000O000O00O0O :#line:145 | |
| OO000OO00OOOOOO00 =OOO0OO000OO000OOO .split ('/')[-1 ]#line:147 | |
| if 'github'in OOO0OO000OO000OOO :#line:149 | |
| get_ipython ().system (f'git clone {OOO0OO000OO000OOO} {wb}/extensions/{OO000OO00OOOOOO00}')#line:150 | |
| get_ipython ().system (f'wget https://raw.githubusercontent.com/camenduru/{sdw}-scripts/main/run_n_times.py -O {wb}/scripts/run_n_times.py')#line:152 | |
| get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/embed/upscale/resolve/main/4x-UltraSharp.pth -d {wb}/models/ESRGAN -o 4x-UltraSharp.pth')#line:153 | |
| get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth -d {wb}/models/ESRGAN -o RealESRGAN_x4plus_anime_6B.pth')#line:154 | |
| gitDownload (f'https://huggingface.co/embed/negative',f'{wb}/embeddings/negative')#line:160 | |
| get_ipython ().system (f'rm -rf {wb}/embeddings/negative/.git')#line:161 | |
| get_ipython ().system (f'rm {wb}/embeddings/negative/.gitattributes')#line:162 | |
| gitDownload (f'https://huggingface.co/embed/lora',f'{wb}/models/Lora/positive')#line:164 | |
| get_ipython ().system (f'rm -rf {wb}/models/Lora/positive/.git')#line:165 | |
| get_ipython ().system (f'rm {wb}/models/Lora/positive/.gitattributes')#line:166 | |
| gitDownload (f'https://github.com/DominikDoom/a1111-sd-{w}-tagcomplete',f'{wb}/extensions/a1111-sd-{w}-tagcomplete')#line:169 | |
| get_ipython ().system (f'rm -f {wb}/extensions/a1111-sd-{w}-tagcomplete/tags/danbooru.csv')#line:170 | |
| get_ipython ().system (f'wget https://beehomefile.oss-cn-beijing.aliyuncs.com/20210114/danbooru.csv -O {wb}/extensions/a1111-sd-{w}-tagcomplete/tags/danbooru.csv')#line:171 | |
| gitDownload (f'https://github.com/toriato/{sdw}-wd14-tagger',f'{wb}/extensions/{sdw}-wd14-tagge')#line:172 | |
| gitDownload (f'https://github.com/Bing-su/adetailer',f'{wb}/extensions/adetailer')#line:178 | |
| gitDownload (f'https://github.com/antfu/sd-{w}-qrcode-toolkit',f'{wb}/extensions/sd-{w}-qrcode-toolkit')#line:179 | |
| gitDownload (f'https://github.com/yankooliveira/sd-{w}-photopea-embed',f'{wb}/extensions/sd-{w}-photopea-embed')#line:180 | |
| gitDownload (f'https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111',f'{wb}/extensions/multidiffusion-upscaler-for-automatic1111')#line:182 | |
| if Roop :#line:184 | |
| gitDownload (f'https://github.com/Gourieff/sd-{w}-reactor',f'{wb}/extensions/sd-{w}-reactor')#line:186 | |
| print ('Roop换脸启用')#line:188 | |
| else :#line:189 | |
| print ('Roop换脸不启用')#line:190 | |
| O0OO000OO00O0O0OO =['control_v11e_sd15_ip2p.pth','control_v11e_sd15_shuffle.pth','control_v11f1e_sd15_tile.pth','control_v11f1p_sd15_depth.pth','control_v11p_sd15_canny.pth','control_v11p_sd15_inpaint.pth','control_v11p_sd15_lineart.pth','control_v11p_sd15_mlsd.pth','control_v11p_sd15_normalbae.pth','control_v11p_sd15_openpose.pth','control_v11p_sd15_scribble.pth','control_v11p_sd15_seg.pth','control_v11p_sd15_softedge.pth','control_v11p_sd15s2_lineart_anime.pth',]#line:208 | |
| get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-controlnet')#line:209 | |
| if ControlNet =="Colab":#line:211 | |
| gitDownload (f'https://github.com/Mikubill/sd-{w}-controlnet',f'{wb}/extensions/sd-{w}-controlnet')#line:212 | |
| for O000000OO000O000O in O0OO000OO00O0O0OO :#line:213 | |
| get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/{O000000OO000O000O} -d {wb}/extensions/sd-{w}-controlnet/models -o {O000000OO000O000O}')#line:214 | |
| elif ControlNet =="Google_Drive":#line:217 | |
| cloudDriveSync (f'{gwb}/CntModels')#line:218 | |
| gitDownload (f'https://github.com/Mikubill/sd-{w}-controlnet',f'{wb}/extensions/sd-{w}-controlnet')#line:219 | |
| for O000000OO000O000O in O0OO000OO00O0O0OO :#line:220 | |
| if not os .path .exists (f'{gwb}/CntModels/{O000000OO000O000O}'):#line:221 | |
| get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/{O000000OO000O000O} -d {gwb}/CntModels -o {O000000OO000O000O}')#line:222 | |
| print ("创建扩展",f'{O000000OO000O000O}')#line:223 | |
| else :#line:224 | |
| print ("扩展存在",f'{O000000OO000O000O}')#line:225 | |
| for O000000OO000O000O in os .listdir (f'{gwb}/CntModels'):#line:227 | |
| get_ipython ().system (f'ln -s {gwb}/CntModels/{O000000OO000O000O} {wb}/extensions/sd-{w}-controlnet/models')#line:229 | |
| elif ControlNet =="No":#line:231 | |
| print ("不使用 ControlNet")#line:232 | |
| if UI =="Kitchen_Ui":#line:235 | |
| gitDownload (f'https://github.com/canisminor1990/sd-{w}-kitchen-theme-legacy',f'{wb}/extensions/sd-{w}-kitchen-theme-legacy')#line:236 | |
| print ("Kitchen界面插件启用")#line:237 | |
| elif UI =="Lobe_Ui":#line:238 | |
| gitDownload (f'https://github.com/canisminor1990/sd-web-ui-kitchen-theme',f'{wb}/extensions/sd-web-ui-kitchen-theme')#line:239 | |
| print ("Lobe界面插件启用")#line:240 | |
| elif UI =="No":#line:241 | |
| print ("UI插件不启用")#line:242 | |
| if Key_words :#line:245 | |
| cloudDriveSync (f'{gwb}/Storage',f'{wb}/extensions/sd-{w}-prompt-all-in-one/storage',Drive_Map )#line:246 | |
| print ("关键词插件启用")#line:247 | |
| else :#line:248 | |
| get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-prompt-all-in-one')#line:249 | |
| print ("关键词插件不启用")#line:250 | |
| if SadTalker :#line:253 | |
| if not os .path .exists (f'{wb}/extensions/SadTalker'):#line:254 | |
| get_ipython ().system (f'git clone https://github.com/OpenTalker/SadTalker {wb}/extensions/SadTalker')#line:255 | |
| get_ipython ().system (f'git -C {wb}/extensions/SadTalker clone https://huggingface.co/gmk123/checkpoints')#line:256 | |
| get_ipython ().system (f'git -C {wb}/models clone https://huggingface.co/gmk123/GFPGAN')#line:257 | |
| get_ipython ().system (f'git clone https://github.com/numz/sd-wav2lip-uhq {wb}/extensions/sd-wav2lip-uhq')#line:259 | |
| get_ipython ().system (f'wget https://huggingface.co/gmk123/wav2lip/resolve/main/wav2lip.pth -O {wb}/extensions/sd-wav2lip-uhq/scripts/wav2lip/checkpoints/wav2lip.pth')#line:260 | |
| get_ipython ().system (f'wget https://huggingface.co/gmk123/wav2lip/resolve/main/wav2lip_gan.pth -O {wb}/extensions/sd-wav2lip-uhq/scripts/wav2lip/checkpoints/wav2lip_gan.pth')#line:261 | |
| get_ipython ().system (f'wget https://huggingface.co/gmk123/wav2lip/resolve/main/s3fd-619a316812.pth -O {wb}/extensions/sd-wav2lip-uhq/scripts/wav2lip/face_detection/detection/sfd/s3fd-619a316812.pth')#line:262 | |
| get_ipython ().system (f'wget https://huggingface.co/gmk123/wav2lip/resolve/main/shape_predictor_68_face_landmarks.dat -O {wb}/extensions/sd-wav2lip-uhq/scripts/wav2lip/predicator/shape_predictor_68_face_landmarks.dat')#line:263 | |
| get_ipython ().system (f'wget https://huggingface.co/ezioruan/inswapper_128.onnx/resolve/main/inswapper_128.onnx -O {wb}/extensions/sd-wav2lip-uhq/scripts/faceswap/model/inswapper_128.onnx')#line:264 | |
| print ("SadTalker启用")#line:266 | |
| else :#line:267 | |
| get_ipython ().system (f'rm -rf {wb}/extensions/SadTalker')#line:268 | |
| print ("SadTalker不启用")#line:269 | |
| if Segment_Anything :#line:272 | |
| get_ipython ().system (f'git clone https://github.com/continue-revolution/sd-{w}-segment-anything {wb}/extensions/sd-{w}-segment-anything')#line:273 | |
| get_ipython ().system (f'wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth -O {wb}/extensions/sd-{w}-segment-anything/models/sam/sam_vit_l_0b3195.pth')#line:276 | |
| get_ipython ().system (f'wget https://huggingface.co/ShilongLiu/GroundingDINO/resolve/main/groundingdino_swinb_cogcoor.pth -O {wb}/extensions/sd-{w}-segment-anything/models/grounding-dino/groundingdino_swinb_cogcoor.pth')#line:277 | |
| print ("智能抠图插件启用")#line:289 | |
| else :#line:290 | |
| get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-segment-anything')#line:291 | |
| print ("智能抠图插件不启用")#line:292 | |
| def initLocal ():#line:295 | |
| get_ipython ().system (f'apt -y update -qq')#line:297 | |
| get_ipython ().system (f'wget https://huggingface.co/gmk123/sd_config/resolve/main/libtcmalloc_minimal.so.4 -O /content/libtcmalloc_minimal.so.4')#line:298 | |
| get_ipython ().run_line_magic ('env','LD_PRELOAD=/content/libtcmalloc_minimal.so.4')#line:299 | |
| get_ipython ().system (f'apt -y install -qq aria2 libcairo2-dev pkg-config python3-dev')#line:302 | |
| get_ipython ().system (f'pip install -q torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2+cu118 torchtext==0.15.2 torchdata==0.6.1 --extra-index-url https://download.pytorch.org/whl/cu118 -U')#line:303 | |
| get_ipython ().system (f'pip install -q xformers==0.0.20 triton==2.0.0 gradio_client==0.2.7 -U')#line:304 | |
| if Version =="A1111":#line:307 | |
| get_ipython ().system (f'git clone -b master https://github.com/AUTOMATIC1111/{sdw} {wb}')#line:308 | |
| elif Version =="V2.5":#line:309 | |
| get_ipython ().system (f'git clone -b v2.5 https://github.com/camenduru/{sdw} {wb}')#line:310 | |
| elif Version =="V2.4":#line:311 | |
| get_ipython ().system (f'git clone -b v2.4 https://github.com/camenduru/{sdw} {wb}')#line:312 | |
| get_ipython ().system (f'git -C {wb}/repositories/stable-diffusion-stability-ai reset --hard')#line:314 | |
| initCloudDrive ()#line:317 | |
| installAdditional ()#line:320 | |
| get_ipython ().system (f'rm -f {wb}/config.json')#line:323 | |
| get_ipython ().system (f'ln -s {gwb}/Config/config.json {wb}/config.json')#line:326 | |
| if os .path .exists (f"{gwb}/styles.csv"):#line:329 | |
| get_ipython ().system (f'ln -s {gwb}/styles.csv {wb}/styles.csv')#line:330 | |
| if os .path .exists (f"{wb}/extensions/sd-{w}-additional-networks"):#line:333 | |
| cloudDriveSync (f'{gwb}/Lora',f'{wb}/extensions/sd-{w}-additional-networks/models/lora',Drive_Map )#line:334 | |
| if len (os .listdir (f"{gwb}/Models"))==0 :#line:338 | |
| get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/ckpt/chilloutmix/resolve/main/chilloutmix_NiPrunedFp32Fix.safetensors -d {wb}/models/Stable-diffusion -o chilloutmix_NiPrunedFp32Fix.safetensors')#line:340 | |
| if len (os .listdir (f"{gwb}/Vae"))==0 :#line:343 | |
| get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -d {wb}/models/VAE -o vae-ft-mse-840000-ema-pruned.safetensors')#line:345 | |
| get_ipython ().system (f'aria2c --console-log-level=error -c -x 16 -s 16 -k 1M https://huggingface.co/embed/upscale/resolve/main/4x-UltraSharp.pth -d {wb}/models/ESRGAN -o 4x-UltraSharp.pth')#line:348 | |
| OOOO000O000OOOOOO =os .path .join (wb ,"models","Stable-diffusion")#line:350 | |
| if any (OOOOOOO0O0OO0O0OO .endswith (('.ckpt','.safetensors'))for OOOOOOO0O0OO0O0OO in os .listdir (OOOO000O000OOOOOO )):#line:351 | |
| get_ipython ().system (f'sed -i \'s@weight_load_location =.*@weight_load_location = "cuda"@\' {wb}/modules/shared.py')#line:352 | |
| get_ipython ().system (f'sed -i "s@os.path.splitext(model_file)@os.path.splitext(model_file); map_location=\'cuda\'@" {wb}/modules/sd_models.py')#line:353 | |
| get_ipython ().system (f'sed -i "s@map_location=\'cpu\'@map_location=\'cuda\'@" {wb}/modules/extras.py')#line:354 | |
| get_ipython ().system (f"sed -i 's@ui.create_ui().*@ui.create_ui();shared.demo.queue(concurrency_count=999999,status_update_rate=0.1)@' {wb}/webui.py")#line:355 | |
| def run (O0OO0OO0OOOOO0O0O ):#line:358 | |
| clear_output ()#line:359 | |
| get_ipython ().run_line_magic ('cd',f'{wb}')#line:360 | |
| get_ipython ().system (f'python {O0OO0OO0OOOOO0O0O} --listen --xformers --enable-insecure-extension-access --theme dark --gradio-queue --no-half-vae --disable-console-progressbars --multiple --api --cors-allow-origins=*')#line:361 | |
| if os .path .exists (f'{wb}'):#line:364 | |
| run ('webui.py')#line:365 | |
| else :#line:366 | |
| initLocal ()#line:368 | |
| run ('launch.py') |