s2 / app.py
Madhuri123's picture
Update app.py
999f0ff verified
import streamlit as st
import requests
import torch
from PIL import Image
from transformers import MllamaForConditionalGeneration, AutoProcessor
from huggingface_hub import login
import io
# Authenticate with Hugging Face
HF_TOKEN = st.secrets["newfinegrained"]
login(HF_TOKEN)
def load_model_and_processor(model_id):
"""Load the model and processor."""
model = MllamaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
processor = AutoProcessor.from_pretrained(model_id)
return model, processor
def generate_text(model, processor, image_url, prompt):
"""Generate text using the model and processor."""
try:
# Fetch the image from the URL
response = requests.get(image_url)
response.raise_for_status() # Raise an error for invalid response
# Validate content type
if "image" not in response.headers["Content-Type"]:
return "Error: The provided URL does not point to a valid image."
# Open the image
image = Image.open(io.BytesIO(response.content))
# Process the image and prompt
inputs = processor(image, prompt, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=30)
# Decode the output
return processor.decode(output[0])
except Exception as e:
return f"Error: {e}"
# Streamlit App
st.title("LLaMA 3.2 Vision")
# Model ID and loading
MODEL_ID = "meta-llama/Llama-3.2-11B-Vision"
model, processor = load_model_and_processor(MODEL_ID)
# User input for image URL and prompt
image_url = st.text_input(
"Enter the Image URL:",
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/0052a70beed5bf71b92610a43a52df6d286cd5f3/diffusers/rabbit.jpg"
)
prompt = st.text_area(
"Enter your prompt:",
"<|image|><|begin_of_text|>If I had to write a haiku for this one"
)
# Button to generate haiku
if st.button("Generate Text"):
with st.spinner("Generating Text..."):
result = generate_text(model, processor, image_url, prompt)
st.subheader("Generated Text")
st.write(result)
try:
st.image(image_url, caption="Input Image")
except Exception:
st.error("Failed to load image. Please check the URL.")