People masking

Pick an image and press Mask people. People are found and masked in your browser; the image is never uploaded. The model (RF-DETR Seg Nano, 123 MB) downloads the first time only.

Benchmark results

Run on 30 September 2026 in Chrome 154 on one machine (macOS 26, Apple M1) (library 0.1.0, ONNX Runtime Web 1.30.0), with npm run eval:benchmark, at the defaults (threshold 0.3, margin 1%). Accuracy columns are from the WebGPU run; times are the median per image after the model has loaded. Report: reports/benchmark/2026-09-30-21-07-chrome.json.

Test set: 50 images from two public datasets. 23 of the 26 sample images above are from this set.

Source Images What's labelled How they were chosen
COCO 2017 validation set 35 A hand-drawn outline of every person: 64 physically in the scene, plus 16 in photos, paintings or on screens (scored separately) Hotel-like rooms (a bed, couch or TV in view): 10 with small people (under 5% of the image), 11 medium, 11 large, and 3 crowded scenes
Open Images V7 validation set 15 Boxes around 29 faces and 86 other body parts (heads, hair, arms, hands, legs), used for the "Faces covered" column At least one face and two other body parts per photo: 5 each with small, medium and large faces
Model People missed Fully covered Depicted people missed Room hidden Faces covered WebGPU WASM
RF-DETR Seg Nano (used here) 1.6% 89.1% 93.8% 6.5% 96.6% 145 ms 1.46 s
RF-DETR Seg Nano, mode "boxes" 1.6% 95.3% 56.3% 29.8% 96.6% 147 ms 1.36 s
MediaPipe Selfie (legacy placeholder) 28.1% 62.5% 87.5% 23.8% 72.4% 13 ms 14 ms

People missed: under half of the person hidden. Fully covered: at least 95% hidden. Room hidden: share of everything else masked unnecessarily (lost search signal). Faces covered: at least 80% of a face box hidden. Times are the median per image after the model has loaded.

What it misses: the one person Nano misses is barely visible in the dark. It mostly ignores people in photos, paintings and on screens (it missed 15 of 16 in the test set), but not always: in the samples it masks a close-up TV, computer-generated characters and some faces on monitors. The one uncovered face is a tiny person in a restaurant background. When a person is only partly covered, it's usually the edges of hands and arms, which the margin controls (see the margin table below).

Margin (chosen model) 0% 1% (default) 2% 3%
People fully covered 60.9% 89.1% 92.2% 96.9%
Room hidden 2.5% 6.5% 11.1% 15.1%
Threshold (chosen model) 0.1 0.2 0.3 (default) 0.5 0.7
People missed 0% 1.6% 1.6% 20.3% 25%
Depicted people missed 37.5% 62.5% 93.8% 100% 100%
Room hidden 13.2% 7.6% 6.5% 4.8% 3.5%

Tested browsers and formats

From automated browser tests on one machine (macOS 26, Apple M1), run on 9 October 2026 (library 1.1.1, ONNX Runtime Web 1.30.0). Browser automation on one machine doesn't show that other GPUs, drivers or devices work. Report: reports/compatibility/2026-10-09-20-06.json.

Browser Status Backends seen Checks
Chrome 154, macOS 26, Apple M1 Tested WebGPU and WASM 40 passed
Chromium 153, macOS 26, Apple M1 Tested WASM 18 passed
Firefox 155, macOS 26, Apple M1 Tested WASM 36 passed
WebKit 26, macOS 26, Apple M1 Tested WebGPU and WASM 36 passed
Chrome / Edge on Windows or Linux Untested – Expected to work; speed depends on GPU support
Safari app, iPhone and iPad Untested – The WebKit engine was tested on macOS, not the app or iOS
Phones and tablets generally Untested – About 150 MB download (model and runtime) on first use; likely slower
Format Status Notes
JPEG Tested Passes in Chrome, Chromium, Firefox, WebKit
PNG Tested Passes in Chrome, Chromium, Firefox, WebKit
WebP Tested Passes in Chrome, Chromium, Firefox, WebKit
Damaged files Tested Passes in Chrome, Chromium, Firefox, WebKit
GIF and other formats Not supported Rejected with a message in Chrome, Chromium, Firefox, WebKit
HEIC / HEIF (iPhone photos) Not supported Rejected by file extension with a message; convert to JPEG first

The golden-output checks require every browser to produce the same person coverage for the same image (mean difference at most 2/255 per pixel), so the benchmark results should carry over; only speed differs.

