--- language: - en library_name: pytorch tags: - image-classification - ai-generated-image-detection - deepfake-detection - universal-detector - robustness-asymmetry - dinov3 - diffusion-generated-image-detection license: other pipeline_tag: image-classification metrics: - accuracy --- # RA-Det: Robustness Asymmetry Detection for AI-Generated Images Official pretrained checkpoint for **RA-Det** _(ICML 2026)_ — a behavior-driven detector that decides whether an image is real or AI-generated by examining how it **behaves** under controlled perturbations, rather than how it **looks**. > 📄 **Paper:** _RA-Det: Towards Universal Detection of AI-Generated Images via Robustness Asymmetry_ ([arXiv:2603.01544](https://arxiv.org/abs/2603.01544)) > 💻 **Code:** [github.com/dongdongunique/RA-Det](https://github.com/dongdongunique/RA-Det) > 🏛️ **Venue:** ICML 2026 --- ## TL;DR Most detectors hunt for visual artifacts. Modern generators (Stable Diffusion, DALL·E, GANs) increasingly erase those artifacts, so appearance-based methods generalize poorly. RA-Det instead exploits a **robustness asymmetry**: - **Natural images** keep a stable semantic representation under small perturbations. - **AI-generated images** drift much more under the *same* perturbations. RA-Det learns a perturbation operator that amplifies this gap, then classifies images from the resulting behavior — making it **data-agnostic, model-agnostic, and transferable to unseen generators**. --- ## How it works RA-Det combines two components: 1. **Differential Robustness Probing (DRP)** — a learnable U-Net that applies a *bounded* perturbation (ε = 16/255) to the input, calibrated to maximally separate real vs. generated images in embedding space. 2. **Multi-Branch Detector** — aggregates three complementary cues: - **Semantic features** — from a frozen **DINOv3 ViT-L/16** foundation model (1024-d embeddings). - **Discrepancy features** — distance, similarity, and covariance statistics between the *clean* and *DRP-perturbed* embeddings (the core of the robustness-asymmetry signal). - **Low-level residual features** — capture high-frequency / forensic artifacts. A **four-branch ensemble** variant adds an L²-based branch for additional robustness. This checkpoint is the recommended four-branch ensemble configuration. > ⚠️ The statistics-based discrepancy branch needs enough samples per batch for stable covariance estimation. That is why **a batch size of 256 (32 per GPU × 8 GPUs) is strongly recommended** — smaller batches noticeably degrade accuracy. --- ## Model details | | | |---|---| | **Configuration** | `ensemble_vitl16_raw_lpd_discrepancy` (four-branch ensemble) | | **Backbone** | DINOv3 ViT-L/16, frozen (1024-d embeddings) | | **Perturbation module** | Differential Robustness Probing (U-Net), ε = 16/255 | | **Detector branches** | Semantic (DINOv3) + Discrepancy + Low-level residual (+ L²) | | **Loss** | Discrepancy loss (margin = 1.0) + classification loss | | **Training data** | ProGAN (Wang2020 format), `0_real/` & `1_fake/` per category | | **Checkpoint file** | `checkpoint_best.pt` (PyTorch state_dict) | | **Framework** | PyTorch (`torchrun` distributed training/eval) | | **License** | See the [code repository](https://github.com/dongdongunique/RA-Det) (intended for research use) | --- ## Results - Evaluated against **14+ diverse generative models** (ProGAN, Stable Diffusion v1.4, DALL·E 2, and more). - Outperforms **10+ existing detection methods**. - **+7.81% average performance improvement** over prior art, with strong transfer to **unseen generators**. Per-generator accuracy tables and ablations are available in the [paper](https://arxiv.org/abs/2603.01544) and the [code repository](https://github.com/dongdongunique/RA-Det). --- ## How to use This is **not** a single self-contained `.safetensors` model — RA-Det's forward pass requires the DINOv3 backbone plus the DRP U-Net and multi-branch detector defined in the codebase. The intended way to run it is via the official repository. ### 1. Get the code and weights ```bash git clone https://github.com/dongdongunique/RA-Det.git cd RA-Det pip install -r requirements.txt # DINOv3 backbone weights -> models/dino/dinov3_vitl16_pretrain.pth # DINOv3 source -> models/dinov3_repo (see repo README) ``` ### 2. Download this checkpoint ```python from huggingface_hub import hf_hub_download ckpt_path = hf_hub_download( repo_id="dongdongunique/RA-Det-Checkpoints", filename="checkpoint_best.pt", repo_type="model", ) print(ckpt_path) ``` ### 3. Configure data paths Edit `paths.py` (or set env vars) to point at your data in **Wang2020 format**: ```python PROGAN_TRAIN_DATA_PATH = "/path/to/progan_train" # .../airplane/{0_real,1_fake}/... AIGCTEST_DATA_PATH = "/path/to/AIGCTestset/test" # progan/, stable_diffusion_v_1_4/, DALLE2/, ... ``` ### 4. Run evaluation The recommended entry point uses the same initialization as training: ```bash bash scripts/validate.sh --gpus 8 --checkpoint /path/to/checkpoint_best.pt ``` …which expands to: ```bash torchrun --nproc_per_node=8 train.py \ --config ensemble_vitl16_raw_lpd_discrepancy \ --eps 0.06274509803921569 \ --margin 1.0 \ --four-branch-ensemble \ --normalize-loss \ --validate-checkpoint /path/to/checkpoint_best.pt ``` ### Reproduce training ```bash # 8 GPUs, recommended batch size 256 (32/GPU), eps=16/255, margin=1.0 bash scripts/main.sh --gpus 8 --niter 1 ``` | Parameter | Default | Note | |---|---|---| | `--eps` | 16/255 (0.0627) | Perturbation budget | | `--margin` | 1.0 | Discrepancy-loss margin | | `--niter` | 1 | Training epochs | | `--gpus` | 8 | GPUs for `torchrun` | | Batch size | **256** | Required for stable discrepancy statistics | --- ## Intended use & limitations - **Intended for** research on AI-generated image detection, media forensics, and robustness analysis. - **Out of scope:** real-world deployment as the sole decision in high-stakes moderation, surveillance, or identity-related judgments. Detector scores are probabilistic and can be wrong, especially on heavily post-processed, compressed, or adversarially crafted inputs. - **Bias considerations:** detection performance varies across generators, image content, and demographics; treat outputs as one signal among several, never as ground truth. - Generalization to **future, unseen generators** is a moving target — re-evaluate on your specific data before relying on results. --- ## Citation If you use this checkpoint or the RA-Det method, please cite: ```bibtex @misc{wang2026radetuniversaldetectionaigenerated, title={RA-Det: Towards Universal Detection of AI-Generated Images via Robustness Asymmetry}, author={Xinchang Wang and Yunhao Chen and Yuechen Zhang and Congcong Bian and Zihao Guo and Xingjun Ma and Hui Li}, year={2026}, eprint={2603.01544}, archivePrefix={arXiv}, primaryClass={cs.CV}, url={https://arxiv.org/abs/2603.01544}, } ```