Merge remote-tracking branch 'origin/master'

This commit is contained in:
AUTOMATIC 2022-11-04 22:47:59 +03:00
commit 822210bae5
2 changed files with 74 additions and 49 deletions

View File

@ -7,7 +7,7 @@
"Loading...": "載入中…", "Loading...": "載入中…",
"view": "檢視", "view": "檢視",
"api": "api", "api": "api",
"•": "•", "•": " ",
"built with gradio": "基於 Gradio 構建", "built with gradio": "基於 Gradio 構建",
"Stable Diffusion checkpoint": "Stable Diffusion 模型權重存檔點", "Stable Diffusion checkpoint": "Stable Diffusion 模型權重存檔點",
"txt2img": "文生圖", "txt2img": "文生圖",
@ -70,12 +70,12 @@
"Variation strength": "差異強度", "Variation strength": "差異強度",
"Resize seed from width": "自寬度縮放隨機種子", "Resize seed from width": "自寬度縮放隨機種子",
"Resize seed from height": "自高度縮放隨機種子", "Resize seed from height": "自高度縮放隨機種子",
"Open for Clip Aesthetic!": "打開美術風格 Clip!", "Open for Clip Aesthetic!": "打開以調整 Clip 的美術風格!",
"▼": "▼", "▼": "▼",
"Aesthetic weight": "美術風格權重", "Aesthetic weight": "美術風格權重",
"Aesthetic steps": "美術風格疊代步數", "Aesthetic steps": "美術風格疊代步數",
"Aesthetic learning rate": "美術風格學習率", "Aesthetic learning rate": "美術風格學習率",
"Slerp interpolation": "Slerp 插值", "Slerp interpolation": "球面線性插值角度",
"Aesthetic imgs embedding": "美術風格圖集 embedding", "Aesthetic imgs embedding": "美術風格圖集 embedding",
"None": "無", "None": "無",
"Aesthetic text for imgs": "該圖集的美術風格描述", "Aesthetic text for imgs": "該圖集的美術風格描述",
@ -105,15 +105,15 @@
"Prompt order": "提示詞順序", "Prompt order": "提示詞順序",
"Sampler": "採樣器", "Sampler": "採樣器",
"Checkpoint name": "模型權重存檔點的名稱", "Checkpoint name": "模型權重存檔點的名稱",
"Hypernetwork": "超網路", "Hypernetwork": "超網路Hypernetwork",
"Hypernet str.": "超網路強度", "Hypernet str.": "超網路Hypernetwork強度",
"Sigma Churn": "Sigma Churn", "Sigma Churn": "Sigma Churn",
"Sigma min": "最小 Sigma", "Sigma min": "最小 Sigma",
"Sigma max": "最大 Sigma", "Sigma max": "最大 Sigma",
"Sigma noise": "Sigma noise", "Sigma noise": "Sigma noise",
"Eta": "Eta", "Eta": "Eta",
"Clip skip": "Clip 跳過", "Clip skip": "Clip 跳過",
"Denoising": "去噪", "Denoising": "重繪幅度",
"Cond. Image Mask Weight": "圖像調節屏蔽度", "Cond. Image Mask Weight": "圖像調節屏蔽度",
"X values": "X軸數值", "X values": "X軸數值",
"Y type": "Y軸類型", "Y type": "Y軸類型",
@ -189,6 +189,7 @@
"Tile overlap": "圖塊重疊的畫素", "Tile overlap": "圖塊重疊的畫素",
"Upscaler": "放大演算法", "Upscaler": "放大演算法",
"Lanczos": "Lanczos", "Lanczos": "Lanczos",
"Nearest": "最鄰近(整數縮放)",
"LDSR": "LDSR", "LDSR": "LDSR",
"BSRGAN 4x": "BSRGAN 4x", "BSRGAN 4x": "BSRGAN 4x",
"ESRGAN_4x": "ESRGAN_4x", "ESRGAN_4x": "ESRGAN_4x",
@ -230,15 +231,15 @@
"for detailed explanation.": "以了解詳細說明", "for detailed explanation.": "以了解詳細說明",
"Create embedding": "生成 embedding", "Create embedding": "生成 embedding",
"Create aesthetic images embedding": "生成美術風格圖集 embedding", "Create aesthetic images embedding": "生成美術風格圖集 embedding",
"Create hypernetwork": "生成 hypernetwork", "Create hypernetwork": "生成超網路Hypernetwork",
"Preprocess images": "圖像預處理", "Preprocess images": "圖像預處理",
"Name": "名稱", "Name": "名稱",
"Initialization text": "初始化文字", "Initialization text": "初始化文字",
"Number of vectors per token": "每個 token 的向量數", "Number of vectors per token": "每個 token 的向量數",
"Overwrite Old Embedding": "覆寫舊的 Embedding", "Overwrite Old Embedding": "覆寫舊的 Embedding",
"Modules": "模組", "Modules": "模組",
"Enter hypernetwork layer structure": "輸入 hypernetwork 層結構", "Enter hypernetwork layer structure": "輸入超網路Hypernetwork層結構",
"Select activation function of hypernetwork": "選擇 hypernetwork 的激活函數", "Select activation function of hypernetwork": "選擇超網路Hypernetwork的激活函數",
"linear": "linear", "linear": "linear",
"relu": "relu", "relu": "relu",
"leakyrelu": "leakyrelu", "leakyrelu": "leakyrelu",
@ -276,7 +277,7 @@
"XavierNormal": "Xavier 正態", "XavierNormal": "Xavier 正態",
"Add layer normalization": "加入層標準化", "Add layer normalization": "加入層標準化",
"Use dropout": "採用 dropout 防止過擬合", "Use dropout": "採用 dropout 防止過擬合",
"Overwrite Old Hypernetwork": "覆寫舊的 Hypernetwork", "Overwrite Old Hypernetwork": "覆寫舊的超網路Hypernetwork",
"Source directory": "來源目錄", "Source directory": "來源目錄",
"Destination directory": "目標目錄", "Destination directory": "目標目錄",
"Existing Caption txt Action": "對已有的TXT說明文字的行為", "Existing Caption txt Action": "對已有的TXT說明文字的行為",
@ -298,11 +299,11 @@
"Create debug image": "生成除錯圖片", "Create debug image": "生成除錯圖片",
"Preprocess": "預處理", "Preprocess": "預處理",
"Train an embedding; must specify a directory with a set of 1:1 ratio images": "訓練 embedding 必須指定一組具有 1:1 比例圖像的目錄", "Train an embedding; must specify a directory with a set of 1:1 ratio images": "訓練 embedding 必須指定一組具有 1:1 比例圖像的目錄",
"Train an embedding or Hypernetwork; you must specify a directory with a set of 1:1 ratio images": "訓練 embedding 或者 hypernetwork 必須指定一組具有 1:1 比例圖像的目錄", "Train an embedding or Hypernetwork; you must specify a directory with a set of 1:1 ratio images": "訓練 embedding 或者超網路Hypernetwork 必須指定一組具有 1:1 比例圖像的目錄",
"[wiki]": "[wiki]", "[wiki]": "[wiki文件]",
"Embedding": "Embedding", "Embedding": "Embedding",
"Embedding Learning rate": "Embedding 學習率", "Embedding Learning rate": "Embedding 學習率",
"Hypernetwork Learning rate": "Hypernetwork 學習率", "Hypernetwork Learning rate": "超網路Hypernetwork學習率",
"Learning rate": "學習率", "Learning rate": "學習率",
"Dataset directory": "資料集目錄", "Dataset directory": "資料集目錄",
"Log directory": "日誌目錄", "Log directory": "日誌目錄",
@ -312,7 +313,7 @@
"Save a copy of embedding to log directory every N steps, 0 to disable": "每 N 步將 embedding 的副本儲存到日誌目錄0 表示禁用", "Save a copy of embedding to log directory every N steps, 0 to disable": "每 N 步將 embedding 的副本儲存到日誌目錄0 表示禁用",
"Save images with embedding in PNG chunks": "儲存圖像,並在 PNG 圖片檔案中嵌入 embedding 檔案", "Save images with embedding in PNG chunks": "儲存圖像,並在 PNG 圖片檔案中嵌入 embedding 檔案",
"Read parameters (prompt, etc...) from txt2img tab when making previews": "進行預覽時,從文生圖頁籤中讀取參數(提示詞等)", "Read parameters (prompt, etc...) from txt2img tab when making previews": "進行預覽時,從文生圖頁籤中讀取參數(提示詞等)",
"Train Hypernetwork": "訓練 Hypernetwork", "Train Hypernetwork": "訓練超網路Hypernetwork",
"Train Embedding": "訓練 Embedding", "Train Embedding": "訓練 Embedding",
"Create an aesthetic embedding out of any number of images": "從任意數量的圖像中建立美術風格 embedding", "Create an aesthetic embedding out of any number of images": "從任意數量的圖像中建立美術風格 embedding",
"Create images embedding": "生成圖集 embedding", "Create images embedding": "生成圖集 embedding",
@ -418,7 +419,7 @@
"Checkpoints to cache in RAM": "快取在內存RAM中的模型權重存檔點", "Checkpoints to cache in RAM": "快取在內存RAM中的模型權重存檔點",
"SD VAE": "模型的VAE", "SD VAE": "模型的VAE",
"auto": "自動", "auto": "自動",
"Hypernetwork strength": "Hypernetwork 強度", "Hypernetwork strength": "超網路Hypernetwork強度",
"Inpainting conditioning mask strength": "局部重繪時圖像調節的蒙版屏蔽強度", "Inpainting conditioning mask strength": "局部重繪時圖像調節的蒙版屏蔽強度",
"Apply color correction to img2img results to match original colors.": "對圖生圖結果套用顏色校正以匹配原始顏色", "Apply color correction to img2img results to match original colors.": "對圖生圖結果套用顏色校正以匹配原始顏色",
"With img2img, do exactly the amount of steps the slider specifies (normally you'd do less with less denoising).": "在進行圖生圖的時候,確切地執行滑塊指定的疊代步數(正常情況下更弱的重繪幅度需要更少的疊代步數)", "With img2img, do exactly the amount of steps the slider specifies (normally you'd do less with less denoising).": "在進行圖生圖的時候,確切地執行滑塊指定的疊代步數(正常情況下更弱的重繪幅度需要更少的疊代步數)",
@ -488,7 +489,17 @@
"Extension": "擴充", "Extension": "擴充",
"URL": "網址", "URL": "網址",
"Update": "更新", "Update": "更新",
"a1111-sd-webui-tagcomplete": "標記自動補全",
"unknown": "未知", "unknown": "未知",
"deforum-for-automatic1111-webui": "Deforum",
"sd-dynamic-prompting": "動態提示詞",
"stable-diffusion-webui-aesthetic-gradients": "美術風格梯度",
"stable-diffusion-webui-aesthetic-image-scorer": "美術風格評等",
"stable-diffusion-webui-artists-to-study": "藝術家圖庫",
"stable-diffusion-webui-dataset-tag-editor": "資料集標記編輯器",
"stable-diffusion-webui-images-browser": "圖庫瀏覽器",
"stable-diffusion-webui-inspiration": "靈感",
"stable-diffusion-webui-wildcards": "萬用字元",
"Load from:": "載入自", "Load from:": "載入自",
"Extension index URL": "擴充清單連結", "Extension index URL": "擴充清單連結",
"URL for extension's git repository": "擴充的 git 倉庫連結", "URL for extension's git repository": "擴充的 git 倉庫連結",
@ -527,8 +538,8 @@
"What to put inside the masked area before processing it with Stable Diffusion.": "在使用 Stable Diffusion 處理蒙版區域之前要在蒙版區域內放置什麼", "What to put inside the masked area before processing it with Stable Diffusion.": "在使用 Stable Diffusion 處理蒙版區域之前要在蒙版區域內放置什麼",
"fill it with colors of the image": "用圖像的顏色(高強度模糊)填充它", "fill it with colors of the image": "用圖像的顏色(高強度模糊)填充它",
"keep whatever was there originally": "保留原來的圖像,不進行預處理", "keep whatever was there originally": "保留原來的圖像,不進行預處理",
"fill it with latent space noise": "用潛空間的噪聲填充它", "fill it with latent space noise": "於潛空間填充噪聲",
"fill it with latent space zeroes": "用潛空間的零填充它", "fill it with latent space zeroes": "於潛空間填零",
"Upscale masked region to target resolution, do inpainting, downscale back and paste into original image": "將蒙版區域(包括預留畫素長度的緩衝區域)放大到目標解析度,進行局部重繪。\n然後縮小並粘貼回原始圖像中", "Upscale masked region to target resolution, do inpainting, downscale back and paste into original image": "將蒙版區域(包括預留畫素長度的緩衝區域)放大到目標解析度,進行局部重繪。\n然後縮小並粘貼回原始圖像中",
"Resize image to target resolution. Unless height and width match, you will get incorrect aspect ratio.": "將圖像大小調整為目標解析度。除非高度和寬度匹配,否則你將獲得不正確的縱橫比", "Resize image to target resolution. Unless height and width match, you will get incorrect aspect ratio.": "將圖像大小調整為目標解析度。除非高度和寬度匹配,否則你將獲得不正確的縱橫比",
"Resize the image so that entirety of target resolution is filled with the image. Crop parts that stick out.": "調整圖像大小,使整個目標解析度都被圖像填充。裁剪多出來的部分", "Resize the image so that entirety of target resolution is filled with the image. Crop parts that stick out.": "調整圖像大小,使整個目標解析度都被圖像填充。裁剪多出來的部分",
@ -560,6 +571,8 @@
"Select which Real-ESRGAN models to show in the web UI. (Requires restart)": "選擇哪些 Real-ESRGAN 模型顯示在網頁使用者介面。(需要重新啟動)", "Select which Real-ESRGAN models to show in the web UI. (Requires restart)": "選擇哪些 Real-ESRGAN 模型顯示在網頁使用者介面。(需要重新啟動)",
"Allowed categories for random artists selection when using the Roll button": "使用抽選藝術家按鈕時將會隨機的藝術家類別", "Allowed categories for random artists selection when using the Roll button": "使用抽選藝術家按鈕時將會隨機的藝術家類別",
"Append commas": "附加逗號", "Append commas": "附加逗號",
"latest": "最新",
"behind": "落後",
"Roll three": "抽三位出來", "Roll three": "抽三位出來",
"Generate forever": "無限生成", "Generate forever": "無限生成",
"Cancel generate forever": "停止無限生成", "Cancel generate forever": "停止無限生成",
@ -581,10 +594,9 @@
"Start drawing": "開始繪製", "Start drawing": "開始繪製",
"Description": "描述", "Description": "描述",
"Action": "行動", "Action": "行動",
"Aesthetic Gradients": "美術風格", "Aesthetic Gradients": "美術風格梯度",
"aesthetic-gradients": "美術風格", "aesthetic-gradients": "美術風格梯度",
"stable-diffusion-webui-wildcards": "萬用字元", "Dynamic Prompts": "動態提示詞",
"Dynamic Prompts": "動態提示",
"images-browser": "圖庫瀏覽器", "images-browser": "圖庫瀏覽器",
"Inspiration": "靈感", "Inspiration": "靈感",
"Deforum": "Deforum", "Deforum": "Deforum",

