post / app.py
Futuretop's picture
Update app.py
f43ff80 verified
raw
history blame
2.28 kB
import gradio as gr
import torch
from PIL import Image
from transformers import BlipProcessor, BlipForConditionalGeneration
# 1. μž₯치 μ„€μ •
device = "cuda" if torch.cuda.is_available() else "cpu"
# 2. λͺ¨λΈ 및 ν”„λ‘œμ„Έμ„œ λ‘œλ“œ
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base").to(device)
# 3. 이미지 μ„€λͺ… 생성 ν•¨μˆ˜
def generate_caption(image):
if image is None:
return "이미지λ₯Ό μ—…λ‘œλ“œν•΄μ£Όμ„Έμš”."
# 고속 처리λ₯Ό μœ„ν•œ λ¦¬μ‚¬μ΄μ¦ˆ
image = image.resize((384, 384))
# μ„€λͺ… 생성
inputs = processor(images=image, return_tensors="pt").to(device)
output_ids = model.generate(**inputs, max_length=50)
caption = processor.decode(output_ids[0], skip_special_tokens=True)
print("βœ… μƒμ„±λœ μ„€λͺ…:", caption)
if "Asian" in caption:
caption = caption.replace("Asian", "Korean")
print("βœ… μƒμ„±λœ μ„€λͺ…:", caption)
return caption
return caption
# 4. Gradio μΈν„°νŽ˜μ΄μŠ€ ꡬ성
with gr.Blocks(title="이미지 μ„€λͺ… 생성기") as demo:
gr.Markdown("## πŸ–ΌοΈ 이미지λ₯Ό μ—…λ‘œλ“œν•˜λ©΄ μ„€λͺ…이 μžλ™ μƒμ„±λ©λ‹ˆλ‹€.")
with gr.Row():
with gr.Column():
image_input = gr.Image(label="μž…λ ₯ 이미지", type="pil")
with gr.Column():
caption_output = gr.Textbox(label="μƒμ„±λœ μ„€λͺ…", lines=3, show_copy_button=True)
# HTML둜 λ²„νŠΌ 생성
gr.HTML("""
<div style='margin-top: 10px; text-align: center;'>
<a href="https://huggingface.co/spaces/VIDraft/stable-diffusion-3.5-large-turboX" target="_blank">
<button style='padding: 10px 20px; background-color: #ff9900; color: white; border: none; border-radius: 10px; font-size: 16px; box-shadow: 2px 2px 8px rgba(0,0,0,0.3); cursor: pointer;'>
🎨 캐리컀쳐 λ§Œλ“€κΈ°
</button>
</a>
</div>
""")
# μ—…λ‘œλ“œ β†’ μ„€λͺ… μžλ™ 생성 μ—°κ²°
image_input.upload(fn=generate_caption, inputs=image_input, outputs=caption_output)
# 5. μ•± μ‹€ν–‰
demo.launch(debug=True)