File size: 2,680 Bytes
c6428de
 
 
 
 
 
 
 
 
db21836
926c7dc
db21836
94a7a4b
db21836
926c7dc
2af9447
 
db21836
 
 
 
 
c6428de
db21836
 
 
c6428de
db21836
c6428de
db21836
 
c6428de
db21836
c6428de
 
 
 
 
db21836
c6428de
 
 
 
db21836
c6428de
 
732c6ea
c6428de
 
 
 
 
 
 
 
 
 
69d2a66
c6428de
94a7a4b
c6428de
db21836
 
 
c6428de
 
9ebfd06
 
926c7dc
c6428de
 
 
db21836
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
import gradio as gr
import requests
import os
from PIL import Image
from io import BytesIO
from tqdm import tqdm
import time

repo = "artificialguybr/TshirtDesignRedmond-V2"

def infer(color_prompt, dress_type_prompt, design_prompt):
    # Improved prompt for higher accuracy
    prompt = (
        f"A high-quality digital image of a {color_prompt} {dress_type_prompt}, "
        f"featuring a {design_prompt} printed in sharp detail printedon the {dress_type_prompt},"
        f"hanging on the plain wall."
        f"The fabric has realistic texture,"
        f"smooth folds, and accurate lighting. The design is perfectly aligned, with natural shadows "
        f"and highlights, creating a photorealistic look."
    )
    
    print("Generating image with prompt:", prompt)
    api_url = f"https://api-inference.huggingface.co/models/{repo}"
    
    headers = {}  # If API token needed, add here
    
    payload = {
        "inputs": prompt,
        "parameters": {
            # Optimized negative prompt
            "negative_prompt": "low quality, artifacts, distorted, blurry, overexposed, underexposed, unrealistic texture, poor lighting, misaligned print, plastic-like fabric, grainy, washed-out colors, 3D render, cartoon, digital art, watermark, bad anatomy, malformed, cluttered design",
            "num_inference_steps": 30,
            "scheduler": "EulerAncestralDiscreteScheduler"  # Faster & more accurate scheduler
        },
    }

    error_count = 0
    pbar = tqdm(total=None, desc="Loading model")
    
    while True:
        print("Sending request to API...")
        response = requests.post(api_url, headers=headers, json=payload)
        print("API response status code:", response.status_code)
        
        if response.status_code == 200:
            print("Image generation successful!")
            return Image.open(BytesIO(response.content))
        elif response.status_code == 503:
            time.sleep(1)
            pbar.update(1)
        elif response.status_code == 500 and error_count < 5:
            time.sleep(1)
            error_count += 1
        else:
            print("API Error:", response.status_code)
            raise Exception(f"API Error: {response.status_code}")

# Gradio Interface
iface = gr.Interface(
    fn=infer,
    inputs=[
        gr.Textbox(lines=1, placeholder="Color Prompt"),
        gr.Textbox(lines=1, placeholder="Dress Type Prompt"),
        gr.Textbox(lines=2, placeholder="Design Prompt"),
    ],
    outputs="image",
    title="Make your Brand",
    description="Generation of clothes",
    examples=[["Red", "T-shirt", "Simple design"]]
)

print("Launching Gradio interface...")
iface.launch()