Skip to content

Latest commit

 

History

History
101 lines (77 loc) · 4.1 KB

API.md

File metadata and controls

101 lines (77 loc) · 4.1 KB

ReActor Extension API

Gourieff's ReActor SD WebUI Extension allows to operate via API: both built-in and external (POST and GET requests).

Built-in SD WebUI API

This API is actual if you use Automatic1111 stable-diffusion-webui.

First of all - check the SD Web API Wiki for how to use the API.

  • Call requests.get(url=f'{address}/sdapi/v1/script-info') to find the args that ReActor needs;
  • Define ReActor script args and add like this "alwayson_scripts": {"reactor":{"args":args}} in the payload;
  • Call the API.

You can find the full usage example with all the available parameters and discriptions in the "example" folder.

External ReActor API

ReActor extension supports for external calls via POST or GET requests while your SD WebUI server is working.

⚠️ Source and Target images must be "base64".

Example:

curl -X POST \
	'http://127.0.0.1:7860/reactor/image' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -d '{
    "source_image": "data:image/png;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABQAAD/7g...",
    "target_image": "data:image/png;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABCAAD/7g...",
    "source_faces_index": [0],
    "face_index": [0],
    "upscaler": "4x_NMKD-Siax_200k",
    "scale": 2,
    "upscale_visibility": 1,
    "face_restorer": "CodeFormer",
    "restorer_visibility": 1,
    "restore_first": 1,
    "model": "inswapper_128.onnx",
    "gender_source": 0,
    "gender_target": 0,
    "save_to_file": 0,
    "result_file_path": "",
    "device": "CUDA",
    "mask_face": 1,
    "select_source": 1,
    "face_model": "elena.safetensors",
    "source_folder": "C:/faces",
    "random_image": 1,
    "upscale_force": 1
	}'
  • Set "upscaler" to "None" and "scale" to 1 if you don't need to upscale;
  • Set "save_to_file" to 1 if you need to save result to a file;
  • "result_file_path" is set to the "outputs/api" folder by default (please, create the folder beforehand to avoid any errors) with a timestamped filename; (output_YYYY-MM-DD_hh-mm-ss), you can set any specific path, e.g. "C:/stable-diffusion-webui/outputs/api/output.png";
  • Set "mask_face" to 1 if you want ReActor to mask the face or to 0 if want ReActor to create a bbox around the face;
  • Set "select_source" to: 0 - Image, 1 - Face Model, 2 - Source Folder;
  • Set "face_model" to the face model file you want to choose if you set "select_source": 1;
  • Set "source_folder" to the path with source images (with faces you need as the results) if you set "select_source": 2;
  • Set "random_image" to 1 if want ReActor to choose a random image from the path of "source_folder";
  • Set "upscale_force" to 1 if you want ReActor to upscale the image even if no face found.

You can find full usage examples with all the available parameters in the "example" folder: cURL, JSON.

As a result you recieve a "base64" image:

{"image":"iVBORw0KGgoAAAANSUhEUgAABlAAAARQCAIAAAAdiYuqAAEAAElEQVR4nOz9+ZMlSXImBn6qau4vIjKzzr5wzwBCDrm/7f+/K7IHV3ZkhUIuyZHlkBhiMGig0Y0..."}

A list of available models can be seen by GET:

FaceModel Buid API

Send POST to http://127.0.0.1:7860/reactor/facemodels with body:

{
    "source_images": ["data:image/png;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABQAAD/7g...","data:image/png;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABQAAD/7g...","data:image/png;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABQAAD/7g..."],
    "name": "my_super_model",
    "compute_method": 0
}

where:
"source_images" is a list of base64 encoded images,
"compute_method" is: 0 - Mean, 1- Median, 2 - Mode