介绍? WorldCuisines是一种大规模的多语言和多元文化VQA基准,挑战了视觉语言模型(VLMS),以了解9个语言家族的30多种语言和方言中的文化食品多样性,其中有超过100万个数据点可从2.4k菜肴中获得6K图像。作为基准,我们有三套:

?世界助理?包括其两个受支持的任务中的平衡比例。我们提供超过100万的培训数据和60K评估数据。我们的基准测试评估VLM在两个任务上:DISH名称预测和DIS位置预测。这些设置包括无关,上下文化和对抗性注入的提示,作为模型的输入。
我们的数据集可用吗?拥抱面部数据集。可以找到支持KB数据?拥抱面部数据集。

这是论文[arxiv]的源代码。此代码是使用Python编写的。如果您在研究中使用此工具包中的任何代码或数据集,请引用相关论文。
@article { winata2024worldcuisines ,
title = { WorldCuisines: A Massive-Scale Benchmark for Multilingual and Multicultural Visual Question Answering on Global Cuisines } ,
author = { Winata, Genta Indra and Hudi, Frederikus and Irawan, Patrick Amadeus and Anugraha, David and Putri, Rifki Afina and Wang, Yutong and Nohejl, Adam and Prathama, Ubaidillah Ariq and Ousidhoum, Nedjma and Amriani, Afifa and others } ,
journal = { arXiv preprint arXiv:2410.12705 } ,
year = { 2024 }
}如果您想获得我们评估的所有VLLM的最终结果,请参阅此排行榜以获取摘要。原始结果放置在evaluation/score/json目录中。
请运行以下命令以安装所需的库以复制基准结果。
pip pip install -r requirements.txt
conda conda env create -f env.yml
对于Pangea,请运行以下内容
pip install -e "git+https://github.com/gentaiscool/LLaVA-NeXT@79ef45a6d8b89b92d7a8525f077c3a3a9894a87d#egg=llava[train]"
所有实验结果将存储在evaluation/result/目录中。使用所有任务的精度(特别是针对开放式任务(OEQ))评估结果,我们使用使用多参考计算的精度。您可以使用以下命令执行每个实验:
cd evaluation/
python run.py --model_path {model_path} --task {task} --type {type}
| 争论 | 描述 | 示例 /默认值 |
|---|---|---|
--task | 评估的任务编号(1或2) | 1 (默认), 2 |
--type | 评估的问题类型( oe或mc ) | mc (默认), oe |
--model_path | 通往模型的路径 | Qwen/Qwen2-VL-72B-Instruct (默认) +其他 |
--fp32 | 使用float32代替float16 / bfloat16 | False (默认) |
--multi_gpu | 使用多个GPU | False (默认) |
-n , --chunk_num | 将数据拆分为 | 1 (默认) |
-k , --chunk_id | 块ID(基于0) | 0 (默认) |
-s , --st_idx | 启动切片数据的索引(包括) | None (默认) |
-e , --ed_idx | 切片数据的结束索引(独家) | None (默认) |
我们支持以下模型(您可以修改我们的代码以使用其他模型进行评估)。
rhymes-ai/Ariameta-llama/Llama-3.2-11B-Vision-Instructmeta-llama/Llama-3.2-90B-Vision-Instructllava-hf/llava-v1.6-vicuna-7b-hfllava-hf/llava-v1.6-vicuna-13b-hfallenai/MolmoE-1B-0924allenai/Molmo-7B-D-0924allenai/Molmo-7B-O-0924microsoft/Phi-3.5-vision-instructQwen/Qwen2-VL-2B-InstructQwen/Qwen2-VL-7B-InstructQwen/Qwen2-VL-72B-Instructmistralai/Pixtral-12B-2409neulab/Pangea-7B (请按照环境设置中提到的安装LLAVA)编辑evaluation/score/score.yml以确定评分模式,评估集和评估VLM。请注意, mc表示多项选择,而oe表示开放式。
mode : all # {all, mc, oe} all = mc + oe
oe_mode : multi # {single, dual, multi}
subset : large # {large, small}
models :
- llava-1.6-7b
- llava-1.6-13b
- qwen-vl-2b
- qwen2-vl-7b-instruct
- qwen2-vl-72b
- llama-3.2-11b
- llama-3.2-90b
- molmoe-1b
- molmo-7b-d
- molmo-7b-o
- aria-25B-moe-4B
- Phi-3.5-vision-instruct
- pixtral-12b
- nvlm
- pangea-7b
- gpt-4o-2024-08-06
- gpt-4o-mini-2024-07-18
- gemini-1.5-flash除了生成oe分数的multi模式(将答案与所有语言的黄金标签进行比较)外,我们还支持其他黄金标签参考设置:
single参考:仅将答案与原始语言的金标签进行比较。dual参考:将原始语言和英语的黄金标签的答案比较。设置后,运行此命令:
cd evaluation/score/
python score.py我们提供雷达,散射和连接的散点线图,以可视化所有VLM的评分结果evaluation/score/plot/ 。
要生成所有雷达图,请使用:
python evaluation/score/plot/visualization.py

