Spaces:
Runtime error
Runtime error
import gradio as gr | |
import insightface | |
import onnxruntime | |
from insightface.app import FaceAnalysis | |
def face_swap(user_image, celebrity_image): | |
# Загрузка моделей | |
detector = insightface.model_zoo.get_model('retinaface_r50_v1') | |
arcface = insightface.model_zoo.get_model('arcface_r100_v1') | |
# Определение пути к модели замены лица | |
onnx_model_path = 'face_swap_model.onnx' | |
# Обнаружение лиц | |
user_bbox, user_landmarks = detector.detect(user_image) | |
celebrity_bbox, celebrity_landmarks = detector.detect(celebrity_image) | |
# Выравнивание лиц | |
user_aligned = FaceAnalysis.align(user_image, user_landmarks) | |
celebrity_aligned = FaceAnalysis.align(celebrity_image, celebrity_landmarks) | |
# Получение векторных представлений лиц | |
user_embedding = arcface.get_embedding(user_aligned) | |
celebrity_embedding = arcface.get_embedding(celebrity_aligned) | |
# Загрузка модели ONNX | |
session = onnxruntime.InferenceSession(onnx_model_path) | |
# Подготовка входных данных | |
input_name = session.get_inputs()[0].name | |
user_data = user_aligned.transpose(2, 0, 1) | |
celebrity_data = celebrity_aligned.transpose(2, 0, 1) | |
input_feed = {input_name: np.concatenate([user_data, celebrity_data], axis=0)} | |
# Замена лица | |
results = session.run(None, input_feed) | |
swapped_face = results[0].transpose(1, 2, 0) | |
return swapped_face | |
iface = gr.Interface(fn=face_swap, inputs=["image", "image"], outputs="image") | |
iface.launch() | |