import torchfrom PIL import Imagefrom transformers import AutoProcessor, AutoModelForImageTextToTextfrom peft import PeftModel BASE_MODEL = "Qwen/Qwen2.5-VL-3B-Instruct"ADAPTER_PATH = "rukiyeberna/qwen2.5-vl-3b-food-extract-lora" # Load base model & LoRA adapterbase_model = AutoModelForImageTextToText.from_pretrained( BASE_MODEL, torch_dtype=torch.bfloat16, device_map="auto")model = PeftModel.from_pretrained(base_model, ADAPTER_PATH)processor = AutoProcessor.from_pretrained(ADAPTER_PATH)model.eval() # Load image and build promptimage = Image.open("sample_food.jpg").convert("RGB")prompt = """Analyze this image and return only valid JSON with exactly these keys:- is_food- image_title- food_items- drink_items""" 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], padding=True, return_tensors="pt").to(model.device) with torch.inference_mode(): generated_ids = model.generate( **inputs, max_new_tokens=128, do_sample=False, repetition_penalty=1.15, no_repeat_ngram_size=3 ) output = processor.batch_decode( generated_ids[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)[0] print(output)