|
import streamlit as st |
|
from transformers import pipeline |
|
|
|
classifier = pipeline("image-to-text", model="nlpconnect/vit-gpt2-image-captioning") |
|
def main(): |
|
st.title("image-to-text") |
|
|
|
with st.form("image"): |
|
image = st.file_uploader('Choose a file') |
|
|
|
clicked = st.form_submit_button("Submit") |
|
if clicked: |
|
results = classifier([image]) |
|
st.json(results) |
|
from transformers import VisionEncoderDecoderModel, ViTFeatureExtractor, AutoTokenizer |
|
|
|
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} |
|
def predict_step(image_paths): |
|
images = [] |
|
for image_path in image_paths: |
|
i_image = Image.open(image_path) |
|
if i_image.mode != "RGB": |
|
i_image = i_image.convert(mode="RGB") |
|
images.append(i_image) |
|
pixel_values = feature_extractor(images=images, return_tensors="pt").pixel_values |
|
pixel_values = pixel_values.to(device) |
|
output_ids = model.generate(pixel_values, **gen_kwargs) |
|
preds = tokenizer.batch_decode(output_ids, skip_special_tokens=True) |
|
preds = [pred.strip() for pred in preds] |
|
return preds |
|
predict_step(['doctor.e16ba4e4.jpg'] |
|
|
|
if __name__ == "__main__": |
|
main() |
|
|
|
"""'audio-classification', 'automatic-speech-recognition', 'conversational', 'document-question-answering', 'feature-extraction', 'fill-mask', 'image-classification', 'image-segmentation', 'image-to-text', 'ner', 'object-detection', 'question-answering', 'sentiment-analysis', 'summarization', 'table-question-answering', 'text-classification', 'text-generation', 'text2text-generation', 'token-classification', 'translation', 'visual-question-answering', 'vqa', 'zero-shot-classification', 'zero-shot-image-classification', 'translation_XX_to_YY'""" |