Spaces:
Sleeping
Sleeping
import os | |
import base64 | |
import io | |
import cv2 | |
import torch | |
import gradio as gr | |
from peft import PeftModel, PeftConfig | |
from transformers import AutoProcessor, PaliGemmaForConditionalGeneration | |
from PIL import Image | |
from huggingface_hub import login | |
# Step 1: Log in to Hugging Face | |
access_token = os.environ["HF_TOKEN"] # Ensure your Hugging Face token is stored in an environment variable | |
login(token=access_token) | |
# Step 2: Setup device and load model | |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
dtype = torch.bfloat16 | |
# Load configuration and model | |
config = PeftConfig.from_pretrained("anushettypsl/paligemma_vqav2") | |
base_model = PaliGemmaForConditionalGeneration.from_pretrained("google/paligemma-3b-pt-448") | |
model = PeftModel.from_pretrained(base_model, "anushettypsl/paligemma_vqav2", device_map=device) | |
processor = AutoProcessor.from_pretrained("google/paligemma-3b-pt-448", device_map=device) | |
model.to(device) | |
# Step 3: Define prediction function | |
def predict(input_image, input_text): | |
# Convert the uploaded image to RGB format | |
input_image = input_image.convert('RGB') | |
# Prepare the model inputs | |
model_inputs = processor(text=input_text, images=input_image, return_tensors="pt").to(device) | |
# Perform inference | |
with torch.inference_mode(): | |
generation = model.generate(**model_inputs, max_new_tokens=100, do_sample=False) | |
# Decode the output | |
decoded_output = processor.decode(generation[0], skip_special_tokens=True) | |
return decoded_output | |
# Step 4: Create the Gradio interface | |
interface = gr.Interface( | |
fn=predict, | |
inputs=[ | |
gr.Image(type="pil", label="Upload Image"), # Image input | |
gr.Textbox(label="Input Prompt", value="Detect whether the pathology is malignant or benign? If malignant, then detect the grade G1, G2, or G3.") # Text input | |
], | |
outputs="text", # Text output | |
title="anushettypsl/paligemma_vqav2", | |
description="Upload an image to predict grade of cancer" | |
) | |
# Step 5: Launch the Gradio app | |
interface.launch() | |