Extensions/Waxy AI Realism Test
ComfyUI Extension

Waxy AI Realism Test

Ask Waxy AI Realism Test whether an AI-generated face looks real versus AI, right inside ComfyUI.

By tmshapland·Created a day ago·Updated a day ago· 0
tmshapland/comfyui-waxy-ai-realism-test
Nodes—
On cloudLocal install
Stars0
Updateda day ago
Readme

Waxy AI Realism Test for ComfyUI

Waxy AI Realism Test tells you how much a face in an AI-generated image or video looks generated by AI versus real. This node puts that test inside ComfyUI, so you can check the faces coming out of your generation graph as you make them.

Drop it after any node that produces an image or a video. It sends each frame to Waxy and hands back the picture with a box drawn on the face Waxy tested, a label for whether the face looks real or AI-generated, and the confidence behind it.

What the test means

Waxy AI Realism Test finds the face in an AI-generated image, tests it, and returns how likely the face looks real, from 0 to 1. A label, real or AI, is then decided by a threshold on that confidence.

The threshold defaults to 0.70. At or above 0.70 means the face looks real. Raise it to be stricter, lower it to be looser. The confidence Waxy returns is always the raw confidence of how real the face looks.

When Waxy cannot find a face to test, it says so and returns no guess: that frame's label comes back as no face and its confidence as n/a.

A video is tested frame by frame, the same way the Waxy API tests a clip: a frame is sampled every 0.5 seconds (about two a second) and each sampled frame is tested as its own image. The node reports a label and a confidence for every frame it tested. An image is one frame, so it gets one label and one confidence.

Install

Clone this folder into your ComfyUI custom_nodes directory and restart ComfyUI:

cd ComfyUI/custom_nodes
git clone https://github.com/tmshapland/comfyui-waxy-ai-realism-test

requests is installed from requirements.txt if your environment does not already have it. torch, numpy and Pillow already ship with ComfyUI.

Your API key

The node talks to the paid Waxy API, so it needs your own key. Make one in the Waxy dashboard, then give it to the node one of three ways. The node uses the first one it finds, in this order. A key is required either way. An account gets 50 free image (or video frame) credits per day.

  1. Paste it into the node's api_key field. Simplest to start with. Note that anything typed into a node is written into the workflow file when you save or share it, so prefer one of the next two ways if the workflow will leave your machine.

  2. Put it in a config.ini next to this node. Copy the included config.ini.example to config.ini and fill in your key:

    [waxy]
    api_key = your key here
    

    config.ini is gitignored and never read into a workflow, so your key stays out of anything you save or share. This is the no-shell-needed option, handy on portable or Docker ComfyUI installs where an exported environment variable may not reach the ComfyUI process. Leave the node's api_key field blank.

  3. Set the WAXY_API_KEY environment variable. Also keeps the key out of saved workflows. Leave the api_key field blank:

    export WAXY_API_KEY="your key here"
    

A key is stored only as a scrambled fingerprint on Waxy's side, so copy it once when you make it and keep it safe.

The node

Waxy AI Realism Test, under the image/analysis category.

Inputs:

  • input the image or video to test. An image is tested as one picture; a video is sampled about twice a second and each sampled frame is tested on its own.
  • api_key your own Waxy key. Leave blank only if you set it in config.ini or the WAXY_API_KEY environment variable. A key is required either way.
  • threshold the real or AI cutoff. Defaults to 0.70.
  • timeout optional. Seconds to wait on the service per frame.

Outputs:

  • annotated_image the picture (or every tested frame) with a box on the face Waxy tested, so you can confirm it tested the right face. On the no face result the frame comes back unmarked.
  • label the real or AI label, one line per frame. For a video that is one label per sampled frame; for an image it is the single label. A frame with no face reads no face.
  • confidence the raw how real likelihood, 0 to 1, one line per frame and lined up with label. A frame with no face reads n/a.
  • face_found whether Waxy found a face to test in any frame.

Pricing

Tests are counted the same whether they come from the dashboard, the API, or this node. The free daily grant and the price past it are shown on the Waxy site. Each image is one test, and each sampled video frame is one test.