|
import streamlit as st |
|
from transformers import pipeline |
|
from huggingface_hub import login |
|
from PIL import Image |
|
import os |
|
|
|
|
|
login(token=os.getenv("HUGGINGFACE_TOKEN")) |
|
|
|
st.header("Character Captions (IN PROGRESS!)") |
|
st.write("Have a character caption any image you upload!") |
|
character = st.selectbox("Choose a character", ["rapper", "monkey", "shrek", "unintelligible"]) |
|
|
|
uploaded_img = st.file_uploader("Upload an image") |
|
|
|
if uploaded_img is not None: |
|
|
|
image = Image.open(uploaded_img) |
|
st.image(image) |
|
|
|
image_captioner = pipeline("image-to-text", model="Salesforce/blip-image-captioning-large") |
|
|
|
response = image_captioner(image) |
|
caption = response[0]['generated_text'] |
|
st.write("Caption:", caption) |
|
|
|
character_prompts = { |
|
"rapper": f"Describe this scene like you're a rapper: {caption}.", |
|
"monkey": f"Describe this scene like you're a monkey going bananas: {caption}.", |
|
"shrek": f"Describe this scene like you're Shrek: {caption}.", |
|
"unintelligible": f"Describe this scene in a way that makes no sense: {caption}." |
|
} |
|
|
|
prompt = character_prompts[character] |
|
st.write(prompt) |
|
|
|
personality = "rapper" |
|
prompt = character_prompts[personality] |
|
|
|
|
|
|
|
text_generator = pipeline("text-generation", model="meta-llama/Llama-2-7b-hf", framework="pt") |
|
|
|
prompt = character_prompts[character] |
|
st.write("Styled Prompt:", prompt) |
|
|
|
generated_text = text_generator(prompt, max_length=50, do_sample=True) |
|
styled_caption = generated_text[0]['generated_text'] |
|
st.write("Character-Styled Caption:", styled_caption) |