The model handles two output modalities from a single VLM:
Text output: Standard autoregressive text generation for captioning, VQA, classification
Image output: When the model generates a special <SEG> token, its hidden representation is projected through an MLP and used as a prompt for SlimSAM's mask decoder to generate a segmentation mask image
This means the model learns when to generate an image (by outputting <SEG>) and what image to generate (the hidden state encodes the full visual context).
Tasks
Text Output Tasks
Task
Example
Image Captioning
"Describe this satellite image" → "Green trees surround industrial buildings near a river..."
Visual QA
"What type of land cover is shown?" → "Agricultural farmland"
Scene Classification
"Classify this satellite image" → "Industrial Buildings"
Object Detection
"What objects are visible?" → "3 buildings and 2 roads"
Flood Assessment
"Is there flooding visible?" → "Yes, 2 flooded buildings visible"
Image Output Tasks
Task
Example
Building Segmentation
"Segment the buildings" → Text + Binary mask image
Instance Segmentation
"Detect and segment all structures" → Text + Per-instance masks
Run inference on sampled dataset examples across all task types and generate a structured report:
bash
1# Default: 3 samples per task from validation split2python infer_dataset.py --model_repo rahuldshetty/satellite-omni-lisa
34# More samples, custom output5python infer_dataset.py --model_repo rahuldshetty/satellite-omni-lisa \6 --samples_per_task 5\7 --split test\8 --output_dir ./my_eval
910# Force CPU (slower but works without GPU)11python infer_dataset.py --device cpu --samples_per_task 2