Fine-tuned Florence-2 model on DocumentVQA dataset to perform question answering on document images
1import torch
2from transformers import AutoModelForCausalLM, AutoProcessor
3
4model = AutoModelForCausalLM.from_pretrained("sahilnishad/Florence-2-FT-DocVQA", trust_remote_code=True)
5processor = AutoProcessor.from_pretrained("sahilnishad/Florence-2-FT-DocVQA", trust_remote_code=True)
6device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
7model.to(device)
1def run_inference(task_prompt, question, image):
2 prompt = task_prompt + question
3
4 if image.mode != "RGB":
5 image = image.convert("RGB")
6
7 inputs = processor(text=prompt, images=image, return_tensors="pt").to(device)
8
9 with torch.no_grad():
10 generated_ids = model.generate(
11 input_ids=inputs["input_ids"],
12 pixel_values=inputs["pixel_values"],
13 max_new_tokens=1024,
14 num_beams=3
15 )
16 generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
17 return generated_text
1from PIL import Image
2from datasets import load_dataset
3
4data = load_dataset("HuggingFaceM4/DocumentVQA")
5
6question = "What do you see in this image?"
7image = data['train'][0]['image']
8print(run_inference("<DocVQA>", question, image))
1@misc{sahilnishad_florence_2_ft_docvqa,
2 author = {Sahil Nishad},
3 title = {Fine-Tuning Florence-2 For Document Visual Question-Answering},
4 year = {2024},
5 url = {https://huggingface.co/sahilnishad/Florence-2-FT-DocVQA},
6 note = {Model available on HuggingFace Hub},
7 howpublished = {\url{https://huggingface.co/sahilnishad/Florence-2-FT-DocVQA}},
8}