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')