Spaces:
Running
Running
File size: 1,865 Bytes
569104e c53a0da 569104e c53a0da |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
import streamlit as st
from transformers import pipeline
from PIL import Image
import torch
# --- Config ---
st.set_page_config(page_title="Image β Prompt", page_icon="πΌοΈ", layout="centered")
# Laad model (gecached)
@st.cache_resource
def load_model():
return pipeline(
"image-to-text",
model="llava-hf/llava-v1.6-34b-hf",
torch_dtype=torch.float16,
device_map="auto"
)
pipe = load_model()
# Stijlen
STIJLEN = {
"Realistisch": ", fotorealistisch, 8k, scherp, natuurlijk licht",
"Anime": ", anime stijl, gedetailleerde ogen, Studio Ghibli, 4k",
"Olieverf": ", olieverf op doek, impressionistisch, Van Gogh stijl",
"Cyberpunk": ", cyberpunk, neon lichten, regenachtige straten, Blade Runner",
"Geen stijl": ""
}
# --- UI ---
st.title("πΌοΈ Image β Prompt Generator")
st.markdown("*Upload een foto, kies een stijl, krijg een perfecte AI-prompt.*")
col1, col2 = st.columns([1, 1])
with col1:
uploaded_file = st.file_uploader("Kies een afbeelding", type=["png", "jpg", "jpeg"])
with col2:
stijl = st.selectbox("Kies een stijl", options=list(STIJLEN.keys()))
if uploaded_file:
image = Image.open(uploaded_file).convert("RGB")
st.image(image, caption="Jouw afbeelding", use_column_width=True)
with st.spinner("Prompt genereren..."):
result = pipe(image)
raw_prompt = result[0]["generated_text"]
# Optimaliseer
final_prompt = (
raw_prompt
.replace("a photo of", "")
.replace("an image of", "")
.strip()
.capitalize()
)
final_prompt += STIJLEN[stijl]
st.success("**Prompt:**")
st.code(final_prompt, language=None)
st.download_button(
"π₯ Download prompt",
final_prompt,
file_name="prompt.txt",
mime="text/plain"
) |