import logging
import os
import gradio as gr
import numpy as np
from PIL import Image
from huggingface_hub import hf_hub_url, cached_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 = 0 # Based on hugging face logs
def load_model():
REPO_ID = "Podtekatel/Avatar2VSK"
FILENAME = "avatar2_260_ep_181.onnx"
global model
global pipeline
# Old model
model_path = cached_download(
hf_hub_url(REPO_ID, FILENAME), use_auth_token=os.getenv('HF_TOKEN')
)
model = ONNXModel(model_path)
pipeline = VSNetModelPipeline(model, StatRetinaFaceDetector(MODEL_IMG_SIZE), background_resize=1024, no_detected_resize=1024)
return model
load_model()
def inference(img):
img = np.array(img)
out_img = pipeline(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 = "Avatar 2 Style Transfer"
description = "Gradio Demo for Avatar: The Way of Water style transfer. To use it, simply upload your image, or click one of the examples to load them. Press ❤️ if you like this space or mention this repo on Reddit or Twitter!
" \
"""