yeq6x's picture
/images
82d160e
raw
history blame
2.71 kB
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
# 初期化
initialize(_use_local=False, use_gpu=True)
init_model(use_local=False)
load_wd14_tagger_model()
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
def gradio_process_image(input_image, mode, weight1, weight2):
sotai_image, sketch_image = process_image(input_image, mode, weight1, weight2)
return sotai_image, sketch_image
# サンプル画像のパスリスト
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=sample_images,
inputs=input_image,
outputs=[sotai_output, sketch_output],
fn=gradio_process_image,
cache_examples=True,
)
process_btn.click(
fn=gradio_process_image,
inputs=[input_image, mode, weight1, weight2],
outputs=[sotai_output, sketch_output]
)
# Spacesへのデプロイ設定
demo.launch()