您还可以修改evaluation/score/score.yml plot_mapper.yml



其他绘图生成脚本在同一目录中的*.ipynb文件中可用。
我们的代码库支持多个模型的实验使用,为自定义列表提供了灵活性:
(截至2024年10月,上一次测试)
要从知识库生成VQA数据集,您可以参考generate_vqa/sampling.py脚本。该脚本在培训和测试集中生成了用于各种任务的数据集。
示例命令:要生成用于测试小型,测试大型和火车集的数据集,请运行以下命令:
cd generate_vqa
mkdir -p generated_data
# Test Small Task 1
python3 sampling.py -o " generated_data/test_small_task1.csv " -n 9000 -nd 100 -np1a 1 -np1b 0 -np1c 1 -npb 1 --is-eval
# Test Small Task 2
python3 sampling.py -o " generated_data/test_small_task2.csv " -n 3000 -nd 100 -np1a 0 -np1b 1 -np1c 0 -npb 0 --is-eval
# Test Large Task 1
python3 sampling.py -o " generated_data/test_large_task1.csv " -n 45000 -nd 500 -np1a 1 -np1b 0 -np1c 1 -npb 1 --is-eval
# Test Large Task 2
python3 sampling.py -o " generated_data/test_large_task2.csv " -n 15000 -nd 500 -np1a 0 -np1b 1 -np1c 0 -npb 0 --i-eval
# Train Task 1
python3 sampling.py -o " generated_data/train_task1.csv " -n 810000 -nd 1800 -np1a 5 -np1b 0 -np1c 5 -npb 5 --no-is-eval
# Train Task 2
python3 sampling.py -o " generated_data/train_task2.csv " -n 270000 -nd 1800 -np1a 0 -np1b 5 -np1c 0 -npb 0 --no-is-eval| 争论 | 描述 | 例子 |
|---|---|---|
-o , --output-csv | 输出CSV路径将保存生成的VQA数据集。 | generated_data/test_small_task1.csv |
-n , --num-samples | 要生成的最大实例数。如果要求的样本超出可能,则脚本将进行调整。 | 9000 |
-nd , --n-dish-max | 最大唯一的菜肴来品尝。 | 100 |
-np1a , --n-prompt-max-type1a | 在每次迭代中,任务1(a)(a)(无封闭式)的最大唯一提示。 | 1 |
-np1b , --n-prompt-max-type1b | 任务1(b)(上下文化)到每道迭代中每道菜的最大唯一提示。 | 1 |
-np1c , --n-prompt-max-type1c | 任务1(c)(对抗)到每道迭代中每道菜的最大唯一提示。 | 1 |
-np2 , --n-prompt-max-type2 | 在每次迭代中,任务2到每道菜的最大唯一提示。 | 1 |
--is-eval , --no-is-eval | 是生成评估(测试)还是培训数据集。 | --is-eval测试, --no-is-eval for Train |
| 争论 | 描述 | 例子 |
|---|---|---|
-fr , --food-raw-path | 通往生食数据CSV的路径。 | food_raw_6oct.csv |
-fc , --food-cleaned-path | 通往清洁食品数据CSV的路径。 | food_cleaned.csv |
-q , --query-context-path | 查询上下文CSV的路径。 | query_ctx.csv |
-l , --loc-cuis-path | 通往位置和美食CSV的路径。 | location_and_cuisine.csv |
-ll , --list-of-languages | 指定语言用作字符串列表。 | '["en", "id_formal"]' |
-aw , --alias-aware | 用平行别名启用对抗答案 | --alias-aware需要查找包含所有语言平行翻译的答案的要求, --no-alias-aware放松并行菜肴名称要求 |
如果您有任何疑问,请随时创建问题。并且,创建用于修复错误或添加改进的PR。
如果您有兴趣创建这项工作的扩展,请随时与我们联系!
支持我们的开源工作
我们正在改进代码,尤其是在推理部分上,以生成evaluation/result和评分可视化代码统一,以使其更具用户友好和可定制。