Main results
These are complete, unpruned model evaluations, audited against existing prediction records on 2026-10-13. The reported results use the corrected option-scoring protocol.
Table with columns: Dataset, Accuracy, Correct / Total, Metric| Dataset | Accuracy | Correct / Total | Metric |
|---|
| RSHR-Bench | 50.72% | 980 / 1,932 | All-QA option accuracy |
| XLRS-Bench-lite | 52.27% | 1,610 / 3,080 | Strict option-set accuracy |
| MME-RealWorld Remote Sensing | 56.80% | 2,123 / 3,738 | Full remote-sensing subset accuracy |
RSHR's single-turn subset is 45.66% (726/1,590). XLRS includes 52.45% (1,563/2,980) on single-choice questions and 47.00% (47/100) on multi-select tasks. MME uses the full 3,738-record remote-sensing subset, not its 150-record Lite subset.
The evaluated image budget is min_pixels=784, max_pixels=1,310,720 per image. Images are resized within this budget. Single-choice evaluation uses FP32 candidate-option logits; XLRS multi-select evaluation uses constrained decoding and exact option-set matching. Ordinary free generation is not the same scoring procedure. See EVALUATION.md and evaluation_results.json for categories, denominators and protocol details.
Model and training
Table with columns: Item, Value| Item | Value |
|---|
| Base model | Qwen/Qwen3-VL-8B-Instruct |
| Architecture | Qwen3VLForConditionalGeneration |
| Training data | GeoLLaVA, selected 10K examples |
| Fine-tuning | Frozen vision encoder; train merger and LLM |
| Checkpoint format | Full BF16 safetensors, 4 shards |
| Training completion | 1 epoch, 625 optimizer steps |
| Launch configuration | Adafactor; learning rate 1e-5; global batch 16; maximum sequence length 8,192 |
| Release scope | Dense checkpoint and inference example |
The checkpoint's trainer state confirms one completed epoch and 625 steps. Other training settings above are recorded launcher defaults. This is the final training checkpoint; no validation-selected best checkpoint was recorded. The original UHR-BAT uses a different architecture; its custom compression modules and results are not part of this Qwen3-VL weight release.
Quick start
Use Python 3.10 or later and a CUDA-enabled PyTorch installation. A single image can be processed with the standard Qwen3-VL implementation; custom remote code is not required. GPU memory requirements depend on image size and output length.
pip install -r requirements.txtpython inference.py --model RL-MIND/UHR-BAT2 \ --image /path/to/remote_sensing_image.jpg \ --question "Describe the land use and visible objects in this image."
import torchfrom PIL import Imagefrom transformers import AutoProcessor, Qwen3VLForConditionalGeneration model_id = "RL-MIND/UHR-BAT2"processor = AutoProcessor.from_pretrained(model_id)model = Qwen3VLForConditionalGeneration.from_pretrained( model_id, dtype="auto", device_map="auto", attn_implementation="sdpa").eval() image = Image.open("remote_sensing_image.jpg").convert("RGB")messages = [{"role": "user", "content": [ {"type": "image"}, {"type": "text", "text": "Describe this remote-sensing image."},]}]prompt = processor.apply_chat_template( messages, tokenize=False, add_generation_prompt=True)inputs = processor(text=[prompt], images=[image], return_tensors="pt")inputs.pop("token_type_ids", None)inputs = inputs.to(model.device)with torch.inference_mode(): output = model.generate( **inputs, max_new_tokens=128, do_sample=False, temperature=None, top_p=None, top_k=None, use_cache=True, )answer = output[:, inputs["input_ids"].shape[1]:]print(processor.batch_decode(answer, skip_special_tokens=True)[0])
For ModelScope, download the same package and pass the local directory to the example above:
from modelscope import snapshot_downloadmodel_id = snapshot_download("KAIWANG/UHR-BAT2")# Use model_id with AutoProcessor and Qwen3VLForConditionalGeneration above.
The example demonstrates image-conditioned generation. It does not reproduce the option-scoring evaluation table by itself.
The release passed a native loading and short image-generation smoke test with Python 3.11.0, PyTorch 2.5.1+cu121, Transformers 4.57.0.dev0 and Accelerate 1.13.0. The test checks package loading and generation, not benchmark accuracy or inference speed. File hashes and tensor metadata are in release_manifest.json.
Limitations
Counting and small-object localization remain challenging. These resized-input evaluations do not establish native full-resolution ultra-high-resolution performance. A matched evaluation of the unfine-tuned base model is not included, so this release makes no controlled fine-tuning improvement claim. A training-data audit found candidate scene-name/tile matches with RSHR; pixel-level and question-level overlap have not been resolved, so geographic-disjoint generalization is not established.
License and acknowledgments
Released under Apache-2.0, following the base model's license. See NOTICE for the upstream attribution and modifications. Training and benchmark datasets are not redistributed; their own terms apply. We acknowledge the Qwen team, GeoLLaVA contributors and the benchmark authors.