Universal Adversarial Watermarking (UAW) is a unified framework that simultaneously embeds adversarial perturbations and robust watermarks into text images. It provides dual protection by resisting OCR-based text extraction while ensuring reliable traceability through watermark retrieval.
UAW
├── AllConfig/ # Configuration files and model checkpoints
├── AllData/
├── CSR/
├── EAST/
├── EasyOCR/
├── model_CRAFT/
├── model_DBnet/
├── model_PAN/
├── results/ # Log files
├── TCM/
├── TextBoxesPP/
├── Tools/
├── UAWUP/ # Our code
├── UDUP/
├── watermarklab/
├── README.md
└── watermarklab
Follow the steps below to configure and run the project:
-
Create and activate a conda virtual environment:
conda create -n uaw python=3.8 conda activate uaw
-
Install project dependencies: Use the following command to install the required packages:
pip install -r requirements.txt --ignore-installed
Please ensure that all file paths are modified as needed before running the steps below.
python UAWUP/train_uawup.py # One-time offline costpython UAWUP/eval_watermark/embed_dir.pypython UAWUP/eval_watermark/extract_dir.pypython UAWUP/eval_adversarial/eval_dir.pyExperiment for CSR
python CSR/csr_watermark_test_batch.py --input-dir results/eval_watermark/ti_a×b/ti --output-dir results/eval_watermark/ti_a×b/ti_csrExperiment for UDUP
python UAWUP/eval_watermark/embed_dir.py --use_wm False --root_eval results/AllData_results/results_udup/size=30_step=3_eps=120_lambdaw=0.1 --source_dir results/eval_watermark/ti_a×b/ti --save_dir results/eval_watermark/ti_a×b/ti_udup
python UAWUP/eval_adversarial/eval_dir.py --img_dir results/eval_watermark/ti_a×b/ti_udup --gt_img_dir results/eval_watermark/ti_a×b/ti --save_root results/eval_adversarial/ti_a×b/ti_udupExperiment for FAWA
python UAWUP/fawa_pytorch.py --output_dir results/eval_adversarial/FAWA/attacked --wm_text TDSC
python UAWUP/eval_adversarial/eval_dir.py --img_dir results/eval_watermark/ti_a×b/ti_udup --gt_img_dir results/eval_watermark/ti_a×b/ti --save_root results/eval_adversarial/ti_a×b/ti_udupExperiment for UAW(Ours)
python UAWUP/eval_watermark/embed_dir.py --use_wm True --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05 --source_dir results/eval_watermark/ti_a×b/ti --save_dir results/eval_watermark/ti_a×b/awti
python UAWUP/eval_adversarial/eval_dir.py --img_dir results/eval_watermark/ti_a×b/awti --gt_img_dir results/eval_watermark/ti_a×b/ti --save_root results/eval_adversarial/ti_a×b/awti
python UAWUP/eval_watermark/extract_dir.py --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05 --awti_dir results/eval_watermark/ti_a×b/awtiCharacter Size
python UAWUP/eval_watermark/embed_fontsize.py
python UAWUP/eval_watermark/extract_fontsize.py
python UAWUP/eval_adversarial/eval_character_size.pyCharacter Color
python UAWUP/eval_watermark/embed_color.py
python UAWUP/eval_watermark/extract_color.py
python UAWUP/eval_adversarial/eval_color.pyLanguage
python UAWUP/eval_watermark/embed_dir.py --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05 --source_dir AllData/web_page --save_dir results/eval_watermark/real/web_page
python UAWUP/eval_watermark/extract_dir.py --awti_dir results/eval_watermark/real/web_page --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05
python UAWUP/eval_adversarial/eval_dir.py --img_dir results/eval_watermark/real/web_page --gt_img_dir AllData/web_page --save_root results/eval_adversarial/real/web_pageComplexity of Background
python UAWUP/eval_watermark/embed_dir.py --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05 --patch_iter 27 --source_dir results/eval_watermark/real/bg_overlay --save_dir results/eval_watermark/real/bg_overlay
python UAWUP/eval_watermark/extract_dir.py --awti_dir results/eval_watermark/real/bg_overlay --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05
python UAWUP/eval_adversarial/eval_dir.py --img_dir results/eval_watermark/real/bg_overlay --gt_img_dir results/eval_watermark/real/bg_overlay --save_root results/eval_adversarial/real/bg_overlayAdversarial Robustness & Watermarking Robustness
python UAWUP/eval_watermark/embed_dir.py --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05 --source_dir results/eval_watermark/ti_a×b/ti --save_dir results/eval_watermark/noise
python UAWUP/test/noise_batch.py
python UAWUP/eval_adversarial/eval_distortion.py
python UAWUP/eval_watermark/extract_noise.pyPrivacy Protection for Sensitive Certificate Images
python UAWUP/eval_watermark/embed_dir.py --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05 --source_dir AllData/certificate --save_dir results/eval_watermark/real/certificate
python UAWUP/eval_watermark/extract_dir.py --awti_dir results/eval_watermark/real/certificate --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05
python UAWUP/eval_adversarial/eval_dir.py --img_dir results/eval_watermark/real/certificate --gt_img_dir results/eval_watermark/real/certificate --save_root results/eval_adversarial/real/certificateTransferability to Unknown OCR Systems
python UAWUP/eval_watermark/embed_dir.py --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05 --source_dir results/eval_watermark/ti_a×b/ti --save_dir results/eval_watermark/ti_a×b/awti
python UAWUP/eval_adversarial/eval_transfer.pyRobustness Tests under Shooting Scenarios
python UAWUP/eval_watermark/embed_dir.py --patch_dir results/AllData_results/gray/s30_eps100_step3_w0.01_x0 --patch_iter 41 --source_dir results/eval_watermark/ti_a×b/ti --save_dir results/eval_watermark/gray/awti
python UAWUP/eval_watermark/extract_dir.py --awti_dir results/eval_watermark/gray/print_shoot/100cm --patch_dir results/AllData_results/gray/s30_eps100_step3_w0.01_x0 --patch_iter 41
python UAWUP/eval_adversarial/eval_dir.py --img_dir results/eval_watermark/gray/print_shoot/100cm --gt_img_dir results/eval_watermark/ti_a×b/ti --save_root results/eval_adversarial/gray/print_shoot/100cmTime Consumption for Real-time Requirements
python UAWUP/train_uawup.py # One-time offline cost
python UAWUP/eval_watermark/embed_dir.py
python UAWUP/eval_watermark/extract_dir.pyMUI and Size of Bit Template for Adversarial Effectiveness &
MUI and Size of Bit Template for Watermark Reliability &
Hyperparameter
python UAWUP/train_uawup.py # One-time offline cost
python UAWUP/eval_watermark/embed_size_it.py
python UAWUP/eval_watermark/extract_size_it.py
python UAWUP/eval_adversarial/eval_size_eps.pyImpact of Adversarial and Watermarking Interaction
python UAWUP/eval_watermark/embed_random.py
python UAWUP/eval_watermark/extract_dir.py --patch_dir results/eval_watermark/size_it/awu --awti_dir results/eval_watermark/size_it/awti_random
python UAWUP/eval_adversarial/eval_random.pyWatermark Matrix Size
python UAWUP/eval_watermark/embed_dir.py --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05 --source_dir results/eval_watermark/ti_a×b/ti --save_dir results/eval_watermark/ti_a×b/awti_9×9 --wm_h 9 --wm_w 9
python UAWUP/eval_watermark/extract_dir.py --patch_dir results/AllData_results/results_uawup_eps100/size=30_step=3_eps=100_lambdaw=0.01_lambday=1e-05 --awti_dir results/eval_watermark/ti_a×b/awti_9×9
python UAWUP/eval_adversarial/eval_dir.py --img_dir results/eval_watermark/ti_a×b/awti_9×9 --gt_img_dir results/eval_watermark/ti_a×b/ti --save_root results/eval_adversarial/ti_a×b/awti_9×9











