🚀 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中,然后汇总分数。
💡 使用建议
若要计算蕴含概率,请参考 “如何使用” 部分的代码示例。