Spaces:
Runtime error
Runtime error
File size: 1,853 Bytes
b5ea024 |
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 |
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)
|