Skip to content

Commit c03e07e

Browse files
committed
refactoring
1 parent 982138c commit c03e07e

File tree

4 files changed

+705
-633
lines changed

4 files changed

+705
-633
lines changed

javascript/sam.js

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,27 @@ function switchToInpaintUpload() {
2121
return arguments;
2222
}
2323

24+
function samSpecialTabForUI() {
25+
return 'sam_special_tab_for_ui' in opts && opts.sam_special_tab_for_ui;
26+
}
27+
2428
function samTabPrefix() {
25-
const tabs = gradioApp().querySelector('#tabs');
26-
if (tabs) {
27-
const buttons = tabs.querySelectorAll('button');
28-
if (buttons) {
29-
if (buttons[0].className.includes("selected")) {
30-
return "txt2img_sam_"
31-
} else if (buttons[1].className.includes("selected")) {
32-
return "img2img_sam_"
29+
if (samSpecialTabForUI()) {
30+
return "img2img_sam_";
31+
} else {
32+
const tabs = gradioApp().querySelector('#tabs');
33+
if (tabs) {
34+
const buttons = tabs.querySelectorAll('button');
35+
if (buttons) {
36+
if (buttons[0].className.includes("selected")) {
37+
return "txt2img_sam_";
38+
} else if (buttons[1].className.includes("selected")) {
39+
return "img2img_sam_";
40+
}
3341
}
3442
}
43+
return "_sam_";
3544
}
36-
return "_sam_"
3745
}
3846

3947
function samImmediatelyGenerate() {
@@ -187,4 +195,23 @@ onUiUpdate(() => {
187195
samPrevImg[samTabPrefix()] = null;
188196
}
189197
}
190-
})
198+
});
199+
200+
201+
async function samWaitForOpts() {
202+
for (; ;) {
203+
if (window.opts && Object.keys(window.opts).length) {
204+
return window.opts;
205+
}
206+
await new Promise(resolve => setTimeout(resolve, 100));
207+
}
208+
}
209+
210+
onUiLoaded(async () => {
211+
const opts = await samWaitForOpts();
212+
if (samSpecialTabForUI()) {
213+
let accordion = gradioApp().getElementById('segment_anything_accordion_img2img');
214+
let tab = gradioApp().getElementById('tab_segment_anything');
215+
tab.appendChild(accordion)
216+
}
217+
});

scripts/api.py renamed to lib_segment_anything/api.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import numpy as np
88

99
from modules.api.api import encode_pil_to_base64, decode_base64_to_image
10-
from scripts.sam import sam_predict, dino_predict, update_mask, cnet_seg, categorical_mask
11-
from scripts.sam import sam_model_list
10+
from lib_segment_anything.sam import (sam_predict, dino_predict, update_mask,
11+
cnet_seg, categorical_mask, sam_model_list)
1212

1313

1414
def decode_to_pil(image):
@@ -238,9 +238,3 @@ async def api_category_mask(payload: CategoryMaskRequest = Body(...),
238238
result["resized_input"] = encode_to_base64(resized_input_img)
239239
return result
240240

241-
242-
try:
243-
import modules.script_callbacks as script_callbacks
244-
script_callbacks.on_app_started(sam_api)
245-
except:
246-
print("SAM Web UI API failed to initialize")

0 commit comments

Comments
 (0)