import gradio as gr import numpy as np from PIL import Image import insightface from insightface.app import FaceAnalysis # ---------- Load models once ---------- app = FaceAnalysis(name="buffalo_l") app.prepare(ctx_id=0, det_size=(640, 640)) swapper = insightface.model_zoo.get_model("inswapper_128.onnx", download=False, download_zip=False) # ---------- HTML description ---------- description_html = """

Face Swap

by Tony Assi

Try out Video Face Swap ❤️

""" # ---------- Swap logic ---------- def swap_faces(src_img, dest_img): src_faces = app.get(src_img) dest_faces = app.get(dest_img) res = dest_img.copy() if src_faces and dest_faces: res = swapper.get(res, dest_faces[0], src_faces[0], paste_back=True) return Image.fromarray(np.uint8(res)).convert("RGB") # ---------- Interface ---------- gr.Interface( fn=swap_faces, inputs=[gr.Image(), gr.Image()], outputs=gr.Image(), description=description_html, examples=[ ['./Images/kim.jpg', './Images/marilyn.jpg'], ['./Images/friends.jpg', './Images/friends.jpg'] ], ).launch()