File size: 2,934 Bytes
1578456
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
67
68
69
70
71
72
73
74
75
76
77
78
# Step 1: Install necessary packages
# !pip install stable-diffusion-cpp-python requests

# Step 2: Import required libraries
import os
import requests
from stable_diffusion_cpp import StableDiffusion

# Function to download a file and print status
def download_file(url, save_path):
    print(f"Starting download for: {save_path}")
    response = requests.get(url, stream=True)
    response.raise_for_status()  # Check for request errors
    
    # Get the total file size for progress indication
    total_size = int(response.headers.get('content-length', 0))
    downloaded_size = 0

    with open(save_path, 'wb') as f:
        for data in response.iter_content(chunk_size=8192):
            f.write(data)
            downloaded_size += len(data)
            # Print progress
            print(f"Downloading {save_path}: {downloaded_size}/{total_size} bytes downloaded", end='\r')

    print(f"\nDownloaded {save_path} successfully.")

# Step 3: Define model URLs
vae_url = "https://huggingface.co/pranavajay/flowgram/resolve/main/vae/diffusion_pytorch_model.safetensors"
model_url = "https://huggingface.co/pranavajay/flowgram/resolve/main/flowgram.safetensors"
clip_url = "https://huggingface.co/pranavajay/flowgram/resolve/main/text_encoder/clip_l.safetensors"
t5xxl_url = "https://huggingface.co/pranavajay/flowgram/resolve/main/text_encoder/t5xxl_fp16.safetensors"

# Step 4: Define local save paths
vae_path = "vae/diffusion_pytorch_model.safetensors"
model_path = "flowgram.safetensors"
clip_path = "text_encoder/clip_l.safetensors"
t5xxl_path = "text_encoder/t5xxl_fp16.safetensors"

# Step 5: Create directories if they don't exist
os.makedirs("vae", exist_ok=True)
os.makedirs("text_encoder", exist_ok=True)

# Step 6: Download the models if they do not exist
if not os.path.exists(vae_path):
    download_file(vae_url, vae_path)
if not os.path.exists(model_path):
    download_file(model_url, model_path)
if not os.path.exists(clip_path):
    download_file(clip_url, clip_path)
if not os.path.exists(t5xxl_path):
    download_file(t5xxl_url, t5xxl_path)

# Step 7: Initialize the StableDiffusion model
flowgram_diffusion = StableDiffusion(
    diffusion_model_path=model_path,
    clip_l_path=clip_path,
    t5xxl_path=t5xxl_path,
    vae_path=vae_path,
)

# Step 8: Function to generate an image from text
def generate_image(prompt, num_images=1, guidance_scale=7.5):
    # Generate images
    images = flowgram_diffusion.generate(prompt, num_images=num_images, guidance_scale=guidance_scale)
    
    # Return the generated images
    return images

# Step 9: Example usage
if __name__ == "__main__":
    prompt = "A beautiful landscape with mountains and a river"
    generated_images = generate_image(prompt)
    
    # Save or display the images
    for i, img in enumerate(generated_images):
        img.save(f"generated_image_{i}.png")  # Save each generated image
        print(f"Saved generated_image_{i}.png")