Imagecaption / app.py
sathvikparasa20's picture
Update app.py
664bdac
raw
history blame contribute delete
No virus
1.46 kB
import streamlit as st
import torch
from transformers import VisionEncoderDecoderModel, ViTFeatureExtractor, AutoTokenizer
from PIL import Image
# Load the pre-trained model and components
model = VisionEncoderDecoderModel.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
feature_extractor = ViTFeatureExtractor.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
tokenizer = AutoTokenizer.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
max_length = 16
num_beams = 4
gen_kwargs = {"max_length": max_length, "num_beams": num_beams}
# Define a Streamlit app
st.title("Image Caption Generator")
st.write("Generate captions for images using a pre-trained model.")
uploaded_image = st.file_uploader("Upload an image", type=["jpg", "jpeg", "png"])
if uploaded_image is not None:
i_image = Image.open(uploaded_image)
if i_image.mode != "RGB":
i_image = i_image.convert(mode="RGB")
st.image(i_image, caption="Uploaded Image", use_column_width=True)
if st.button("Generate Caption"):
pixel_values = feature_extractor(images=[i_image], return_tensors="pt").pixel_values.to(device)
output_ids = model.generate(pixel_values, **gen_kwargs)
preds = tokenizer.batch_decode(output_ids, skip_special_tokens=True)
caption = preds[0].strip()
st.subheader("Generated Caption:")
st.write(caption)