Banc de pièges — détection & classification d'images

Chaque section teste un cas limite : downscale, density srcset, même nom / AR différent, même AR / image différente, <picture> multi-format, art-direction, upscale.

S1 — Même fichier, N tailles (srcset largeur + ?query, même URL)

Attendu : 1 image · servie en N tailles (downscale ladder, comme Shopify).

OG Kush pièges S1
1 fichier bud.webp · 6 largeurs via ?w

S2 — Density srcset, MÊME image, noms DIFFÉRENTS (le piège a.png / b.png)

Sans comparaison pixels : « 4 images différentes » (noms diffèrent). Avec le hash perceptuel moteur : doit fusionner en 1 image (pixels identiques).

Fleur CBD S2
img-1x/2x/3x/4x.png · même visuel

S3 — Density srcset, images VRAIMENT différentes (style WebKit)

Attendu : N images différentes (contenus distincts). Ne PAS fusionner.

Bannière S3
tile-1x/2x/3x/4x.png · visuels distincts

S4 — Même NOM de fichier (hero.jpg), AR + contenu DIFFÉRENTS

Piège du regroupement par nom/stem. Attendu : 3 créatifs séparés (AR différents, pixels différents) — surtout ne pas les fusionner parce qu'ils s'appellent tous « hero.jpg ».

Hero carré
/s4a/hero.jpg · 1:1
Hero large
/s4b/hero.jpg · 16:9
Hero portrait
/s4c/hero.jpg · 4:5

S5 — Même AR (1:1), images DIFFÉRENTES, noms différents

Piège du regroupement « même AR = même famille ». Attendu : 3 créatifs séparés (le hash perceptuel doit les distinguer).

Produit alpha
alpha.jpg · 1:1
Produit bravo
bravo.jpg · 1:1
Produit charlie
charlie.jpg · 1:1

S6 — <picture> multi-format (webp + jpeg), MÊME image

Attendu : 1 image, reconnue à travers ses variantes de format (le hash doit matcher webp ≈ jpeg du même visuel).

Résine CBD S6
photo.webp + photo.jpg

S7 — <picture> art-direction : même sujet, AR différent par device

Attendu : classification par device — carré (mobile) vs large (desktop), même sujet. Les deux crops appartiennent au même visuel.

Bannière S7
square.jpg (mobile) / wide.jpg (desktop)

S8 — Upscale : petite image affichée grande + grande version, MÊME image

Attendu : le hash perceptuel doit reconnaître que la petite (upscalée) et la grande sont la même image, malgré l'échelle.

Petit upscalé
small.jpg 220px → affiché 360px (upscale)
Grand natif
large.jpg 1600px natif