mookkanvas commited on
Commit
f5a4803
·
1 Parent(s): 08458f0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -17
app.py CHANGED
@@ -1,26 +1,38 @@
1
  import streamlit as st
2
- from transformers import AutoFeatureExtractor, AutoModelForImageCaptioning
 
3
  from PIL import Image
4
- import requests
5
- from io import BytesIO
6
 
7
- st.title("Image Captioning App")
8
-
9
- feature_extractor = AutoFeatureExtractor.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
10
- model = AutoModelForImageCaptioning.from_pretrained("nlpconnect/vit-gpt2-image-captioning")
11
 
 
12
  def generate_caption(image):
13
- inputs = feature_extractor(images=image, return_tensors="pt")
14
- caption = model.generate(**inputs)
15
- return caption[0]
 
 
16
 
17
- uploaded_image = st.file_uploader("Upload an image", type=["jpg", "png", "jpeg"])
 
18
 
19
- if uploaded_image:
20
- image = Image.open(uploaded_image)
21
- st.image(image, caption="Uploaded Image", use_column_width=True)
22
 
23
- caption = generate_caption(image)
 
 
 
 
 
 
 
 
 
 
24
 
25
- st.subheader("Generated Caption:")
26
- st.write(caption)
 
1
  import streamlit as st
2
+ import torch
3
+ from transformers import AutoFeatureExtractor, AutoModelForSequenceClassification, AutoTokenizer
4
  from PIL import Image
 
 
5
 
6
+ # Load the pretrained model and tokenizer
7
+ model_name = "nlpconnect/vit-gpt2-image-captioning"
8
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
9
+ model = AutoModelForSequenceClassification.from_pretrained(model_name)
10
 
11
+ # Define a function to generate captions from an image
12
  def generate_caption(image):
13
+ inputs = tokenizer(image, return_tensors="pt")
14
+ with torch.no_grad():
15
+ logits = model(**inputs).logits
16
+ caption = tokenizer.decode(logits.argmax(1)[0], skip_special_tokens=True)
17
+ return caption
18
 
19
+ def main():
20
+ st.title("Image to Text Captioning")
21
 
22
+ with st.form("my_form"):
23
+ uploaded_file = st.file_uploader("Choose an image file", type=["jpg", "jpeg", "png"])
 
24
 
25
+ if uploaded_file is not None:
26
+ # Display the uploaded image
27
+ image = Image.open(uploaded_file)
28
+ st.image(image, caption="Uploaded Image", use_column_width=True)
29
+
30
+ clicked = st.form_submit_button("Generate Caption")
31
+ if clicked:
32
+ if "image" in locals():
33
+ caption = generate_caption(image)
34
+ st.subheader("Generated Caption:")
35
+ st.write(caption)
36
 
37
+ if __name__ == "__main__":
38
+ main()