Spaces:
Runtime error
Runtime error
import gradio as gr | |
import subprocess | |
import torch | |
from PIL import Image | |
from transformers import AutoProcessor, AutoConfig | |
import importlib.util, sys, os | |
subprocess.run( | |
"pip install --upgrade transformers>=4.50.0", | |
shell=True, | |
check=True | |
) | |
model_id = "microsoft/Florence-2-base-ft" | |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
config = AutoConfig.from_pretrained(model_id, trust_remote_code=True) | |
config_mod_name = config.__class__.__module__ | |
config_mod = sys.modules[config_mod_name] | |
code_dir = os.path.dirname(config_mod.__file__) | |
spec = importlib.util.spec_from_file_location("florence2_modeling", modeling_path) | |
flor_mod = importlib.util.module_from_spec(spec) | |
sys.modules["florence2_modeling"] = flor_mod | |
spec.loader.exec_module(flor_mod) | |
FlorenceLM = flor_mod.Florence2LanguageForConditionalGeneration | |
florence_model = FlorenceLM.from_pretrained( | |
model_id, | |
trust_remote_code=True | |
).to(device).eval() | |
florence_processor = AutoProcessor.from_pretrained(model, trust_remote_code=True) | |
def generate_caption(image): | |
if not isinstance(image, Image.Image): | |
image = Image.fromarray(image) | |
inputs = florence_processor(text="<MORE_DETAILED_CAPTION>", images=image, return_tensors="pt") | |
inputs = {k: v.to(device) for k, v in inputs.items()} | |
generated_ids = florence_model.generate( | |
input_ids=inputs["input_ids"], | |
pixel_values=inputs["pixel_values"], | |
max_new_tokens=1024, | |
early_stopping=False, | |
do_sample=False, | |
num_beams=3, | |
) | |
generated_text = florence_processor.batch_decode(generated_ids, skip_special_tokens=False)[0] | |
parsed_answer = florence_processor.post_process_generation( | |
generated_text, | |
task="<MORE_DETAILED_CAPTION>", | |
image_size=(image.width, image.height) | |
) | |
prompt = parsed_answer["<MORE_DETAILED_CAPTION>"] | |
print("\n\nGeneration completed!:"+ prompt) | |
return prompt | |
demo = gr.Interface(generate_caption, | |
inputs=[gr.Image(label="Input Image")], | |
outputs = [gr.Textbox(label="Output Prompt", lines=3, show_copy_button = True), | |
], | |
theme="Yntec/HaleyCH_Theme_Orange", | |
) | |
demo.launch(debug=True) |