You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
import requests
|
|
from client_utils import (
|
|
FaceSwapRequest,
|
|
FaceSwapUnit,
|
|
PostProcessingOptions,
|
|
FaceSwapResponse,
|
|
pil_to_base64,
|
|
)
|
|
|
|
address = "http://127.0.0.1:7860"
|
|
|
|
# First face unit :
|
|
unit1 = FaceSwapUnit(
|
|
source_img=pil_to_base64("../../references/man.png"), # The face you want to use
|
|
faces_index=(0,), # Replace first face
|
|
)
|
|
|
|
# Second face unit :
|
|
unit2 = FaceSwapUnit(
|
|
source_img=pil_to_base64("../../references/woman.png"), # The face you want to use
|
|
same_gender=True,
|
|
faces_index=(0,), # Replace first woman since same gender is on
|
|
)
|
|
|
|
# Post-processing config :
|
|
pp = PostProcessingOptions(
|
|
face_restorer_name="CodeFormer", codeformer_weight=0.5, restorer_visibility=1
|
|
)
|
|
|
|
# Prepare the request
|
|
request = FaceSwapRequest(
|
|
image=pil_to_base64("test_image.png"), units=[unit1, unit2], postprocessing=pp
|
|
)
|
|
|
|
|
|
result = requests.post(
|
|
url=f"{address}/faceswaplab/swap_face",
|
|
data=request.json(),
|
|
headers={"Content-Type": "application/json; charset=utf-8"},
|
|
)
|
|
response = FaceSwapResponse.parse_obj(result.json())
|
|
|
|
for img, info in zip(response.pil_images, response.infos):
|
|
img.show(title=info)
|