gautamraj8044 commited on
Commit
f58e466
·
verified ·
1 Parent(s): 5faf692

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +80 -0
  2. requirements.txt +0 -0
app.py ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import torch
3
+ from diffusers import StableDiffusionPipeline
4
+ from transformers import pipeline, set_seed
5
+ from PIL import Image
6
+
7
+ # TTI Class Definition
8
+ class TTI:
9
+ device = "cuda" if torch.cuda.is_available() else "cpu"
10
+ seed = 42
11
+ generator = torch.Generator(device).manual_seed(seed)
12
+ image_gen_steps = 35
13
+ image_gen_size = (400, 400)
14
+ image_gen_guidence_scale = 9
15
+ image_gen_model_id = "stabilityai/stable-diffusion-2"
16
+ prompt_gen_model_id = "gpt2"
17
+
18
+ # Load Stable Diffusion Model
19
+ @st.cache_resource
20
+ def load_image_gen_model():
21
+ model = StableDiffusionPipeline.from_pretrained(
22
+ TTI.image_gen_model_id,
23
+ torch_dtype=torch.float16,
24
+ revision="fp16"
25
+ )
26
+ return model.to(TTI.device)
27
+
28
+ image_gen_model = load_image_gen_model()
29
+
30
+ # Function to Generate Images
31
+ def generate_image(prompt, model):
32
+ image = model(
33
+ prompt,
34
+ num_inference_steps=TTI.image_gen_steps,
35
+ generator=TTI.generator,
36
+ guidance_scale=TTI.image_gen_guidence_scale
37
+ ).images[0]
38
+ # Resize the image to the specified size
39
+ image = image.resize(TTI.image_gen_size, Image.ANTIALIAS)
40
+ return image
41
+
42
+ # Streamlit UI
43
+ st.title("Text-to-Image Generator")
44
+ st.write("Generate images from text prompts using Stable Diffusion.")
45
+
46
+ # User Input: Prompt
47
+ prompt = st.text_input("Enter a text prompt", value="A monkey on a tree")
48
+
49
+ # User Input: Inference Steps
50
+ image_gen_steps = st.slider(
51
+ "Number of inference steps (Higher = Better quality but slower)",
52
+ min_value=10,
53
+ max_value=100,
54
+ value=TTI.image_gen_steps,
55
+ step=5
56
+ )
57
+
58
+ # User Input: Guidance Scale
59
+ guidance_scale = st.slider(
60
+ "Guidance scale (Higher = Closer to prompt, but less creative)",
61
+ min_value=1.0,
62
+ max_value=20.0,
63
+ value=float(TTI.image_gen_guidence_scale), # Convert the value to float
64
+ step=0.5
65
+ )
66
+
67
+ # User Input: Image Size
68
+ image_width = st.number_input("Image Width", min_value=64, max_value=1024, value=TTI.image_gen_size[0], step=64)
69
+ image_height = st.number_input("Image Height", min_value=64, max_value=1024, value=TTI.image_gen_size[1], step=64)
70
+
71
+ # Generate Image Button
72
+ if st.button("Generate Image"):
73
+ TTI.image_gen_steps = image_gen_steps
74
+ TTI.image_gen_guidence_scale = guidance_scale
75
+ TTI.image_gen_size = (image_width, image_height)
76
+ with st.spinner("Generating image..."):
77
+ image = generate_image(prompt, image_gen_model)
78
+ st.image(image, caption=f"Generated Image for Prompt: '{prompt}'", use_column_width=True)
79
+
80
+ st.write("Adjust parameters to customize the image generation!")
requirements.txt ADDED
File without changes