易于使用的 MLLM 多模态幻觉检测框架
致谢·基准测试·演示·概述·ModelZoo·安装·⏩快速入门·引文
该项目的部分实施得到了相关幻觉工具包的协助和启发,包括 FactTool、Woodpecker 等。该存储库还受益于 mPLUG-Owl、MiniGPT-4、LLaVA、GroundingDINO 和 MAERec 的公共项目。我们遵循相同的开源许可,并感谢他们对社区的贡献。
EasyDetect 是一个系统包,在您的研究实验中被提议作为多模态大型语言模型(MLLM)(如 GPT-4V、Gemini、LlaVA)的易于使用的幻觉检测框架。
统一检测的先决条件是对 MLLM 内幻觉的主要类别进行一致分类。我们的论文从统一的角度粗略地审视了以下幻觉分类法:
图 1:统一的多模态幻觉检测旨在识别和检测物体、属性和场景文本等各个层面的模态冲突幻觉,以及图像到文本和文本到图像中的事实冲突幻觉一代。
模态冲突的幻觉。 MLLM 有时会生成与其他模式的输入冲突的输出,从而导致诸如不正确的对象、属性或场景文本等问题。上图 (a) 中的示例包括 MLLM 不准确地描述运动员的制服,展示了由于 MLLM 实现细粒度文本图像对齐的能力有限而导致的属性级冲突。
与事实相矛盾的幻觉。 MLLM 的输出可能与既定的事实知识相矛盾。图像到文本模型可以通过合并不相关的事实来生成偏离实际内容的叙述,而文本到图像模型可能产生无法反映文本提示中包含的事实知识的视觉效果。这些差异凸显了 MLLM 为保持事实一致性而付出的努力,代表了该领域的重大挑战。
多模态幻觉的统一检测需要检查每个图像-文本对a={v, x}
,其中v
表示提供给 MLLM 的视觉输入或由其合成的视觉输出。相应地, x
表示 MLLM 基于v
生成的文本响应或用于合成v
文本用户查询。在此任务中,每个x
可能包含多个声明,表示为a
确定它是“幻觉”还是“非幻觉”,并根据所提供的幻觉定义为他们的判断提供依据。 LLM 的文本幻觉检测表示此设置中的一个子情况,其中v
为空。
为了推进这一研究轨迹,我们引入了元评估基准 MHaluBench,它涵盖了从图像到文本和文本到图像生成的内容,旨在严格评估多模态幻觉检测器的进展。下图提供了有关 MHaluBench 的更多统计详细信息。
表 1:现有事实核查或幻觉评估的基准比较。 “查看。”表示验证事实一致性,“Eval”。表示评估不同法学硕士产生的幻觉,其响应基于被测的不同法学硕士,而“Det”。体现了对探测器识别幻觉能力的评价。
图2: MHaluBench的索赔级数据统计。 “IC”表示图像字幕,“T2I”表示文本到图像合成。
图 3: MHaluBench 幻觉标签声明中幻觉类别的分布。
为了解决幻觉检测中的关键挑战,我们在图 4 中引入了一个统一的框架,该框架系统地解决了图像到文本和文本到图像任务的多模态幻觉识别。我们的框架利用各种工具的特定领域优势来有效收集多模式证据来确认幻觉。
图4: UniHD用于统一多模态幻觉检测的具体图示。
您可以在三个平台上下载 HalDet-LLaVA 的两个版本:7b 和 13b:HuggingFace、ModelScope 和 WiseModel。
抱脸 | 模型范围 | 智慧模型 |
---|---|---|
哈尔德拉瓦-7b | 哈尔德拉瓦-7b | 哈尔德拉瓦-7b |
哈尔德特拉瓦-13b | 哈尔德特拉瓦-13b | 哈尔德特拉瓦-13b |
验证数据集上的声明级别结果
任务类型 | 模型 | 加速器 | 平均预测值 | 平均召回率 | 麦克F1 |
图像到文本 | 自检0shot (GPV-4V) | 75.09 | 74.94 | 75.19 | 74.97 |
自检2shot (GPV-4V) | 79.25 | 79.02 | 79.16 | 79.08 | |
哈尔德特 (LLAVA-7b) | 75.02 | 75.05 | 74.18 | 74.38 | |
哈尔德特 (LLAVA-13b) | 78.16 | 78.18 | 77.48 | 77.69 | |
UniHD(GPT-4V) | 81.91 | 81.81 | 81.52 | 81.63 | |
UniHD(GPT-4o) | 86.08 | 85.89 | 86.07 | 85.96 | |
文本到图像 | 自检0shot (GPV-4V) | 76.20 | 79.31 | 75.99 | 75.45 |
自检2shot (GPV-4V) | 80.76 | 81.16 | 80.69 | 80.67 | |
哈尔德特 (LLAVA-7b) | 67.35 | 69.31 | 67.50 | 66.62 | |
哈尔德特 (LLAVA-13b) | 74.74 | 76.68 | 74.88 | 74.34 | |
UniHD(GPT-4V) | 85.82 | 85.83 | 85.83 | 85.82 | |
UniHD(GPT-4o) | 89.29 | 89.28 | 89.28 | 89.28 |
要查看有关 HalDet-LLaVA 和训练数据集的更多详细信息,请参阅自述文件。
本地开发安装:
git clone https://github.com/zjunlp/EasyDetect.git
cd EasyDetect
pip install -r requirements.txt
工具安装(GroundingDINO 和 MAERec):
# install GroundingDINO
git clone https://github.com/IDEA-Research/GroundingDINO.git
cp -r GroundingDINO pipeline/GroundingDINO
cd pipeline/GroundingDINO/
pip install -e .
cd ..
# install MAERec
git clone https://github.com/Mountchicken/Union14M.git
cp -r Union14M/mmocr-dev-1.x pipeline/mmocr
cd pipeline/mmocr/
pip install -U openmim
mim install mmengine
mim install mmcv
mim install mmdet
pip install timm
pip install -r requirements/albu.txt
pip install -r requirements.txt
pip install -v -e .
cd ..
mkdir weights
cd weights
wget -q https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth
wget https://download.openmmlab.com/mmocr/textdet/dbnetpp/dbnetpp_resnet50-oclip_fpnc_1200e_icdar2015/dbnetpp_resnet50-oclip_fpnc_1200e_icdar2015_20221101_124139-4ecb39ac.pth -O dbnetpp.pth
wget https://github.com/Mountchicken/Union14M/releases/download/Checkpoint/maerec_b_union14m.pth -O maerec_b.pth
cd ..
我们提供示例代码,供用户快速上手 EasyDetect。
用户可以轻松地在yaml文件中配置EasyDetect的参数,或者快速使用我们提供的配置文件中的默认参数。配置文件的路径为 EasyDetect/pipeline/config/config.yaml
openai :
api_key : Input your openai api key
base_url : Input base_url, default is None
temperature : 0.2
max_tokens : 1024
tool :
detect :
groundingdino_config : the path of GroundingDINO_SwinT_OGC.py
model_path : the path of groundingdino_swint_ogc.pth
device : cuda:0
BOX_TRESHOLD : 0.35
TEXT_TRESHOLD : 0.25
AREA_THRESHOLD : 0.001
ocr :
dbnetpp_config : the path of dbnetpp_resnet50-oclip_fpnc_1200e_icdar2015.py
dbnetpp_path : the path of dbnetpp.pth
maerec_config : the path of maerec_b_union14m.py
maerec_path : the path of maerec_b.pth
device : cuda:0
content : word.number
cachefiles_path : the path of cache_files to save temp images
BOX_TRESHOLD : 0.2
TEXT_TRESHOLD : 0.25
google_serper :
serper_api_key : Input your serper api key
snippet_cnt : 10
prompts :
claim_generate : pipeline/prompts/claim_generate.yaml
query_generate : pipeline/prompts/query_generate.yaml
verify : pipeline/prompts/verify.yaml
示例代码
from pipeline . run_pipeline import *
pipeline = Pipeline ()
text = "The cafe in the image is named " Hauptbahnhof " "
image_path = "./examples/058214af21a03013.jpg"
type = "image-to-text"
response , claim_list = pipeline . run ( text = text , image_path = image_path , type = type )
print ( response )
print ( claim_list )
如果您在工作中使用 EasyDetect,请引用我们的存储库。
@article { chen23factchd ,
author = { Xiang Chen and Duanzheng Song and Honghao Gui and Chengxi Wang and Ningyu Zhang and
Jiang Yong and Fei Huang and Chengfei Lv and Dan Zhang and Huajun Chen } ,
title = { FactCHD: Benchmarking Fact-Conflicting Hallucination Detection } ,
journal = { CoRR } ,
volume = { abs/2310.12086 } ,
year = { 2023 } ,
url = { https://doi.org/10.48550/arXiv.2310.12086 } ,
doi = { 10.48550/ARXIV.2310.12086 } ,
eprinttype = { arXiv } ,
eprint = { 2310.12086 } ,
biburl = { https://dblp.org/rec/journals/corr/abs-2310-12086.bib } ,
bibsource = { dblp computer science bibliography, https://dblp.org }
}
@inproceedings { chen-etal-2024-unified-hallucination ,
title = " Unified Hallucination Detection for Multimodal Large Language Models " ,
author = " Chen, Xiang and
Wang, Chenxi and
Xue, Yida and
Zhang, Ningyu and
Yang, Xiaoyan and
Li, Qiang and
Shen, Yue and
Liang, Lei and
Gu, Jinjie and
Chen, Huajun " ,
editor = " Ku, Lun-Wei and
Martins, Andre and
Srikumar, Vivek " ,
booktitle = " Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) " ,
month = aug,
year = " 2024 " ,
address = " Bangkok, Thailand " ,
publisher = " Association for Computational Linguistics " ,
url = " https://aclanthology.org/2024.acl-long.178 " ,
pages = " 3235--3252 " ,
}
我们将提供长期维护来修复错误、解决问题并满足新的要求。因此,如果您有任何问题,请向我们提出问题。