🚀 ChartVE (圖表視覺蘊含)
ChartVE是一個視覺蘊含模型,在論文 “Do LVLMs Understand Charts? Analyzing and Correcting Factual Errors in Chart Captioning” 中被提出,用於評估生成的標題句子相對於輸入圖表的事實性。該模型將圖表和標題句子作為輸入,並輸出蘊含概率。若要計算蘊含概率,請參考下面的 “如何使用” 部分。此模型的底層架構是UniChart。
請注意,該模型期望輸入的文本為標題句子。對於長度超過一句的標題,應將標題拆分為多個句子,將每個句子分別輸入到ChartVE中,然後彙總分數。下面,我們提供了一個如何使用ChartVE的示例。
🚀 快速開始
ChartVE模型主要用於評估生成的標題句子相對於輸入圖表的事實性,通過輸入圖表和標題句子,輸出蘊含概率來實現這一功能。
✨ 主要特性
- 事實性評估:能夠評估生成的標題句子相對於輸入圖表的事實性。
- 特定輸入要求:期望輸入的文本為標題句子,對於長標題需拆分處理。
- 底層架構:基於UniChart架構。
📦 安裝指南
文檔未提及具體安裝步驟,可參考代碼中使用預訓練模型的方式,確保相關依賴庫(如transformers
、PIL
等)已正確安裝。
💻 使用示例
基礎用法
from transformers import DonutProcessor, VisionEncoderDecoderModel
from PIL import Image
model_name = "khhuang/chartve"
model = VisionEncoderDecoderModel.from_pretrained(model_name).cuda()
processor = DonutProcessor.from_pretrained(model_name)
image_path = "PATH_TO_IMAGE"
def format_query(sentence):
return f"Does the image entails this statement: \"{sentence}\"?"
CAPTION_SENTENCE = "The state that has the highest number of population is California."
query = format_query(CAPTION_SENTENCE)
img = Image.open(IMAGE_PATH)
pixel_values = processor(img.convert("RGB"), random_padding=False, return_tensors="pt").pixel_values
pixel_values = pixel_values.cuda()
decoder_input_ids = processor.tokenizer(query, add_special_tokens=False, return_tensors="pt", max_length=510).input_ids.cuda()
outputs = model(pixel_values, decoder_input_ids=decoder_input_ids)
binary_entail_prob_positive = torch.nn.functional.softmax(outputs['logits'].squeeze()[-1,[2334, 49922]])[1].item()
高級用法
文檔未提及高級用法相關內容。
📚 詳細文檔
該模型將圖表和標題句子作為輸入,輸出蘊含概率。對於較長的標題,需要拆分為多個句子分別輸入並彙總分數。
📄 許可證
本項目採用Apache 2.0許可證。
引用
@misc{huang-etal-2023-do,
title = "Do LVLMs Understand Charts? Analyzing and Correcting Factual Errors in Chart Captioning",
author = "Huang, Kung-Hsiang and
Zhou, Mingyang and
Chan, Hou Pong and
Fung, Yi R. and
Wang, Zhenhailong and
Zhang, Lingyu and
Chang, Shih-Fu and
Ji, Heng",
year={2023},
eprint={2312.10160},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
⚠️ 重要提示
此模型期望輸入的文本為標題句子。對於長度超過一句的標題,應將標題拆分為多個句子,將每個句子分別輸入到ChartVE中,然後彙總分數。
💡 使用建議
若要計算蘊含概率,請參考 “如何使用” 部分的代碼示例。