--- license: mit language: - en --- # ChartGemma: Visual Instruction-tuning for Chart Reasoning in the Wild Paper Link: https://arxiv.org/abs/2407.04172 The abstract of the paper states that: > Given the ubiquity of charts as a data analysis, visualization, and decision-making tool across industries and sciences, there has been a growing interest in developing pre-trained foundation models as well as general purpose instruction-tuned models for chart understanding and reasoning. However, existing methods suffer crucial drawbacks across two critical axes affecting the performance of chart representation models: they are trained on data generated from underlying data tables of the charts, ignoring the visual trends and patterns in chart images, \emph{and} use weakly aligned vision-language backbone models for domain-specific training, limiting their generalizability when encountering charts in the wild. We address these important drawbacks and introduce ChartGemma, a novel chart understanding and reasoning model developed over PaliGemma. Rather than relying on underlying data tables, ChartGemma is trained on instruction-tuning data generated directly from chart images, thus capturing both high-level trends and low-level visual information from a diverse set of charts. Our simple approach achieves state-of-the-art results across $5$ benchmarks spanning chart summarization, question answering, and fact-checking, and our elaborate qualitative studies on real-world charts show that ChartGemma generates more realistic and factually correct summaries compared to its contemporaries. # Web Demo If you wish to quickly try our model, you can access our public web demo hosted on the Hugging Face Spaces platform with a friendly interface! [ChartGemma Web Demo](https://huggingface.co/spaces/ahmed-masry/ChartGemma) # Inference You can easily use our models for inference with the huggingface library! You just need to do the following: 1. Chage the **_image_path_** to your chart example image path on your system 2. Write the **_input_text_** We recommend using beam search with a beam size of 4, but if your machine has low memory, you can remove the num_beams from the generate method. ``` from PIL import Image import requests from transformers import AutoProcessor, PaliGemmaForConditionalGeneration import torch torch.hub.download_url_to_file('https://raw.githubusercontent.com/vis-nlp/ChartQA/main/ChartQA%20Dataset/val/png/multi_col_1229.png', 'chart_example_1.png') image_path = "/content/chart_example_1.png" input_text ="program of thought: what is the sum of Faceboob Messnger and Whatsapp values in the 18-29 age group?" # Load Model model = PaliGemmaForConditionalGeneration.from_pretrained("ahmed-masry/chartgemma", torch_dtype=torch.float16) processor = AutoProcessor.from_pretrained("ahmed-masry/chartgemma") device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model = model.to(device) # Process Inputs image = Image.open(image_path).convert('RGB') inputs = processor(text=input_text, images=image, return_tensors="pt") prompt_length = inputs['input_ids'].shape[1] inputs = {k: v.to(device) for k, v in inputs.items()} # Generate generate_ids = model.generate(**inputs, num_beams=4, max_new_tokens=512) output_text = processor.batch_decode(generate_ids[:, prompt_length:], skip_special_tokens=True, clean_up_tokenization_spaces=False)[0] print(output_text) ``` # Contact If you have any questions about this work, please contact **[Ahmed Masry](https://ahmedmasryku.github.io/)** using the following email addresses: **amasry17@ku.edu.tr** or **ahmed.elmasry24653@gmail.com**. # Reference Please cite our paper if you use our model in your research. ``` @misc{masry2024chartgemmavisualinstructiontuningchart, title={ChartGemma: Visual Instruction-tuning for Chart Reasoning in the Wild}, author={Ahmed Masry and Megh Thakkar and Aayush Bajaj and Aaryaman Kartha and Enamul Hoque and Shafiq Joty}, year={2024}, eprint={2407.04172}, archivePrefix={arXiv}, primaryClass={cs.AI}, url={https://arxiv.org/abs/2407.04172}, } ```