from modules import scripts_postprocessing, ui_components, deepbooru, shared import gradio as gr class ScriptPostprocessingCeption(scripts_postprocessing.ScriptPostprocessing): name = "Caption" order = 4040 def ui(self): with ui_components.InputAccordion(False, label="Caption") as enable: option = gr.CheckboxGroup(value=["Deepbooru"], choices=["Deepbooru", "BLIP"], show_label=False) return { "enable": enable, "option": option, } def process(self, pp: scripts_postprocessing.PostprocessedImage, enable, option): if not enable: return captions = [pp.caption] if "Deepbooru" in option: captions.append(deepbooru.model.tag(pp.image)) if "BLIP" in option: captions.append(shared.interrogator.interrogate(pp.image.convert("RGB"))) pp.caption = ", ".join([x for x in captions if x])