View File

@ -46,25 +46,23 @@ class CFGDenoiserParams:
ScriptCallback = namedtuple("ScriptCallback", ["script", "callback"]) ScriptCallback = namedtuple("ScriptCallback", ["script", "callback"])
callbacks_app_started = [] callback_map = dict(
callbacks_model_loaded = [] callbacks_app_started=[],
callbacks_ui_tabs = [] callbacks_model_loaded=[],
callbacks_ui_settings = [] callbacks_ui_tabs=[],
callbacks_before_image_saved = [] callbacks_ui_settings=[],
callbacks_image_saved = [] callbacks_before_image_saved=[],
callbacks_cfg_denoiser = [] callbacks_image_saved=[],
callbacks_cfg_denoiser=[]
)
def clear_callbacks(): def clear_callbacks():
callbacks_model_loaded.clear() for callback_list in callback_map.values():
callbacks_ui_tabs.clear() callback_list.clear()
callbacks_ui_settings.clear()
callbacks_before_image_saved.clear()
callbacks_image_saved.clear()
callbacks_cfg_denoiser.clear()
def app_started_callback(demo: Optional[Blocks], app: FastAPI): def app_started_callback(demo: Optional[Blocks], app: FastAPI):
for c in callbacks_app_started: for c in callback_map['callbacks_app_started']:
try: try:
c.callback(demo, app) c.callback(demo, app)
except Exception: except Exception:
@ -72,7 +70,7 @@ def app_started_callback(demo: Optional[Blocks], app: FastAPI):
def model_loaded_callback(sd_model): def model_loaded_callback(sd_model):
for c in callbacks_model_loaded: for c in callback_map['callbacks_model_loaded']:
try: try:
c.callback(sd_model) c.callback(sd_model)
except Exception: except Exception:
@ -82,7 +80,7 @@ def model_loaded_callback(sd_model):
def ui_tabs_callback(): def ui_tabs_callback():
res = [] res = []
for c in callbacks_ui_tabs: for c in callback_map['callbacks_ui_tabs']:
try: try:
res += c.callback() or [] res += c.callback() or []
except Exception: except Exception:
@ -92,7 +90,7 @@ def ui_tabs_callback():
def ui_settings_callback(): def ui_settings_callback():
for c in callbacks_ui_settings: for c in callback_map['callbacks_ui_settings']:
try: try:
c.callback() c.callback()
except Exception: except Exception:
@ -100,7 +98,7 @@ def ui_settings_callback():
def before_image_saved_callback(params: ImageSaveParams): def before_image_saved_callback(params: ImageSaveParams):
for c in callbacks_before_image_saved: for c in callback_map['callbacks_before_image_saved']:
try: try:
c.callback(params) c.callback(params)
except Exception: except Exception:
@ -108,7 +106,7 @@ def before_image_saved_callback(params: ImageSaveParams):
def image_saved_callback(params: ImageSaveParams): def image_saved_callback(params: ImageSaveParams):
for c in callbacks_image_saved: for c in callback_map['callbacks_image_saved']:
try: try:
c.callback(params) c.callback(params)
except Exception: except Exception:
@ -116,7 +114,7 @@ def image_saved_callback(params: ImageSaveParams):
def cfg_denoiser_callback(params: CFGDenoiserParams): def cfg_denoiser_callback(params: CFGDenoiserParams):
for c in callbacks_cfg_denoiser: for c in callback_map['callbacks_cfg_denoiser']:
try: try:
c.callback(params) c.callback(params)
except Exception: except Exception:
@ -129,17 +127,33 @@ def add_callback(callbacks, fun):
callbacks.append(ScriptCallback(filename, fun)) callbacks.append(ScriptCallback(filename, fun))
def remove_current_script_callbacks():
stack = [x for x in inspect.stack() if x.filename != __file__]
filename = stack[0].filename if len(stack) > 0 else 'unknown file'
if filename == 'unknown file':
return
for callback_list in callback_map.values():
for callback_to_remove in [cb for cb in callback_list if cb.script == filename]:
callback_list.remove(callback_to_remove)
def remove_callbacks_for_function(callback_func):
for callback_list in callback_map.values():
for callback_to_remove in [cb for cb in callback_list if cb.callback == callback_func]:
callback_list.remove(callback_to_remove)
def on_app_started(callback): def on_app_started(callback):
"""register a function to be called when the webui started, the gradio `Block` component and """register a function to be called when the webui started, the gradio `Block` component and
fastapi `FastAPI` object are passed as the arguments""" fastapi `FastAPI` object are passed as the arguments"""
add_callback(callbacks_app_started, callback) add_callback(callback_map['callbacks_app_started'], callback)
def on_model_loaded(callback): def on_model_loaded(callback):
"""register a function to be called when the stable diffusion model is created; the model is """register a function to be called when the stable diffusion model is created; the model is
passed as an argument""" passed as an argument"""
add_callback(callbacks_model_loaded, callback) add_callback(callback_map['callbacks_model_loaded'], callback)
def on_ui_tabs(callback): def on_ui_tabs(callback):
@ -152,13 +166,13 @@ def on_ui_tabs(callback):
title is tab text displayed to user in the UI title is tab text displayed to user in the UI
elem_id is HTML id for the tab elem_id is HTML id for the tab
""" """
add_callback(callbacks_ui_tabs, callback) add_callback(callback_map['callbacks_ui_tabs'], callback)
def on_ui_settings(callback): def on_ui_settings(callback):
"""register a function to be called before UI settings are populated; add your settings """register a function to be called before UI settings are populated; add your settings
by using shared.opts.add_option(shared.OptionInfo(...)) """ by using shared.opts.add_option(shared.OptionInfo(...)) """
add_callback(callbacks_ui_settings, callback) add_callback(callback_map['callbacks_ui_settings'], callback)
def on_before_image_saved(callback): def on_before_image_saved(callback):
@ -166,7 +180,7 @@ def on_before_image_saved(callback):
The callback is called with one argument: The callback is called with one argument:
- params: ImageSaveParams - parameters the image is to be saved with. You can change fields in this object. - params: ImageSaveParams - parameters the image is to be saved with. You can change fields in this object.
""" """
add_callback(callbacks_before_image_saved, callback) add_callback(callback_map['callbacks_before_image_saved'], callback)
def on_image_saved(callback): def on_image_saved(callback):
@ -174,7 +188,7 @@ def on_image_saved(callback):
The callback is called with one argument: The callback is called with one argument:
- params: ImageSaveParams - parameters the image was saved with. Changing fields in this object does nothing. - params: ImageSaveParams - parameters the image was saved with. Changing fields in this object does nothing.
""" """
add_callback(callbacks_image_saved, callback) add_callback(callback_map['callbacks_image_saved'], callback)
def on_cfg_denoiser(callback): def on_cfg_denoiser(callback):
@ -182,5 +196,4 @@ def on_cfg_denoiser(callback):
The callback is called with one argument: The callback is called with one argument:
- params: CFGDenoiserParams - parameters to be passed to the inner model and sampling state details. - params: CFGDenoiserParams - parameters to be passed to the inner model and sampling state details.
""" """
add_callback(callbacks_cfg_denoiser, callback) add_callback(callback_map['callbacks_cfg_denoiser'], callback)