File size: 1,779 Bytes
88a1691
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from xdog import to_sketch
from model import Generator, ResNeXtBottleneck
import torch
from data_utils import *
import glob
gen = torch.load('model/model.pth')

def convert_to_lineart(img, sigma, k, gamma, epsilon, phi, area_min):
    phi = 10 * phi
    out = to_sketch(img, sigma=sigma, k=k, gamma=gamma, epsilon=epsilon, phi=phi, area_min=area_min)
    return out

def inference(sk):
    return predict_img(gen, sk, hnt = None)

title = "To Line Art"
description = "Line art colorization showcase. "
article = "Github Repo"

with gr.Blocks() as demo:
    with gr.Row():
        with gr.Column():
            image = gr.Image(type="pil", value='examples/Genshin-Impact-anime.jpg')
            to_lineart_button = gr.Button("To Lineart")

            gr.Examples(
                examples=glob.glob('examples/*.jpg'),
                inputs=image,
                outputs=image,
                fn=None,
                cache_examples=False,
            )

        with gr.Column():
            sigma = gr.Slider(0.1, 0.5, value=0.3, step=0.1, label='σ')
            k = gr.Slider(1.0, 8.0, value=4.5, step=0.5, label='k')
            gamma = gr.Slider(0.05, 1.0, value=0.95, step=0.05, label='γ')
            epsilon = gr.Slider(-2, 2, value=-1, step=0.5, label='ε')
            phi = gr.Slider(10, 20, label = 'φ', value=15)
            min_area = gr.Slider(1, 5, value=2, step=1, label='Minimal Area')
        
        with gr.Column():
            lineart = gr.Image(type="pil", image_mode='L')
            inpaint_button = gr.Button("Inpaint")

    to_lineart_button.click(convert_to_lineart, inputs=[image, sigma, k, gamma, epsilon, phi, min_area], outputs=lineart)
    inpaint_button.click(inference, inputs=lineart, outputs=lineart)

demo.launch()