Skip to content

Acne

Acne measures the presence and severity of inflammatory and non-inflammatory lesions — papules, pustules, comedones — across the face. The value is a normalized score; acne_visualization returns per-lesion intensities suitable for marker overlays.

component: acne
request:
query: "components=acne,acne_normalized_visualization"
response_path: "results[].description == \"acne\""
value_range: [0, 1]
also_request:
- acne_normalized_visualization # preferred for new code
- acne_visualization # legacy intensity scale
warnings: [401, 3000]

Reference imagery for this metric is not yet published.

const acne = response.results.find((r) => r.description === "acne");
const score = Math.round(acne.value * 100);
// Per-lesion markers — visualization_data lives on each measurement_locations[]
// entry, not on the finding directly. Each feature is a "spot" type:
// length-1 x[] and y[] arrays, intensity is a single number.
const lesions = (acne.measurement_locations ?? []).flatMap(
(loc) => loc.visualization_data ?? []
);

Spot-type features render naturally as a dot marker. A common style is two concentric circles (a 6 px filled disc inside a 12 px stroke ring); square outlines or crosses also work. The response also carries a Spots number sum-measure (raw count of detected spots), but avoid surfacing it as a clinical “active acne” count — the value is a severity score, not a lesion count, and the count itself is sensitive to image quality.

Paste-ready code: Rendering recipes → Spots.

  • acne aborts on some global image-quality warnings. Unlike other metrics, it will not return a score when the image carries 204, 312, 313, 314 or 319 — see the local_warnings[] section below.

idx: 3000 (error) — acne measurement aborted due to image quality concerns.

acne is stricter than the other metrics about image quality. Five codes that are only warnings at the response level cause acne to abort: 204 (face detection very uncertain), 312 (unsymmetric exposure), 313 (hard shadows), 314 (eyeglasses detected) and 319 (face too tightly framed). When one of them is present:

  • acne returns no score — value is null and message is "Error";
  • 3000 is added to the finding’s local_warnings[];
  • the triggering code is also copied into local_warnings[] with its isError raised to 1, even though the same code appears in the top-level status[] as a warning (isError: 0).

So don’t be surprised to see the same idx with a different isError in the two places — inside the acne finding it means “this blocked acne”, at the top level it means “this is a quality warning for the image”. Every other requested metric still returns normally.