|
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]) |
|
|