File size: 2,420 Bytes
046b3c9
 
 
 
 
 
20428be
046b3c9
 
 
 
 
 
 
 
 
 
86279bb
388fac5
046b3c9
86279bb
388fac5
046b3c9
de7b3c0
 
046b3c9
de7b3c0
efd8ae7
de7b3c0
046b3c9
de7b3c0
046b3c9
86279bb
046b3c9
 
86279bb
046b3c9
86279bb
de7b3c0
046b3c9
bb610db
 
 
046b3c9
 
 
86279bb
c974deb
046b3c9
 
 
 
 
86279bb
 
046b3c9
 
 
86279bb
046b3c9
 
 
a3bd58d
 
046b3c9
 
 
 
398461d
046b3c9
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
import logging
import os

import gradio as gr
import numpy as np
from PIL import Image
from huggingface_hub import hf_hub_url, hf_hub_download

from inference.face_detector import StatRetinaFaceDetector
from inference.model_pipeline import VSNetModelPipeline
from inference.onnx_model import ONNXModel

logging.basicConfig(
    format='%(asctime)s %(levelname)-8s %(message)s',
    level=logging.INFO,
    datefmt='%Y-%m-%d %H:%M:%S')

MODEL_IMG_SIZE = 512
usage_count = 82  # Based on hugging face logs
def load_model():
    REPO_ID = "Podtekatel/ArcaneVSK2"
    FILENAME_OLD = "arcane_exp_230_ep_136_512_res_V2_lighter.onnx"

    global model_old
    global pipeline_old

    # Old model
    model_path = hf_hub_download(REPO_ID, FILENAME_OLD, use_auth_token=os.getenv('HF_TOKEN'))
    model_old = ONNXModel(model_path)

    pipeline_old = VSNetModelPipeline(model_old, StatRetinaFaceDetector(MODEL_IMG_SIZE), background_resize=1024, no_detected_resize=1024)

    return model_old
load_model()

def inference(img):
    img = np.array(img)
    out_img = pipeline_old(img)

    out_img = Image.fromarray(out_img)
    global usage_count
    usage_count += 1
    logging.info(f'Usage count is {usage_count}')
    return out_img


title = "ARCNStyleTransferV2"
description = "Gradio Demo for Arcane Season 1 style transfer. To use it, simply upload your image, or click one of the examples to load them. Press ❤️ if you like this space!"
article = "This is one of my successful experiments on style transfer. I've built my own pipeline, generator model and private dataset to train this model<br>" \
          "" \
          "" \
          "" \
          "Model pipeline which used in project is improved CartoonGAN.<br>" \
          "This model was trained on RTX 2080 Ti 3 days with batch size 7.<br>" \
          "Model weights 80 MB in ONNX fp32 format, infers 100 ms on GPU and 600 ms on CPU at 512x512 resolution.<br>" \
          "If you want to use this app or integrate this model into yours, please contact me at email 'neuromancer.ai.lover@gmail.com'."

imgs_folder = 'demo'
examples = [[os.path.join(imgs_folder, img_filename)] for img_filename in sorted(os.listdir(imgs_folder))]

demo = gr.Interface(
    fn=inference,
    inputs=[gr.Image(type="pil")],
    outputs=gr.Image(type="pil"),
    title=title,
    description=description,
    article=article,
    examples=examples)
demo.queue()
demo.launch()