wmbench — image watermarking benchmark

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).

AlgorithmSettings 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).