import jsonimport torchfrom peft import PeftModelfrom transformers import AutoProcessor, BitsAndBytesConfig, Qwen2_5_VLForConditionalGenerationfrom PIL import Image base = "Qwen/Qwen2.5-VL-3B-Instruct"adapter = "MuhibBeekun/pickai-qwen2.5-vl-3b-layout-vision-lora" processor = AutoProcessor.from_pretrained(adapter, trust_remote_code=True)model = Qwen2_5_VLForConditionalGeneration.from_pretrained( base, trust_remote_code=True, device_map="auto", quantization_config=BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.float16, ),)model = PeftModel.from_pretrained(model, adapter)model.eval() image = Image.open("floor_plan.png").convert("RGB")prompt = ( 'Return JSON only: {"facility_draft":{"locations":[...]}} extracted from the warehouse floor plan image.\n' "Copy location_id exactly as printed on bay labels.\n") messages = [{"role": "user", "content": [{"type": "image", "image": image}, {"type": "text", "text": prompt}]}]text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)inputs = processor(text=[text], images=[image], return_tensors="pt").to(model.device) with torch.inference_mode(): out = model.generate(**inputs, max_new_tokens=2048, do_sample=False) decoded = processor.decode(out[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)print(decoded)