diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/extras.py | 2 | ||||
-rw-r--r-- | modules/scripts.py | 19 | ||||
-rw-r--r-- | modules/sd_hijack.py | 4 |
3 files changed, 22 insertions, 3 deletions
diff --git a/modules/extras.py b/modules/extras.py index 3d9d9f7a..cc8fed1b 100644 --- a/modules/extras.py +++ b/modules/extras.py @@ -60,7 +60,7 @@ def run_extras(image, image_folder, gfpgan_visibility, codeformer_visibility, co if codeformer_visibility < 1.0:
res = Image.blend(image, res, codeformer_visibility)
- info += f"CodeFormer w: {round(codeformer_weight, 2)}, CodeFormer visibility:{round(codeformer_visibility)}\n"
+ info += f"CodeFormer w: {round(codeformer_weight, 2)}, CodeFormer visibility:{round(codeformer_visibility, 2)}\n"
image = res
if upscaling_resize != 1.0:
diff --git a/modules/scripts.py b/modules/scripts.py index 9cc5a185..0e0b949b 100644 --- a/modules/scripts.py +++ b/modules/scripts.py @@ -13,18 +13,37 @@ class Script: args_from = None
args_to = None
+ # The title of the script. This is what will be displayed in the dropdown menu.
def title(self):
raise NotImplementedError()
+ # How the script is displayed in the UI. See https://gradio.app/docs/#components
+ # for the different UI components you can use and how to create them.
+ # Most UI components can return a value, such as a boolean for a checkbox.
+ # The returned values are passed to the run method as parameters.
def ui(self, is_img2img):
pass
+ # Determines when the script should be shown in the dropdown menu via the
+ # returned value. As an example:
+ # is_img2img is True if the current tab is img2img, and False if it is txt2img.
+ # Thus, return is_img2img to only show the script on the img2img tab.
def show(self, is_img2img):
return True
+ # This is where the additional processing is implemented. The parameters include
+ # self, the model object "p" (a StableDiffusionProcessing class, see
+ # processing.py), and the parameters returned by the ui method.
+ # Custom functions can be defined here, and additional libraries can be imported
+ # to be used in processing. The return value should be a Processed object, which is
+ # what is returned by the process_images method.
def run(self, *args):
raise NotImplementedError()
+ # The description method is currently unused.
+ # To add a description that appears when hovering over the title, amend the "titles"
+ # dict in script.js to include the script title (returned by title) as a key, and
+ # your description as the value.
def describe(self):
return ""
diff --git a/modules/sd_hijack.py b/modules/sd_hijack.py index 65414518..c4450ce4 100644 --- a/modules/sd_hijack.py +++ b/modules/sd_hijack.py @@ -50,7 +50,7 @@ def split_cross_attention_forward(self, x, context=None, mask=None): q_in = self.to_q(x)
context = default(context, x)
- k_in = self.to_k(context)
+ k_in = self.to_k(context) * self.scale
v_in = self.to_v(context)
del context, x
@@ -85,7 +85,7 @@ def split_cross_attention_forward(self, x, context=None, mask=None): slice_size = q.shape[1] // steps if (q.shape[1] % steps) == 0 else q.shape[1]
for i in range(0, q.shape[1], slice_size):
end = i + slice_size
- s1 = einsum('b i d, b j d -> b i j', q[:, i:end], k) * self.scale
+ s1 = einsum('b i d, b j d -> b i j', q[:, i:end], k)
s2 = s1.softmax(dim=-1, dtype=q.dtype)
del s1
|