gradio_app / run.py
mikx1's picture
Upload folder using huggingface_hub
b5ea024
raw
history blame
1.85 kB
import os
import logging
import gdown
import insightface
import gradio as gr
from insightface.app import FaceAnalysis
from PIL import Image
import numpy as np
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.INFO)
def prepare_face_analysis():
"""Подготовка приложения FaceAnalysis."""
app = FaceAnalysis(name='buffalo_l')
app.prepare(ctx_id=0, det_size=(640, 640))
return app
def download_model(model_url, model_path):
"""Загрузка модели, если она еще не существует."""
if not os.path.exists(model_path):
gdown.download(model_url, model_path, quiet=False)
def load_model(model_path):
"""Загрузка модели."""
return insightface.model_zoo.get_model(model_path, download=False)
def swap_faces(user_image, celebrity_image):
"""Меняем лица на заданных изображениях."""
try:
# Меняем лица
input_name = onnx_model.get_inputs()[0].name
input_data = np.concatenate([user_image, celebrity_image], axis=0)
results = onnx_model.run(None, {input_name: input_data})
swapped_face = Image.fromarray(results[0])
except Exception as e:
logging.error("Ошибка при смене лиц: %s", e)
swapped_face = user_image
return swapped_face
# Подготовка приложения FaceAnalysis
app = prepare_face_analysis()
# Загрузка и загрузка модели
model_url = 'https://drive.google.com/uc?id=1HvZ4MAtzlY74Dk4ASGIS9L6Rg5oZdqvu'
model_path = 'inswapper_128.onnx'
download_model(model_url, model_path)
onnx_model = load_model(model_path)
# Запуск интерфейса Gradio
iface = gr.Interface(fn=swap_faces, inputs=["image", "image"], outputs="image")
iface.launch(share=True)