Files
remove-ai-watermarks/scripts/assets/visible-mark-candidates/README.md
T
Victor Kuznetsov 08a4a8d299 Add synthetic visible-mark example gallery with canary tests
One committed example per registered mark: 12 PNG (image registry) and 6 MP4
clips (video registry), generated by scripts/render_visible_examples.py from
the committed silhouettes and detector templates -- never from user uploads.
The generator self-verifies (exit 1 when a mark misses its own example) and
tests/test_visible_examples.py holds both sides to it: registry completeness
both ways, per-engine detection on the canonical example, and the shipped
temporal selection accepting each clip.

Second tranche of measured-but-unregistered candidates parked under
scripts/assets/visible-mark-candidates/ with a README recording why none
ships yet (positives do not separate from clean negatives): samsung_en,
gemini_text, notebooklm, dola, mindvideo, higgsfield, jianying, capcut, zsky,
chromastudio, digenai, gendo.
2026-08-28 09:51:22 -07:00

3.3 KiB

Unregistered visible-mark candidates

Synthetic detection silhouettes for marks that are measured but NOT registered: none of these separates its positives from clean negatives yet, so shipping them would attribute and fill corners on content that carries no mark (a false fill is the worse error). Assets are regenerated by scripts/render_vendor_silhouettes.py; a candidate is deleted from here on the day its mark registers (the asset moves to the package assets/).

Measurements below are local calibration snapshots. Candidate pools are provenance cohorts, not automatically visible-mark positives; comparison controls are independently selected no-signal images and are not adjudicated negatives. Each needs capture-solved alphas or vendor-accurate font work before it can ship; scripts/vendor_mark_calibrate.py is the candidate-detector harness.

Asset Mark Evidence Result
samsung_en_alpha.png Samsung Galaxy AI label, English locale ("AI-generated content", bottom-left) 5 corpus files POS 0.11-0.30 vs NEG max 0.40 (binary); tophat/gray tried, no separation. The registered Italian engine scores 0.18-0.31 on the same files -- same layout class, wrong glyph template.
gemini_text_alpha.png "Generated with Gemini" text label (bottom-right; the registered gemini mark is the sparkle icon) 3 corpus files POS 0.07-0.22 vs NEG max 0.32; coverage gate finds the blob (0.29-0.35) but the Arial silhouette misses Google's letterforms.
notebooklm_alpha.png NotebookLM wordmark (bottom-right) 12 corpus files locate geometry not yet fitted; POS max 0.12.
dola_alpha.png DolaAI on images (the video mark is registered) 12 corpus files POS 0.11-0.21 vs NEG max 0.30.
mindvideo_alpha.png MindVideo.AI (top-right) 11 corpus files POS 0.29-0.32 vs NEG max 0.30 -- borderline overlap, not shippable.
higgsfield_alpha.png HIGGSFIELD AI wordmark (bottom-right; the boxed AI variant shares the cohort) 5 wordmark files (16 in the boxed-AI OCR cluster) POS max 0.26 vs NEG max 0.22 -- no separation; the mark may be two-part (wordmark + boxed AI) and needs a composed template.
jianying_alpha.png 剪映AI (CapCut's CN sibling, bottom-right) 2 corpus files POS 0.29 vs NEG max 0.35.
capcut_alpha.png CapCut AI pill (top-left; likely pill class, not plain text) 3 corpus files POS max 0.15 vs NEG max 0.33 -- locate geometry not yet fitted for the pill form.
zsky_alpha.png MADE WITH zsky.ai (bottom-right) 2 corpus files POS 0.10 vs NEG max 0.27.
chromastudio_alpha.png ChromaStudio.ai (bottom-right) 2 corpus files POS 0.11 vs NEG max 0.29.
digenai_alpha.png DIGENAI (bottom-right) 3 corpus files (one 2026-07-24 batch) POS 0.16 vs NEG max 0.31.
gendo_alpha.png GendoAI (bottom-left) 3 corpus files POS 0.08 vs NEG max 0.32.
xinghui_alpha.png 星绘AI生成 (parked before this set) -- prior parking, unchanged.
qingyan_alpha.png 清言·AI生成 (parked before this set) -- prior parking, unchanged.
hailuo_alpha.png Hailuo AI image wordmark (parked before this set; the VIDEO label is registered) -- prior parking, unchanged.
catlogo_alpha.png outline cat-head + AI生成 (parked before this set) -- prior parking, unchanged.