sentinel-lfm — LFM2.5-VL-450M MERGED (illegal-mining patch classifier)

Full standalone weights = LiquidAI/LFM2.5-VL-450M with the sentinel-lfm LoRA fine-tune merged in. Loads directly, no PEFT/adapter needed. Classifies a single RGB patch as mine / no-mine, replying {"mine_present": true|false}.

For the lightweight adapter-only version see ASTRALK/sentinel-lfm-mining-450m-lora.

Results on the held-out test split (419 patches, 303 pos / 116 neg)

model acc F1 recall recall_neg precision
base (zero-shot) 0.7208 0.8326 0.9604 0.0948 0.7348
this (merged FT) 0.7995 0.8645 0.8845 0.5776 0.8454

Usage

from transformers import AutoProcessor, AutoModelForImageTextToText
from transformers.image_utils import load_image

model = AutoModelForImageTextToText.from_pretrained("ASTRALK/sentinel-lfm-mining-450m-merged", dtype="bfloat16", device_map="auto")
proc = AutoProcessor.from_pretrained("ASTRALK/sentinel-lfm-mining-450m-merged")

img = load_image("patch.png")
conv = [{"role":"user","content":[
    {"type":"image","image":img},
    {"type":"text","text":'Does this satellite patch show illegal mining? Reply with only this JSON: {"mine_present": true} or {"mine_present": false}'}]}]
inp = proc.apply_chat_template(conv, add_generation_prompt=True, return_tensors="pt", return_dict=True, tokenize=True).to(model.device)
print(proc.decode(model.generate(**inp, max_new_tokens=16)[0][inp["input_ids"].shape[1]:], skip_special_tokens=True))
Downloads last month
9
Safetensors
Model size
0.4B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ASTRALK/sentinel-lfm-mining-450m-merged

Finetuned
(26)
this model