This model is a Direct Preference Optimization (DPO) aligned version of
Qwen/Qwen2-VL-2B-Instruct, fine-tuned using LoRA on the
HA-DPO preference dataset to significantly reduce visual hallucinations.
1import torch
2from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
3from qwen_vl_utils import process_vision_info
4
5model_id = "srianna/Qwen2-VL-2B-DPO-LoRA"
6
7model = Qwen2VLForConditionalGeneration.from_pretrained(
8 model_id,
9 torch_dtype=torch.bfloat16,
10 device_map="auto",
11)
12processor = AutoProcessor.from_pretrained(model_id)
13
14messages = [
15 {
16 "role": "user",
17 "content": [
18 {"type": "image", "image": "path/to/your/image.jpg"},
19 {"type": "text", "text": "Describe this image in detail."},
20 ],
21 }
22]
23
24text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
25image_inputs, video_inputs = process_vision_info(messages)
26
27inputs = processor(
28 text=[text],
29 images=image_inputs,
30 videos=video_inputs,
31 padding=True,
32 return_tensors="pt"
33).to(model.device)
34
35with torch.no_grad():
36 output_ids = model.generate(
37 **inputs,
38 max_new_tokens=512,
39 do_sample=False,
40 repetition_penalty=1.2,
41 )
42
43generated_ids = output_ids[:, inputs.input_ids.shape[1]:]
44print(processor.batch_decode(generated_ids, skip_special_tokens=True)[0])