Photo credits

The sample images are Flickr photos from the COCO 2017 and Open Images V7 datasets, used under the Creative Commons licenses below. None show children. The demo draws a mask over them in your browser; the files themselves are unchanged. Some photos have since been removed from Flickr, and for COCO photos the dataset doesn't record the author.

Sample Title Author License Source
close-face-behind-dog.jpg Flickr photo 4534529657 (Removed from Flickr; the dataset doesn't record the author) Unknown CC BY-NC-SA 2.0 COCO 2017 val 251572
close-face.jpg Joe T. 1925 - 2012 R.I.P. Jitze Couperus CC BY 2.0 Open Images V7 val 39971a0a73316fbe
close-sleeper-in-bed.jpg Flickr photo 2531963343 (Removed from Flickr; the dataset doesn't record the author) Unknown CC BY-NC-SA 2.0 COCO 2017 val 71938
covered-faces-lab.jpg Dominican Republic RIGHT TO HEALTH CC BY 2.0 Open Images V7 val ce986af9e0e65a9a
dark-background-figure.jpg Me on wii fit Cat Barrett CC BY-ND 2.0 COCO 2017 val 357978
depicted-game-characters.jpg top-10-xbox-360-rpg-last-remnant-4 Brandon Motz CC BY 2.0 Open Images V7 val af0808fe64664295
depicted-people-on-tv.jpg HRT (Hrvatska radiotelevizija) JasonParis CC BY 2.0 COCO 2017 val 342367
depicted-tv-closeup.jpg TV control anthony kelly CC BY 2.0 COCO 2017 val 222735
depicted-tv-dim-room.jpg John McCain on the Tonight Show Steve Rhodes CC BY-NC-SA 2.0 COCO 2017 val 527616
depicted-tv-in-mirror.jpg Bathroom Entertainment Erik Thauvin CC BY-NC-SA 2.0 COCO 2017 val 17379
depicted-webpage-faces.jpg My desk Rain Rabbit CC BY-NC 2.0 COCO 2017 val 149222
face-in-dark-night.jpg 23 // .. Lisa Omarali CC BY 2.0 Open Images V7 val 23282811e70b4df7
far-crowd-lobby.jpg living room Colleen McMahon CC BY 2.0 COCO 2017 val 546964
far-person-in-mirror.jpg IMGP3815 Mandie S CC BY 2.0 COCO 2017 val 366884
group-of-four-standing.jpg Pizza and theatre 030 (License as recorded by COCO; no longer shown on Flickr) University of the Fraser Valley CC BY 2.0 COCO 2017 val 91406
hand-at-frame-edge.jpg Flickr photo 6215579954 (Removed from Flickr; the dataset doesn't record the author) Unknown CC BY-NC-SA 2.0 COCO 2017 val 180751
mannequin-torso.jpg Flickr photo 4330409752 (Removed from Flickr; the dataset doesn't record the author) Unknown CC BY-NC-SA 2.0 COCO 2017 val 154431
overlapping-faces-party.jpg 100_1929 DJ Ghost CC BY 2.0 Open Images V7 val e56b89906a82c334
person-from-behind.jpg 1044051259464216 (Removed from Flickr) Maegan Tintari CC BY 2.0 Open Images V7 val 7da379d5080f8140
real-and-framed-portrait.jpg FB_IMG_1440690077292 (Removed from Flickr) Rizwan Sagar CC BY 2.0 Open Images V7 val 359a19a08916fb41
real-and-photo-collage.jpg Flickr photo 2759863463 (Removed from Flickr; the dataset doesn't record the author) Unknown CC BY-NC-SA 2.0 COCO 2017 val 218439
small-faces-street.jpg 2009 Infiniti G37 Sedán Spanish Coches CC BY 2.0 Open Images V7 val 18098dc9ee6aad80
small-person-night-street.jpg the free and the captive green kozi CC BY-NC-ND 2.0 COCO 2017 val 158744
typical-person-couch.jpg Flickr photo 317343650 (Removed from Flickr; the dataset doesn't record the author) Unknown CC BY 2.0 COCO 2017 val 537991
vintage-photo-tiny-faces.jpg Mrs Simpson Donna Barber CC BY 2.0 Open Images V7 val d7e219822dbca1f0
wide-angle-flare-reader.jpg more lighting tom foolery... Jamie Kronick CC BY-NC-SA 2.0 COCO 2017 val 99182