Spaces:
Runtime error
Runtime error
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) | |