zsxkib
/
flash-face
FlashFace: Human Image Personalization with High-fidelity Identity Preservation
Prediction
zsxkib/flash-face:edb17f54faec253ee86e58e0b5f18f24a89c4e31fe7fcefa970e13d8ad934117IDkskzqpe7ghrgm0cf0wabf0awr4StatusSucceededSourceWebHardwareA40 (Large)Total durationCreatedInput
- seed
- 0
- steps
- 50
- num_sample
- 2
- face_guidance
- 2.5
- lamda_feature
- 0.9
- output_format
- webp
- output_quality
- 80
- negative_prompt
- nsfw
- positive_prompt
- A handsome young man with long brown hair is sitting in the desert
- face_bounding_box
- [0., 0., 0., 0.]
- text_control_scale
- 7.5
- default_negative_prompt
- blurry, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face
- default_position_prompt
- best quality, masterpiece,ultra-detailed, UHD 4K, photographic
- step_to_launch_face_guidance
- 700
{ "seed": 0, "steps": 50, "num_sample": 2, "face_guidance": 2.5, "lamda_feature": 0.9, "output_format": "webp", "output_quality": 80, "negative_prompt": "nsfw", "positive_prompt": "A handsome young man with long brown hair is sitting in the desert", "reference_face_1": "https://replicate.delivery/pbxt/KnE00y2FMOW0170eWcdyDUe09FZLCKiJrDwYYCUp42yWdni0/avatar.png", "face_bounding_box": "[0., 0., 0., 0.]", "text_control_scale": 7.5, "default_negative_prompt": "blurry, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face", "default_position_prompt": "best quality, masterpiece,ultra-detailed, UHD 4K, photographic", "step_to_launch_face_guidance": 700 }
Install Replicate’s Node.js client library:npm install replicate
Import and set up the client:import Replicate from "replicate"; const replicate = new Replicate({ auth: process.env.REPLICATE_API_TOKEN, });
Run zsxkib/flash-face using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
const output = await replicate.run( "zsxkib/flash-face:edb17f54faec253ee86e58e0b5f18f24a89c4e31fe7fcefa970e13d8ad934117", { input: { seed: 0, steps: 50, num_sample: 2, face_guidance: 2.5, lamda_feature: 0.9, output_format: "webp", output_quality: 80, negative_prompt: "nsfw", positive_prompt: "A handsome young man with long brown hair is sitting in the desert", reference_face_1: "https://replicate.delivery/pbxt/KnE00y2FMOW0170eWcdyDUe09FZLCKiJrDwYYCUp42yWdni0/avatar.png", face_bounding_box: "[0., 0., 0., 0.]", text_control_scale: 7.5, default_negative_prompt: "blurry, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face", default_position_prompt: "best quality, masterpiece,ultra-detailed, UHD 4K, photographic", step_to_launch_face_guidance: 700 } } ); // To access the file URL: console.log(output[0].url()); //=> "http://example.com" // To write the file to disk: fs.writeFile("my-image.png", output[0]);
To learn more, take a look at the guide on getting started with Node.js.
Install Replicate’s Python client library:pip install replicate
Import the client:import replicate
Run zsxkib/flash-face using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
output = replicate.run( "zsxkib/flash-face:edb17f54faec253ee86e58e0b5f18f24a89c4e31fe7fcefa970e13d8ad934117", input={ "seed": 0, "steps": 50, "num_sample": 2, "face_guidance": 2.5, "lamda_feature": 0.9, "output_format": "webp", "output_quality": 80, "negative_prompt": "nsfw", "positive_prompt": "A handsome young man with long brown hair is sitting in the desert", "reference_face_1": "https://replicate.delivery/pbxt/KnE00y2FMOW0170eWcdyDUe09FZLCKiJrDwYYCUp42yWdni0/avatar.png", "face_bounding_box": "[0., 0., 0., 0.]", "text_control_scale": 7.5, "default_negative_prompt": "blurry, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face", "default_position_prompt": "best quality, masterpiece,ultra-detailed, UHD 4K, photographic", "step_to_launch_face_guidance": 700 } ) print(output)
To learn more, take a look at the guide on getting started with Python.
Run zsxkib/flash-face using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
curl -s -X POST \ -H "Authorization: Bearer $REPLICATE_API_TOKEN" \ -H "Content-Type: application/json" \ -H "Prefer: wait" \ -d $'{ "version": "edb17f54faec253ee86e58e0b5f18f24a89c4e31fe7fcefa970e13d8ad934117", "input": { "seed": 0, "steps": 50, "num_sample": 2, "face_guidance": 2.5, "lamda_feature": 0.9, "output_format": "webp", "output_quality": 80, "negative_prompt": "nsfw", "positive_prompt": "A handsome young man with long brown hair is sitting in the desert", "reference_face_1": "https://replicate.delivery/pbxt/KnE00y2FMOW0170eWcdyDUe09FZLCKiJrDwYYCUp42yWdni0/avatar.png", "face_bounding_box": "[0., 0., 0., 0.]", "text_control_scale": 7.5, "default_negative_prompt": "blurry, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face", "default_position_prompt": "best quality, masterpiece,ultra-detailed, UHD 4K, photographic", "step_to_launch_face_guidance": 700 } }' \ https://api.replicate.com/v1/predictions
To learn more, take a look at Replicate’s HTTP API reference docs.
Output
{ "completed_at": "2024-04-22T18:32:55.989784Z", "created_at": "2024-04-22T18:32:33.412000Z", "data_removed": false, "error": null, "id": "kskzqpe7ghrgm0cf0wabf0awr4", "input": { "seed": 0, "steps": 50, "num_sample": 2, "face_guidance": 2.5, "lamda_feature": 0.9, "output_format": "webp", "output_quality": 80, "negative_prompt": "nsfw", "positive_prompt": "A handsome young man with long brown hair is sitting in the desert", "reference_face_1": "https://replicate.delivery/pbxt/KnE00y2FMOW0170eWcdyDUe09FZLCKiJrDwYYCUp42yWdni0/avatar.png", "face_bounding_box": "[0., 0., 0., 0.]", "text_control_scale": 7.5, "default_negative_prompt": "blurry, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face", "default_position_prompt": "best quality, masterpiece,ultra-detailed, UHD 4K, photographic", "step_to_launch_face_guidance": 700 }, "logs": "[!] (<class 'str'>) pos_prompt=A handsome young man with long brown hair is sitting in the desert\n[!] (<class 'str'>) neg_prompt=nsfw\n[!] (<class 'int'>) steps=50\n[!] (<class 'str'>) face_bbox=[0., 0., 0., 0.]\n[!] (<class 'float'>) lamda_feat=0.9\n[!] (<class 'float'>) face_guidence=2.5\n[!] (<class 'int'>) num_sample=2\n[!] (<class 'float'>) text_control_scale=7.5\n[!] (<class 'int'>) seed=0\n[!] (<class 'int'>) step_to_launch_face_guidence=700\n[!] (<class 'PIL.PngImagePlugin.PngImageFile'>) reference_face_1=<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=1132x1120 at 0x7F4BAE7D10F0>\n[!] (<class 'NoneType'>) reference_face_2=None\n[!] (<class 'NoneType'>) reference_face_3=None\n[!] (<class 'NoneType'>) reference_face_4=None\n[!] (<class 'str'>) default_pos_prompt=best quality, masterpiece,ultra-detailed, UHD 4K, photographic\n[!] (<class 'str'>) default_neg_prompt=blurry, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face\n0\nfinal pos_prompt: A handsome young man with long brown hair is sitting in the desert, best quality, masterpiece,ultra-detailed, UHD 4K, photographic\nfinal neg_prompt: nsfw, blurry, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face\ndetected 1 faces\n[0.0, 0.0, 0.0, 0.0]\n 0%| | 0/50 [00:00<?, ?it/s]\n 2%|▏ | 1/50 [00:00<00:14, 3.30it/s]\n 4%|▍ | 2/50 [00:00<00:14, 3.31it/s]\n 6%|▌ | 3/50 [00:00<00:14, 3.30it/s]\n 8%|▊ | 4/50 [00:01<00:13, 3.31it/s]\n 10%|█ | 5/50 [00:01<00:13, 3.30it/s]\n 12%|█▏ | 6/50 [00:01<00:13, 3.29it/s]\n 14%|█▍ | 7/50 [00:02<00:13, 3.28it/s]\n 16%|█▌ | 8/50 [00:02<00:12, 3.29it/s]\n 18%|█▊ | 9/50 [00:02<00:12, 3.28it/s]\n 20%|██ | 10/50 [00:03<00:12, 3.28it/s]\n 22%|██▏ | 11/50 [00:03<00:11, 3.29it/s]\n 24%|██▍ | 12/50 [00:03<00:11, 3.29it/s]\n 26%|██▌ | 13/50 [00:03<00:11, 3.29it/s]\n 28%|██▊ | 14/50 [00:04<00:10, 3.29it/s]\n 30%|███ | 15/50 [00:04<00:10, 3.29it/s]\n 32%|███▏ | 16/50 [00:04<00:11, 2.96it/s]\n 34%|███▍ | 17/50 [00:05<00:11, 2.76it/s]\n 36%|███▌ | 18/50 [00:05<00:12, 2.64it/s]\n 38%|███▊ | 19/50 [00:06<00:12, 2.54it/s]\n 40%|████ | 20/50 [00:06<00:12, 2.49it/s]\n 42%|████▏ | 21/50 [00:07<00:11, 2.46it/s]\n 44%|████▍ | 22/50 [00:07<00:11, 2.44it/s]\n 46%|████▌ | 23/50 [00:07<00:11, 2.42it/s]\n 48%|████▊ | 24/50 [00:08<00:10, 2.42it/s]\n 50%|█████ | 25/50 [00:08<00:10, 2.41it/s]\n 52%|█████▏ | 26/50 [00:09<00:09, 2.40it/s]\n 54%|█████▍ | 27/50 [00:09<00:09, 2.40it/s]\n 56%|█████▌ | 28/50 [00:10<00:09, 2.39it/s]\n 58%|█████▊ | 29/50 [00:10<00:08, 2.39it/s]\n 60%|██████ | 30/50 [00:10<00:08, 2.39it/s]\n 62%|██████▏ | 31/50 [00:11<00:07, 2.39it/s]\n 64%|██████▍ | 32/50 [00:11<00:07, 2.39it/s]\n 66%|██████▌ | 33/50 [00:12<00:07, 2.39it/s]\n 68%|██████▊ | 34/50 [00:12<00:06, 2.40it/s]\n 70%|███████ | 35/50 [00:12<00:06, 2.39it/s]\n 72%|███████▏ | 36/50 [00:13<00:05, 2.39it/s]\n 74%|███████▍ | 37/50 [00:13<00:05, 2.39it/s]\n 76%|███████▌ | 38/50 [00:14<00:05, 2.39it/s]\n 78%|███████▊ | 39/50 [00:14<00:04, 2.39it/s]\n 80%|████████ | 40/50 [00:15<00:04, 2.39it/s]\n 82%|████████▏ | 41/50 [00:15<00:03, 2.39it/s]\n 84%|████████▍ | 42/50 [00:15<00:03, 2.39it/s]\n 86%|████████▌ | 43/50 [00:16<00:02, 2.39it/s]\n 88%|████████▊ | 44/50 [00:16<00:02, 2.39it/s]\n 90%|█████████ | 45/50 [00:17<00:02, 2.39it/s]\n 92%|█████████▏| 46/50 [00:17<00:01, 2.39it/s]\n 94%|█████████▍| 47/50 [00:17<00:01, 2.38it/s]\n 96%|█████████▌| 48/50 [00:18<00:00, 2.39it/s]\n 98%|█████████▊| 49/50 [00:18<00:00, 2.39it/s]\n100%|██████████| 50/50 [00:19<00:00, 2.39it/s]\n100%|██████████| 50/50 [00:19<00:00, 2.60it/s]\n[~] Saving to /tmp/image_0.webp...\n[~] Output format: WEBP\n[~] Output quality: 80\nSaved image 0 at /tmp/image_0.webp\n[~] Saving to /tmp/image_1.webp...\n[~] Output format: WEBP\n[~] Output quality: 80\nSaved image 1 at /tmp/image_1.webp", "metrics": { "predict_time": 22.482575, "total_time": 22.577784 }, "output": [ "https://replicate.delivery/pbxt/dxLVR2tFcuIMLVKvgLStZDLzHbX364z1OXiK8i1GyLlVfiWJA/image_0.webp", "https://replicate.delivery/pbxt/ndKec45tLK2tUCBkIFXqx5AgHtdFYoo9KPRcNVDlmH4reFtSA/image_1.webp" ], "started_at": "2024-04-22T18:32:33.507209Z", "status": "succeeded", "urls": { "get": "https://api.replicate.com/v1/predictions/kskzqpe7ghrgm0cf0wabf0awr4", "cancel": "https://api.replicate.com/v1/predictions/kskzqpe7ghrgm0cf0wabf0awr4/cancel" }, "version": "edb17f54faec253ee86e58e0b5f18f24a89c4e31fe7fcefa970e13d8ad934117" }
Generated in[!] (<class 'str'>) pos_prompt=A handsome young man with long brown hair is sitting in the desert [!] (<class 'str'>) neg_prompt=nsfw [!] (<class 'int'>) steps=50 [!] (<class 'str'>) face_bbox=[0., 0., 0., 0.] [!] (<class 'float'>) lamda_feat=0.9 [!] (<class 'float'>) face_guidence=2.5 [!] (<class 'int'>) num_sample=2 [!] (<class 'float'>) text_control_scale=7.5 [!] (<class 'int'>) seed=0 [!] (<class 'int'>) step_to_launch_face_guidence=700 [!] (<class 'PIL.PngImagePlugin.PngImageFile'>) reference_face_1=<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=1132x1120 at 0x7F4BAE7D10F0> [!] (<class 'NoneType'>) reference_face_2=None [!] (<class 'NoneType'>) reference_face_3=None [!] (<class 'NoneType'>) reference_face_4=None [!] (<class 'str'>) default_pos_prompt=best quality, masterpiece,ultra-detailed, UHD 4K, photographic [!] (<class 'str'>) default_neg_prompt=blurry, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face 0 final pos_prompt: A handsome young man with long brown hair is sitting in the desert, best quality, masterpiece,ultra-detailed, UHD 4K, photographic final neg_prompt: nsfw, blurry, ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face detected 1 faces [0.0, 0.0, 0.0, 0.0] 0%| | 0/50 [00:00<?, ?it/s] 2%|▏ | 1/50 [00:00<00:14, 3.30it/s] 4%|▍ | 2/50 [00:00<00:14, 3.31it/s] 6%|▌ | 3/50 [00:00<00:14, 3.30it/s] 8%|▊ | 4/50 [00:01<00:13, 3.31it/s] 10%|█ | 5/50 [00:01<00:13, 3.30it/s] 12%|█▏ | 6/50 [00:01<00:13, 3.29it/s] 14%|█▍ | 7/50 [00:02<00:13, 3.28it/s] 16%|█▌ | 8/50 [00:02<00:12, 3.29it/s] 18%|█▊ | 9/50 [00:02<00:12, 3.28it/s] 20%|██ | 10/50 [00:03<00:12, 3.28it/s] 22%|██▏ | 11/50 [00:03<00:11, 3.29it/s] 24%|██▍ | 12/50 [00:03<00:11, 3.29it/s] 26%|██▌ | 13/50 [00:03<00:11, 3.29it/s] 28%|██▊ | 14/50 [00:04<00:10, 3.29it/s] 30%|███ | 15/50 [00:04<00:10, 3.29it/s] 32%|███▏ | 16/50 [00:04<00:11, 2.96it/s] 34%|███▍ | 17/50 [00:05<00:11, 2.76it/s] 36%|███▌ | 18/50 [00:05<00:12, 2.64it/s] 38%|███▊ | 19/50 [00:06<00:12, 2.54it/s] 40%|████ | 20/50 [00:06<00:12, 2.49it/s] 42%|████▏ | 21/50 [00:07<00:11, 2.46it/s] 44%|████▍ | 22/50 [00:07<00:11, 2.44it/s] 46%|████▌ | 23/50 [00:07<00:11, 2.42it/s] 48%|████▊ | 24/50 [00:08<00:10, 2.42it/s] 50%|█████ | 25/50 [00:08<00:10, 2.41it/s] 52%|█████▏ | 26/50 [00:09<00:09, 2.40it/s] 54%|█████▍ | 27/50 [00:09<00:09, 2.40it/s] 56%|█████▌ | 28/50 [00:10<00:09, 2.39it/s] 58%|█████▊ | 29/50 [00:10<00:08, 2.39it/s] 60%|██████ | 30/50 [00:10<00:08, 2.39it/s] 62%|██████▏ | 31/50 [00:11<00:07, 2.39it/s] 64%|██████▍ | 32/50 [00:11<00:07, 2.39it/s] 66%|██████▌ | 33/50 [00:12<00:07, 2.39it/s] 68%|██████▊ | 34/50 [00:12<00:06, 2.40it/s] 70%|███████ | 35/50 [00:12<00:06, 2.39it/s] 72%|███████▏ | 36/50 [00:13<00:05, 2.39it/s] 74%|███████▍ | 37/50 [00:13<00:05, 2.39it/s] 76%|███████▌ | 38/50 [00:14<00:05, 2.39it/s] 78%|███████▊ | 39/50 [00:14<00:04, 2.39it/s] 80%|████████ | 40/50 [00:15<00:04, 2.39it/s] 82%|████████▏ | 41/50 [00:15<00:03, 2.39it/s] 84%|████████▍ | 42/50 [00:15<00:03, 2.39it/s] 86%|████████▌ | 43/50 [00:16<00:02, 2.39it/s] 88%|████████▊ | 44/50 [00:16<00:02, 2.39it/s] 90%|█████████ | 45/50 [00:17<00:02, 2.39it/s] 92%|█████████▏| 46/50 [00:17<00:01, 2.39it/s] 94%|█████████▍| 47/50 [00:17<00:01, 2.38it/s] 96%|█████████▌| 48/50 [00:18<00:00, 2.39it/s] 98%|█████████▊| 49/50 [00:18<00:00, 2.39it/s] 100%|██████████| 50/50 [00:19<00:00, 2.39it/s] 100%|██████████| 50/50 [00:19<00:00, 2.60it/s] [~] Saving to /tmp/image_0.webp... [~] Output format: WEBP [~] Output quality: 80 Saved image 0 at /tmp/image_0.webp [~] Saving to /tmp/image_1.webp... [~] Output format: WEBP [~] Output quality: 80 Saved image 1 at /tmp/image_1.webp
Want to make some of these yourself?
Run this model