嗯……编程早忘了,不会python,全靠猜着改
更新MistoLine和anyline的代码参考,forge上直接改buildin的extension
https://github.com/Mikubill/sd-webui-controlnet/commit/69d80e5a57f0add1a6007299b2d7d85ef1fc4285
备份并修改
E:\stable-diffusion-webui-forge\extensions-builtin\forge_legacy_preprocessors\annotator\teed\__init__.py
略
备份并修改
E:\stable-diffusion-webui-forge\extensions-builtin\forge_legacy_preprocessors\legacy_preprocessors
preprocessor_compiled.py
"softedge_anyline": {
"label": "softedge_anyline",
"call_function": te_anyline,
"unload_function": unload_te_anyline,
"managed_model": "model_te_anyline",
"model_free": False,
"no_control_mode": False,
"resolution": {
"label": "Resolution",
"value": 1280,
"minimum": 64,
"maximum": 2048,
"step": 8
},
"slider_1": {
"label": "Safe Steps",
"minimum": 0,
"maximum": 10,
"value": 2,
"step": 1
},
"slider_2": None,
"slider_3": None,
"priority": 0,
"tags": [
"SoftEdge"
]
},
preprocessor.py
def te_anyline(img: np.ndarray, res=512, thr_a=2, **kwargs):
o_img, remove_pad = resize_image_with_pad(img, res)
global model_te_anyline
if model_te_anyline is None:
from annotator.teed import TEEDDector
model_te_anyline = TEEDDector(mteed=True)
mteed_result = model_te_anyline(o_img, safe_steps=int(thr_a))
mteed_result = HWC3(mteed_result)
lineart_result, mf = lineart_standard(o_img, res)
lineart_result = get_intensity_mask(
lineart_result, lower_bound=0, upper_bound=1
)
cleaned = morphology.remove_small_objects(
lineart_result.astype(bool), min_size=36, connectivity=1
)
lineart_result = lineart_result * cleaned
final_result = combine_layers(mteed_result, lineart_result)
return remove_pad(final_result), True
def unload_te_anyline():
if model_te_anyline is not None:
model_te_anyline.unload_model()
def get_intensity_mask(image_array, lower_bound, upper_bound):
#image_array1=np.array(image_array, dtype=object)
print("ndim == 2 or \n",image_array.ndim)
if image_array.ndim == 2:
mask = image_array
else:
mask = image_array[:, :, 0]
mask = np.where((mask >= lower_bound) & (mask <= upper_bound), mask, 0)
mask = np.expand_dims(mask, 2).repeat(3, axis=2)
return mask