ray90100/SignVLM-public
SignVLM — LoRA adapters
LoRA adapters for SignVLM: vision-faithful sign-to-lane rule binding on MapDR, built on Qwen2.5-VL-{3B,7B}-Instruct.
Code & full reproduction recipe: <https://github.com/ray90100/SignVLM-public>
Each subfolder is one adapter. SFT subfolders hold a single final/-style adapter; DPO and GRPO subfolders each hold a 4-checkpoint trajectory (step_60/, step_100/, step_140/, step_200/) so you can reproduce the full training-curve plot from the paper.
Quick start
Install the repo per its README §2 (Python 3.10 + the pinned requirements.txt), download the matching base model, then:
from peft import PeftModel
from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
base = Qwen2_5_VLForConditionalGeneration.from_pretrained(
"Qwen/Qwen2.5-VL-7B-Instruct",
torch_dtype="bfloat16",
device_map="cuda",
)
processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-VL-7B-Instruct")
# Paper main adapter (Qwen2.5-VL-7B + LoRA SFT + CAVP, seed 42).
model = PeftModel.from_pretrained(
base,
"ray90100/SignVLM-public",
subfolder="sft-7B-CAVP-p0.3-s42",
)
model.eval()For a DPO / GRPO trajectory checkpoint, point subfolder at the specific step, e.g. subfolder="dpo-7B-tokenmask-beta5.0/step_140".
Download just one adapter to disk
huggingface-cli download ray90100/SignVLM-public \
--include "sft-7B-CAVP-p0.3-s42/*" \
--local-dir ./ckpts/Then pass the local path to the eval / training scripts in the GitHub repo, e.g.
python scripts/eval_sft.py --adapter ckpts/sft-7B-CAVP-p0.3-s42
python scripts/eval_canonical.py runs/sft/.../eval_<...> --rule-version v3Adapter index
All adapters use LoRA rank 64, max_image_pixels = 802816, bf16, AdamW, trained on 6× RTX 4090 (24 GB).
Stage 1 — SFT
Stage 2 — DPO (experimental, results withheld)
Token-mask DPO (--token-mask-dpo) with KL anchor + adapter swap (β=5.0, lr=5e-6, 2 epochs), initialised from the matching SFT-CAVP-p0.3 adapter. Each subfolder contains step_60/, step_100/, step_140/, step_200/.
Stage 2 — GRPO (experimental, results withheld)
GRPO with per-field-graded reward, initialised from sft-3B-CAVP-p0.3-s42. Same 4-step trajectory layout.
Limitations
- All adapters are trained on MapDR (urban / expressway dash-cam, roadside pillar signs in mainland China). Behaviour on other regions or on overhead gantry signs is not characterised.
- Stage 2 (DPO / GRPO) checkpoints are released for transparency; the corresponding paper numbers are withheld pending review.
- The base Qwen2.5-VL checkpoints are not included here — download them from their official Hugging Face repos.
License
Adapters are released under Apache-2.0. The underlying MapDR dataset is CC BY-NC-SA 4.0 (non-commercial). Cite the MapDR paper if you publish results using these adapters.
Citation
Paper under review. Placeholder in the GitHub repo's README §10 will be updated once accepted.
