File size: 3,817 Bytes
636012e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
79
80
81
82
83
84
85
86
87
88
import gradio as gr
from transformers import pipeline
from PIL import Image

# -----------------------------
# 1. Модельді жүктеу: Style Transfer (Фотосуретті сурет стиліне өзгерту)
# -----------------------------
# Бұл модель GPU-сыз, CPU-да жұмыс істеуге бейімделген
try:
    style_transfer_model = pipeline(
        "image-to-image", 
        model="akhaliq/style-transfer-transformer-pytorch",
        # Trust_remote_code=True керек болуы мүмкін
    )
except Exception as e:
    # Егер модель жүктелмесе, қатені көрсету
    print(f"Стиль ауыстыру моделін жүктеу қатесі: {e}")
    style_transfer_model = None


# -----------------------------
# 2. Анализ функциясы
# -----------------------------
def apply_style_transfer(image, style_prompt):
    """
    Берілген суретке таңдалған стильді қолданады.
    """
    if style_transfer_model is None:
        return None, "Қате: Модель жүктелмеді. Space журналдарын тексеріңіз."

    # Егер сурет жүктелмесе
    if image is None:
        return None, "Қайта өңдеу үшін сурет жүктеңіз."

    try:
        # Модельді іске қосу
        result = style_transfer_model(
            image,
            prompt=style_prompt,
            num_inference_steps=20  # CPU үшін қадамдарды азайту
        )
        
        # Нәтиже суреті
        styled_image = result[0]['generated_image']
        
        # Мәтіндік нәтиже
        output_text = f"✨ Сіздің суретіңіз **'{style_prompt}'** стилінде сәтті қайта өңделді."
        
        return styled_image, output_text
        
    except Exception as e:
        return None, f"Өңдеу кезінде қате шықты: {e}"

# -----------------------------
# 3. Интерфейс
# -----------------------------
with gr.Blocks(title="StyleTransfer AI | Фотосуреттен Өнерге") as demo:
    gr.Markdown(
        "<h1 style='text-align:center; color:purple;'>🖼️ Фотосуреттен Өнерге: Әлемдегі Ғажайып Стиль</h1>"
    )
    gr.Markdown(
        "<p style='text-align:center;'>Сурет жүктеңіз және оны қай өнер стилінде көргіңіз келетінін жазыңыз (мысалы: 'Vincent van Gogh', 'Impressionism', 'Cyberpunk').</p>"
    )
    
    with gr.Row():
        # Кіріс: Сурет және Стильдік сөз
        with gr.Column():
            image_input = gr.Image(label="1. Өңделетін фотосурет", type="pil", sources=["upload", "webcam"])
            prompt_input = gr.Textbox(
                label="2. Қажетті стильді жазыңыз", 
                value="Impressionist painting of a Kazakh steppe",
                placeholder="Мысалы: A sketch drawing, Van Gogh style, Cyberpunk art"
            )
            process_btn = gr.Button("🎨 Стильді қолдану", variant="primary")
            
        # Шығыс: Өңделген сурет
        with gr.Column():
            styled_image_output = gr.Image(label="✨ Өңделген нәтиже", type="pil", interactive=False)
            output_text = gr.Markdown("Нәтиже осы жерде пайда болады.")
            
    # Функцияны батырмаға байланыстыру
    process_btn.click(
        fn=apply_style_transfer, 
        inputs=[image_input, prompt_input], 
        outputs=[styled_image_output, output_text]
    )

demo.launch()