RobustLens β€” experimental LoRA adapters

Adapters produced while building RobustLens, a transformation-resistant AI-generated-image detector for TikTok TechJam 2026 Track 5.

⚠️ None of these adapters were adopted

Every adapter here comes from an experiment that was rejected on measurement. They are published for reproducibility and provenance β€” so a collaborator can verify the rejections rather than take them on trust.

The production RobustLens system does not use any of them. It runs the unmodified base checkpoint. If you want to use RobustLens, you do not need anything in this repository.

What the production system actually uses

The base detector, unmodified:

  • Bombek1/ai-image-detector-siglip-dinov2 β€” SigLIP2-SO400M + DINOv2-Large with LoRA, 740,371,777 parameters
  • SHA-256 caae0c005d8e37e7aa086aa241d1c9445d296ef77649004655c14f5c81130d4b
  • Frozen calibrated threshold 0.69

Contents

Each directory holds adapter_config.json, adapter_model.safetensors (existing LoRA tensors only β€” no full backbone weights) and classifier_head.pt. About 32 MB each.

Adapter Experiment Outcome
local_edit_smoke Head-only fine-tune on local AI edits Rejected β€” held-out AUROC fell 0.510 β†’ 0.354
consistency_classification_only Ablation baseline, BCE loss only Reference arm
consistency_consistency_mse + logit-MSE transformation-consistency loss Rejected β€” no gain (F1 0.7500, AUROC 0.4375)
consistency_consistency_kl + symmetric-KL consistency loss Rejected β€” no gain (F1 0.7500, AUROC 0.4479)

All four are head_only mode: 1,250,561 trainable parameters against 739,121,216 frozen. No second LoRA adapter was added β€” the existing adapter tensors in the base checkpoint were reused.

Why they were rejected

Local-edit fine-tune. Pre-registered rule: adopt only if local-edit recall or F1 improves by β‰₯0.01 without authentic FPR rising more than 0.05. Held out (n=20, threshold 0.5):

Metric Original Fine-tuned Ξ”
Accuracy 0.6000 0.6000 +0.0000
F1 0.7500 0.7500 +0.0000
Recall 1.0000 1.0000 +0.0000
AUROC 0.5104 0.3542 βˆ’0.1562

Ranking quality fell and nothing improved, so the adapter was not adopted.

Consistency loss. Three runs differing only in the loss; all variants saw identical paired transformed views. No variant met the +0.01 bar, so classification-only training was kept and the consistency loss ships disabled.

Important limitation

These adapters were trained on 68 training images and evaluated on 20 test images. That is enough to demonstrate the pipeline runs end to end and nowhere near enough to conclude anything about fine-tuning as a method. Treat every number above as a smoke test, not evidence about the approach.

Threshold 0.5 was used for the comparison rather than the production 0.69, because a calibration fitted for one model does not transfer to another.

Using an adapter

Adapters load onto a model restored from the base checkpoint β€” they are not standalone models.

# fetch into models/adapters/
python scripts/download_adapters.py --adapter local_edit_smoke

python scripts/run_inference.py \
    --input-dir path/to/images \
    --adapter-dir models/adapters/local_edit_smoke \
    --no-calibration \
    --output outputs/predictions.json

--no-calibration matters: the shipped calibration and the 0.69 threshold were fitted for the base checkpoint and do not apply to an adapted model.

Source

Code, evaluation protocol and full results: RobustLens β€” see FINAL_RESULTS.md and AUDIT.md.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support