File size: 2,607 Bytes
b7cfcd0
c9cc441
b7cfcd0
c9cc441
b7cfcd0
 
 
 
 
6d39cf5
 
b7cfcd0
79cb9f3
b7cfcd0
 
 
2ad7641
b7cfcd0
 
 
c9cc441
b7cfcd0
 
 
c9cc441
b7cfcd0
 
 
 
0c3e0f3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b7cfcd0
 
 
 
 
c9cc441
b7cfcd0
 
 
 
 
 
 
 
 
 
 
 
ae27b39
b7cfcd0
fff4cf4
b3a1d7a
b7cfcd0
2ad7641
b7cfcd0
 
d7a562e
b7cfcd0
2ad7641
b7cfcd0
 
 
 
 
 
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
import gradio as gr
import os
import io
from PIL import Image
import base64
from scripts.process_utils import initialize, process_image_as_base64
from scripts.anime import init_model
from scripts.generate_prompt import load_wd14_tagger_model

import spaces

# 初期化
initialize(_use_local=False, use_gpu=True, use_dotenv=False)
init_model(use_local=False)
load_wd14_tagger_model()

@spaces.GPU
def process_image(input_image, mode, weight1, weight2):
    # 画像処理ロジック
    sotai_image, sketch_image = process_image_as_base64(input_image, mode, weight1, weight2)
    
    # Base64文字列をPIL Imageに変換
    sotai_pil = Image.open(io.BytesIO(base64.b64decode(sotai_image)))
    sketch_pil = Image.open(io.BytesIO(base64.b64decode(sketch_image)))
    
    return sotai_pil, sketch_pil

# サンプル画像のパスリスト
sample_images = [
  'images/sample1.png',
  'images/sample2.png',
  # 'images/sample3.png',
  'images/sample4.png',
  'images/sample5.png',
  'images/sample6.png',
  'images/sample7.png',
  'images/sample8.png',
  # 'images/sample9.png',
  'images/sample10.png',
  'images/sample11.png',
  # 'images/sample12.png',
  # 'images/sample13.png',
  # 'images/sample14.png',
  'images/sample15.png',
  'images/sample16.png',
  # 'images/sample17.png',
  'images/sample18.png',
  'images/sample19.png',
  'images/sample20.png',
  'images/sample21.png',
]

# Gradio インターフェースの定義
with gr.Blocks() as demo:
    gr.Markdown("# Image2Body Test")
    
    with gr.Row():
        with gr.Column():
            input_image = gr.Image(type="pil", label="Input Image")
            mode = gr.Radio(["original", "refine"], label="Mode", value="original")
            with gr.Row():
                weight1 = gr.Slider(0, 2, value=0.6, step=0.05, label="Weight 1 (Sketch)")
                weight2 = gr.Slider(0, 1, value=0.05, step=0.025, label="Weight 2 (Body)")
            process_btn = gr.Button("Process")
        
        with gr.Column():
            sotai_output = gr.Image(type="pil", label="Sotai (Body) Image")
            sketch_output = gr.Image(type="pil", label="Sketch Image")
    
    gr.Examples(
        examples=[[path, "original", 0.6, 0.05] for path in sample_images],
        inputs=[input_image, mode, weight1, weight2],
        outputs=[sotai_output, sketch_output],
        fn=process_image,
        cache_examples=True,
    )
    
    process_btn.click(
        fn=process_image,
        inputs=[input_image, mode, weight1, weight2],
        outputs=[sotai_output, sketch_output]
    )

# Spacesへのデプロイ設定
demo.launch()