易於使用的 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 " ,
}
我們將提供長期維護來修復錯誤、解決問題並滿足新的要求。因此,如果您有任何問題,請向我們提出問題。