Quality vs. extraction rate
One point per algorithm. X = extraction rate (fraction of images where the extracted watermark ID exactly equals the embedded one); Y = the selected quality metric.
Timing (CPU) — trustmark_Q_40: embed 0.081s / extract 0.018s · trustmark_Q_61: embed 0.083s / extract 0.018s · trustmark_Q_68: embed 0.083s / extract 0.018s · trustmark_Q_75: embed 0.083s / extract 0.018s · trustmark_Q_100: embed 0.084s / extract 0.018s · trustmark_P_40: embed 0.073s / extract 0.018s · trustmark_P_61: embed 0.073s / extract 0.017s · trustmark_P_68: embed 0.074s / extract 0.017s · trustmark_P_75: embed 0.072s / extract 0.017s · trustmark_P_100: embed 0.072s / extract 0.017s · trustmark_B_40: embed 0.088s / extract 0.020s · trustmark_B_61: embed 0.085s / extract 0.018s · trustmark_B_68: embed 0.084s / extract 0.018s · trustmark_B_75: embed 0.085s / extract 0.018s · trustmark_B_100: embed 0.085s / extract 0.018s · trustmark_C_40: embed 0.087s / extract 0.011s · trustmark_C_61: embed 0.086s / extract 0.011s · trustmark_C_68: embed 0.085s / extract 0.011s · trustmark_C_75: embed 0.083s / extract 0.011s · trustmark_C_100: embed 0.084s / extract 0.011s · pixelseal_sw0.2: embed 0.231s / extract 0.295s · pixelseal_sw0.4: embed 0.224s / extract 0.280s · pixelseal_sw0.2_bch100: embed 0.227s / extract 0.264s · pixelseal_sw0.2_bch64: embed 0.265s / extract 0.291s · pixelseal_sw0.2_bch40: embed 0.248s / extract 0.293s · wam_sw2.0: embed 0.152s / extract 0.130s · wam_sw1.0: embed 0.168s / extract 0.137s · invismark: embed 0.075s / extract 0.687s · invismark_bch64: embed 0.068s / extract 0.664s · invismark_bch40: embed 0.088s / extract 0.750s · layer_trustmark_on_wam: embed 0.469s / extract 0.192s · layer_wam_on_trustmark: embed 0.471s / extract 0.198s · layer_trustmark_on_pixelseal: embed 0.538s / extract 0.358s · layer_pixelseal_on_trustmark: embed 0.549s / extract 0.359s · layer_wam_on_pixelseal: embed 0.706s / extract 0.440s · layer_pixelseal_on_wam: embed 0.864s / extract 0.533s
Watermarking algorithm settings
Configuration each algorithm ran with (all CPU).
| Algorithm | Settings used |
|---|---|
| trustmark_Q_40 | model_type = Q · device = cpu · ecc = BCH_SUPER · payload_bits = 40 · wm_strength = 1.0 |
| trustmark_Q_61 | model_type = Q · device = cpu · ecc = BCH_5 · payload_bits = 61 · wm_strength = 1.0 |
| trustmark_Q_68 | model_type = Q · device = cpu · ecc = BCH_4 · payload_bits = 68 · wm_strength = 1.0 |
| trustmark_Q_75 | model_type = Q · device = cpu · ecc = BCH_3 · payload_bits = 75 · wm_strength = 1.0 |
| trustmark_Q_100 | model_type = Q · device = cpu · ecc = NONE · payload_bits = 100 · wm_strength = 1.0 |
| trustmark_P_40 | model_type = P · device = cpu · ecc = BCH_SUPER · payload_bits = 40 · wm_strength = 1.0 |
| trustmark_P_61 | model_type = P · device = cpu · ecc = BCH_5 · payload_bits = 61 · wm_strength = 1.0 |
| trustmark_P_68 | model_type = P · device = cpu · ecc = BCH_4 · payload_bits = 68 · wm_strength = 1.0 |
| trustmark_P_75 | model_type = P · device = cpu · ecc = BCH_3 · payload_bits = 75 · wm_strength = 1.0 |
| trustmark_P_100 | model_type = P · device = cpu · ecc = NONE · payload_bits = 100 · wm_strength = 1.0 |
| trustmark_B_40 | model_type = B · device = cpu · ecc = BCH_SUPER · payload_bits = 40 · wm_strength = 1.0 |
| trustmark_B_61 | model_type = B · device = cpu · ecc = BCH_5 · payload_bits = 61 · wm_strength = 1.0 |
| trustmark_B_68 | model_type = B · device = cpu · ecc = BCH_4 · payload_bits = 68 · wm_strength = 1.0 |
| trustmark_B_75 | model_type = B · device = cpu · ecc = BCH_3 · payload_bits = 75 · wm_strength = 1.0 |
| trustmark_B_100 | model_type = B · device = cpu · ecc = NONE · payload_bits = 100 · wm_strength = 1.0 |
| trustmark_C_40 | model_type = C · device = cpu · ecc = BCH_SUPER · payload_bits = 40 · wm_strength = 1.0 |
| trustmark_C_61 | model_type = C · device = cpu · ecc = BCH_5 · payload_bits = 61 · wm_strength = 1.0 |
| trustmark_C_68 | model_type = C · device = cpu · ecc = BCH_4 · payload_bits = 68 · wm_strength = 1.0 |
| trustmark_C_75 | model_type = C · device = cpu · ecc = BCH_3 · payload_bits = 75 · wm_strength = 1.0 |
| trustmark_C_100 | model_type = C · device = cpu · ecc = NONE · payload_bits = 100 · wm_strength = 1.0 |
| pixelseal_sw0.2 | model = pixelseal · device = cpu · payload_bits = 256 · raw_bits = 256 · ecc = none · scaling_w = 0.2 · scaling_mult = 1.0 |
| pixelseal_sw0.4 | model = pixelseal · device = cpu · payload_bits = 256 · raw_bits = 256 · ecc = none · scaling_w = 0.4 · scaling_mult = 2.0 |
| pixelseal_sw0.2_bch100 | model = pixelseal · device = cpu · payload_bits = 100 · raw_bits = 256 · ecc = BCH(t=19) · scaling_w = 0.2 · scaling_mult = 1.0 |
| pixelseal_sw0.2_bch64 | model = pixelseal · device = cpu · payload_bits = 64 · raw_bits = 256 · ecc = BCH(t=24) · scaling_w = 0.2 · scaling_mult = 1.0 |
| pixelseal_sw0.2_bch40 | model = pixelseal · device = cpu · payload_bits = 40 · raw_bits = 256 · ecc = BCH(t=27) · scaling_w = 0.2 · scaling_mult = 1.0 |
| wam_sw2.0 | checkpoint = checkpoint.pth · device = cpu · payload_bits = 32 · img_size = 256 · scaling_w = 2.0 |
| wam_sw1.0 | checkpoint = checkpoint.pth · device = cpu · payload_bits = 32 · img_size = 256 · scaling_w = 1.0 |
| invismark | checkpoint = paper.ckpt · device = cpu · payload_bits = 100 · raw_bits = 100 · ecc = none · resolution = 256 |
| invismark_bch64 | checkpoint = paper.ckpt · device = cpu · payload_bits = 64 · raw_bits = 100 · ecc = BCH(t=4) · resolution = 256 |
| invismark_bch40 | checkpoint = paper.ckpt · device = cpu · payload_bits = 40 · raw_bits = 100 · ecc = BCH(t=7) · resolution = 256 |
| layer_trustmark_on_wam | type = layered · order = wam then trustmark (trustmark on top) · layer1_bottom = wam_sw1.0 (id A = message — PLOT axis) · layer2_top = trustmark_P_40 (id B = message XOR 1010…) · payload_bits = 32 · metric = X = layer-1 (bottom) extraction; layer-2 (top) reported alongside · device = cpu |
| layer_wam_on_trustmark | type = layered · order = trustmark then wam (wam on top) · layer1_bottom = trustmark_P_40 (id A = message — PLOT axis) · layer2_top = wam_sw1.0 (id B = message XOR 1010…) · payload_bits = 32 · metric = X = layer-1 (bottom) extraction; layer-2 (top) reported alongside · device = cpu |
| layer_trustmark_on_pixelseal | type = layered · order = pixelseal then trustmark (trustmark on top) · layer1_bottom = pixelseal_sw0.2_bch40 (id A = message — PLOT axis) · layer2_top = trustmark_P_40 (id B = message XOR 1010…) · payload_bits = 40 · metric = X = layer-1 (bottom) extraction; layer-2 (top) reported alongside · device = cpu |
| layer_pixelseal_on_trustmark | type = layered · order = trustmark then pixelseal (pixelseal on top) · layer1_bottom = trustmark_P_40 (id A = message — PLOT axis) · layer2_top = pixelseal_sw0.2_bch40 (id B = message XOR 1010…) · payload_bits = 40 · metric = X = layer-1 (bottom) extraction; layer-2 (top) reported alongside · device = cpu |
| layer_wam_on_pixelseal | type = layered · order = pixelseal then wam (wam on top) · layer1_bottom = pixelseal_sw0.2_bch40 (id A = message — PLOT axis) · layer2_top = wam_sw1.0 (id B = message XOR 1010…) · payload_bits = 32 · metric = X = layer-1 (bottom) extraction; layer-2 (top) reported alongside · device = cpu |
| layer_pixelseal_on_wam | type = layered · order = wam then pixelseal (pixelseal on top) · layer1_bottom = wam_sw1.0 (id A = message — PLOT axis) · layer2_top = pixelseal_sw0.2_bch40 (id B = message XOR 1010…) · payload_bits = 32 · metric = X = layer-1 (bottom) extraction; layer-2 (top) reported alongside · device = cpu |
Image viewer
Distortion preview
Each distortion applied to the source image currently open in the viewer above (view-only).