File size: 17,303 Bytes
5c93ad4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | import argparse #line:1
import binascii #line:2
def str_to_bool (OO0OO00OO0OO00000 ):#line:5
if OO0OO00OO0OO00000 .lower ()in ('yes','true','t','y','1'):#line:6
return True #line:7
elif OO0OO00OO0OO00000 .lower ()in ('no','false','f','n','0'):#line:8
return False #line:9
else :#line:10
raise argparse .ArgumentTypeError ('Invalid boolean value: {}'.format (OO0OO00OO0OO00000 ))#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
l =base64 .b64decode (("bGF1bmNo").encode ('ascii')).decode ('ascii')#line:58
sdw =base64 .b64decode (("c3RhYmxlLWRpZmZ1c2lvbi13ZWJ1aQ==").encode ('ascii')).decode ('ascii')#line:59
wb =f'/root/main'#line:62
sai =base64 .b64decode (("c3RhYmxlLWRpZmZ1c2lvbi1zdGFiaWxpdHktYWk=").encode ('ascii')).decode ('ascii')#line:63
sd =base64 .b64decode (("U3RhYmxlLWRpZmZ1c2lvbg==").encode ('ascii')).decode ('ascii')#line:64
gwb =f'/content/drive/MyDrive/SD_DATA'#line:65
get_ipython ().run_line_magic ('cd','/content')#line:67
get_ipython ().run_line_magic ('env','TF_CPP_MIN_LOG_LEVEL=1')#line:68
def cloudDriveSync (O000O00OOOOO000O0 ,localPath ='',sync =False ):#line:71
if not os .path .exists (O000O00OOOOO000O0 ):#line:73
get_ipython ().system (f'mkdir {O000O00OOOOO000O0}')#line:75
if not sync :#line:78
return #line:79
get_ipython ().system (f'rm -rf {localPath}')#line:82
get_ipython ().system (f'ln -s {O000O00OOOOO000O0} {localPath}')#line:84
def initCloudDrive ():#line:87
cloudDriveSync (f'{gwb}')#line:88
cloudDriveSync (f'{gwb}/Config')#line:89
cloudDriveSync (f'{gwb}/Models',f'{wb}/models/{sd}',Drive_Map )#line:90
cloudDriveSync (f'{gwb}/Lora',f'{wb}/models/Lora',Drive_Map )#line:91
cloudDriveSync (f'{gwb}/LyCORIS',f'{wb}/models/LyCORIS',Drive_Map )#line:92
cloudDriveSync (f'{gwb}/Vae',f'{wb}/models/VAE',Drive_Map )#line:94
cloudDriveSync (f'{gwb}/Outputs',f'{wb}/outputs',Drive_Map )#line:95
if not os .path .exists (f'{gwb}/Config/config.json'):#line:99
get_ipython ().system (f'wget -O {gwb}/Config/config.json "https://huggingface.co/gmk123/colab/raw/main/config.json"')#line:100
if not os .path .exists (f'{gwb}/styles.csv'):#line:102
get_ipython ().system (f'wget -O {gwb}/styles.csv "https://huggingface.co/gmk123/colab/raw/main/styles.csv"')#line:104
def gitDownload (O00OOO0OO0OO0OOOO ,OOO00O0O0OO0OOOOO ):#line:107
if os .path .exists (OOO00O0O0OO0OOOOO ):#line:108
return #line:109
get_ipython ().system (f'git clone {O00OOO0OO0OO0OOOO} {OOO00O0O0OO0OOOOO}')#line:111
def installAdditional ():#line:114
O0000O0O00000OOO0 =[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:147
for O0OO0000OO00O00OO in O0000O0O00000OOO0 :#line:148
OOO00OOO00OO0OO00 =O0OO0000OO00O00OO .split ('/')[-1 ]#line:150
if 'github'in O0OO0000OO00O00OO :#line:152
get_ipython ().system (f'git clone {O0OO0000OO00O00OO} {wb}/extensions/{OOO00OOO00OO0OO00}')#line:153
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:155
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:156
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:157
gitDownload (f'https://huggingface.co/embed/negative',f'{wb}/embeddings/negative')#line:163
get_ipython ().system (f'rm -rf {wb}/embeddings/negative/.git')#line:164
get_ipython ().system (f'rm {wb}/embeddings/negative/.gitattributes')#line:165
gitDownload (f'https://huggingface.co/embed/lora',f'{wb}/models/Lora/positive')#line:167
get_ipython ().system (f'rm -rf {wb}/models/Lora/positive/.git')#line:168
get_ipython ().system (f'rm {wb}/models/Lora/positive/.gitattributes')#line:169
gitDownload (f'https://github.com/DominikDoom/a1111-sd-{w}-tagcomplete',f'{wb}/extensions/a1111-sd-{w}-tagcomplete')#line:172
get_ipython ().system (f'rm -f {wb}/extensions/a1111-sd-{w}-tagcomplete/tags/danbooru.csv')#line:173
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:174
gitDownload (f'https://github.com/toriato/{sdw}-wd14-tagger',f'{wb}/extensions/{sdw}-wd14-tagge')#line:175
gitDownload (f'https://github.com/Bing-su/adetailer',f'{wb}/extensions/adetailer')#line:179
gitDownload (f'https://github.com/antfu/sd-{w}-qrcode-toolkit',f'{wb}/extensions/sd-{w}-qrcode-toolkit')#line:180
gitDownload (f'https://github.com/yankooliveira/sd-{w}-photopea-embed',f'{wb}/extensions/sd-{w}-photopea-embed')#line:181
gitDownload (f'https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111',f'{wb}/extensions/multidiffusion-upscaler-for-automatic1111')#line:183
if Roop :#line:185
gitDownload (f'https://github.com/Gourieff/sd-{w}-reactor',f'{wb}/extensions/sd-{w}-reactor')#line:187
print ('Roop换脸启用')#line:189
else :#line:190
print ('Roop换脸不启用')#line:191
O0000O00000OO00OO =['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:209
get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-controlnet')#line:210
if ControlNet =="Colab":#line:212
gitDownload (f'https://github.com/Mikubill/sd-{w}-controlnet',f'{wb}/extensions/sd-{w}-controlnet')#line:213
for O0O00000O0OO00O0O in O0000O00000OO00OO :#line:214
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/{O0O00000O0OO00O0O} -d {wb}/extensions/sd-{w}-controlnet/models -o {O0O00000O0OO00O0O}')#line:215
elif ControlNet =="Google_Drive":#line:218
cloudDriveSync (f'{gwb}/CntModels')#line:219
gitDownload (f'https://github.com/Mikubill/sd-{w}-controlnet',f'{wb}/extensions/sd-{w}-controlnet')#line:220
for O0O00000O0OO00O0O in O0000O00000OO00OO :#line:221
if not os .path .exists (f'{gwb}/CntModels/{O0O00000O0OO00O0O}'):#line:222
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/{O0O00000O0OO00O0O} -d {gwb}/CntModels -o {O0O00000O0OO00O0O}')#line:223
print ("创建扩展",f'{O0O00000O0OO00O0O}')#line:224
else :#line:225
print ("扩展存在",f'{O0O00000O0OO00O0O}')#line:226
for O0O00000O0OO00O0O in os .listdir (f'{gwb}/CntModels'):#line:228
get_ipython ().system (f'ln -s {gwb}/CntModels/{O0O00000O0OO00O0O} {wb}/extensions/sd-{w}-controlnet/models')#line:230
elif ControlNet =="No":#line:232
print ("不使用 ControlNet")#line:233
if UI =="Kitchen_Ui":#line:236
gitDownload (f'https://github.com/canisminor1990/sd-{w}-kitchen-theme-legacy',f'{wb}/extensions/sd-{w}-kitchen-theme-legacy')#line:237
print ("Kitchen界面插件启用")#line:238
elif UI =="Lobe_Ui":#line:239
gitDownload (f'https://github.com/canisminor1990/sd-web-ui-kitchen-theme',f'{wb}/extensions/sd-web-ui-kitchen-theme')#line:240
print ("Lobe界面插件启用")#line:241
elif UI =="No":#line:242
print ("UI插件不启用")#line:243
if Key_words :#line:246
cloudDriveSync (f'{gwb}/Storage',f'{wb}/extensions/sd-{w}-prompt-all-in-one/storage',Drive_Map )#line:247
print ("关键词插件启用")#line:248
else :#line:249
get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-prompt-all-in-one')#line:250
print ("关键词插件不启用")#line:251
if SadTalker :#line:254
if not os .path .exists (f'{wb}/extensions/SadTalker'):#line:255
get_ipython ().system (f'git clone https://github.com/OpenTalker/SadTalker {wb}/extensions/SadTalker')#line:256
get_ipython ().system (f'git -C {wb}/extensions/SadTalker clone https://huggingface.co/gmk123/checkpoints')#line:257
get_ipython ().system (f'git -C {wb}/models clone https://huggingface.co/gmk123/GFPGAN')#line:258
get_ipython ().system (f'git clone https://github.com/numz/sd-wav2lip-uhq {wb}/extensions/sd-wav2lip-uhq')#line:260
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:261
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:262
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:263
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:264
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:265
print ("SadTalker启用")#line:267
else :#line:268
get_ipython ().system (f'rm -rf {wb}/extensions/SadTalker')#line:269
print ("SadTalker不启用")#line:270
if Segment_Anything :#line:273
get_ipython ().system (f'git clone https://github.com/continue-revolution/sd-{w}-segment-anything {wb}/extensions/sd-{w}-segment-anything')#line:274
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:277
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:278
print ("智能抠图插件启用")#line:290
else :#line:291
get_ipython ().system (f'rm -rf {wb}/extensions/sd-{w}-segment-anything')#line:292
print ("智能抠图插件不启用")#line:293
def initLocal ():#line:296
get_ipython ().system (f'apt -y update -qq')#line:298
get_ipython ().system (f'wget https://huggingface.co/gmk123/colab/resolve/main/libtcmalloc_minimal.so.4 -O /content/libtcmalloc_minimal.so.4')#line:299
get_ipython ().run_line_magic ('env',f'LD_PRELOAD=/content/libtcmalloc_minimal.so.4')#line:300
get_ipython ().system (f'apt -y install -qq aria2 libcairo2-dev pkg-config python3-dev')#line:303
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:304
get_ipython ().system (f'pip install -q xformers==0.0.20 triton==2.0.0 -U')#line:305
if Version =="A1111":#line:308
get_ipython ().system (f'git clone -b v2.5 https://github.com/camenduru/{sdw} {wb}')#line:309
elif Version =="V2.5":#line:310
get_ipython ().system (f'git clone -b v2.5 https://github.com/camenduru/{sdw} {wb}')#line:311
elif Version =="V2.4":#line:312
get_ipython ().system (f'git clone -b v2.4 https://github.com/camenduru/{sdw} {wb}')#line:313
get_ipython ().system (f'git -C {wb}/repositories/{sai} reset --hard')#line:315
initCloudDrive ()#line:318
installAdditional ()#line:321
get_ipython ().system (f'rm -f {wb}/config.json')#line:324
get_ipython ().system (f'ln -s {gwb}/Config/config.json {wb}/config.json')#line:327
if os .path .exists (f"{gwb}/styles.csv"):#line:330
get_ipython ().system (f'ln -s {gwb}/styles.csv {wb}/styles.csv')#line:331
if os .path .exists (f"{wb}/extensions/sd-{w}-additional-networks"):#line:334
cloudDriveSync (f'{gwb}/Lora',f'{wb}/extensions/sd-{w}-additional-networks/models/lora',Drive_Map )#line:335
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/{sd} -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
O00O0000O00OO00OO =os .path .join (wb ,"models",sd )#line:350
if any (O0O0OOOOOO0OO0O00 .endswith (('.ckpt','.safetensors'))for O0O0OOOOOO0OO0O00 in os .listdir (O00O0000O00OO00OO )):#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}/{w}.py")#line:355
def run (O0000OOO000OOOOOO ):#line:358
clear_output ()#line:359
get_ipython ().run_line_magic ('cd',f'{wb}')#line:360
get_ipython ().system (f'python {O0000OOO000OOOOOO} --ngrok 2VYRSQJASKBEo5BkP4YZIU7fWVN_3xoNLnayrYf2tFZTBiWXU --api --disable-safe-unpickle --enable-insecure-extension-access --no-download-sd-model --no-half-vae --xformers --disable-console-progressbars --theme dark --cors-allow-origins=*')#line:361
if os .path .exists (f'{wb}'):#line:364
run (f'{w}.py')#line:365
else :#line:366
initLocal ()#line:368
run (f'{l}.py') |