Un marco de detección de alucinaciones multimodal fácil de usar para MLLM
?Reconocimiento • ?Parámetro • ?Demostración • ?Descripción general • ?ModelZoo • ?Instalación • ⏩Inicio rápido • Cita
Parte de la implementación de este proyecto contó con la ayuda e inspiración de los kits de herramientas de alucinaciones relacionados, incluidos FactTool, Woodpecker y otros. Este repositorio también se beneficia del proyecto público de mPLUG-Owl, MiniGPT-4, LLaVA, GroundingDINO y MAERec. Seguimos la misma licencia para el código abierto y les agradecemos sus contribuciones a la comunidad.
EasyDetect es un paquete sistemático que se propone como un marco de detección de alucinaciones fácil de usar para modelos de lenguaje grande multimodal (MLLM) como GPT-4V, Gemini, LlaVA en sus experimentos de investigación.
Un requisito previo para la detección unificada es la categorización coherente de las principales categorías de alucinaciones dentro de los MLLM. Nuestro artículo examina superficialmente la siguiente taxonomía de alucinaciones desde una perspectiva unificada:
Figura 1: La detección de alucinaciones multimodal unificada tiene como objetivo identificar y detectar alucinaciones que entran en conflicto con modalidades en varios niveles, como objeto, atributo y escena-texto, así como alucinaciones que entran en conflicto con hechos tanto en imagen a texto como en texto a imagen. generación.
Alucinación de modalidad conflictiva. Los MLLM a veces generan resultados que entran en conflicto con las entradas de otras modalidades, lo que genera problemas como objetos, atributos o texto de escena incorrectos. Un ejemplo en la Figura (a) anterior incluye un MLLM que describe de manera inexacta el uniforme de un atleta, lo que muestra un conflicto a nivel de atributo debido a la capacidad limitada de los MLLM para lograr una alineación detallada de texto e imagen.
Alucinación que contradice hechos. Los resultados de los MLLM pueden contradecir el conocimiento fáctico establecido. Los modelos de imagen a texto pueden generar narrativas que se desvían del contenido real al incorporar hechos irrelevantes, mientras que los modelos de texto a imagen pueden producir imágenes que no reflejan el conocimiento fáctico contenido en las indicaciones del texto. Estas discrepancias subrayan la lucha de los MLLM por mantener la coherencia fáctica, lo que representa un desafío importante en el ámbito.
La detección unificada de alucinaciones multimodales requiere la verificación de cada par imagen-texto a={v, x}
, donde v
denota la entrada visual proporcionada a un MLLM o la salida visual sintetizada por este. En consecuencia, x
significa la respuesta textual generada por MLLM basada en v
o la consulta textual del usuario para sintetizar v
. Dentro de esta tarea, cada x
puede contener múltiples reclamos, denotados como a
para determinar si es "alucinatoria" o "no alucinatoria", proporcionando una justificación de sus juicios basados en la definición de alucinación proporcionada. La detección de alucinaciones de texto en LLM denota un subcaso en esta configuración, donde v
es nulo.
Para avanzar en esta trayectoria de investigación, presentamos el punto de referencia de metaevaluación MHaluBench, que abarca el contenido de la generación de imagen a texto y de texto a imagen, con el objetivo de evaluar rigurosamente los avances en los detectores de alucinaciones multimodales. En las siguientes figuras se proporcionan más detalles estadísticos sobre MHaluBench.
Tabla 1: Comparación de puntos de referencia con respecto a la verificación de hechos o la evaluación de alucinaciones existentes. "Controlar." indica verificar la coherencia fáctica, "Eval". denota evaluar alucinaciones generadas por diferentes LLM, y su respuesta se basa en diferentes LLM bajo prueba, mientras que "Det." encarna la evaluación de la capacidad de un detector para identificar alucinaciones.
Figura 2: Estadísticas de datos a nivel de reclamo de MHaluBench. "IC" significa subtítulos de imágenes y "T2I" indica síntesis de texto a imagen, respectivamente.
Figura 3: Distribución de categorías de alucinaciones dentro de las afirmaciones etiquetadas como alucinaciones de MHaluBench.
Para abordar los desafíos clave en la detección de alucinaciones, presentamos un marco unificado en la Figura 4 que aborda sistemáticamente la identificación de alucinaciones multimodal para tareas de imagen a texto y de texto a imagen. Nuestro marco aprovecha las fortalezas específicas de dominio de varias herramientas para recopilar de manera eficiente evidencia multimodal para confirmar alucinaciones.
Figura 4: Ilustración específica de UniHD para la detección de alucinaciones multimodal unificada.
Puede descargar dos versiones de HalDet-LLaVA, 7b y 13b, en tres plataformas: HuggingFace, ModelScope y WiseModel.
AbrazosCara | ModeloScope | Modelo sabio |
---|---|---|
HalDet-llava-7b | HalDet-llava-7b | HalDet-llava-7b |
HalDet-llava-13b | HalDet-llava-13b | HalDet-llava-13b |
Los resultados del nivel de reclamación en el conjunto de datos de validación
tipo de tarea | modelo | Acc | promedio prec. | Recuperar promedio | Mac.F1 |
imagen a texto | Autocomprobación 0disparo (GPV-4V) | 75.09 | 74,94 | 75,19 | 74,97 |
Autocomprobación 2 disparos (GPV-4V) | 79,25 | 79.02 | 79,16 | 79.08 | |
HalDet (LLAVA-7b) | 75.02 | 75.05 | 74,18 | 74,38 | |
HalDet (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 | |
texto a imagen | Autocomprobación 0disparo (GPV-4V) | 76,20 | 79,31 | 75,99 | 75,45 |
Autocomprobación 2 disparos (GPV-4V) | 80,76 | 81.16 | 80,69 | 80,67 | |
HalDet (LLAVA-7b) | 67,35 | 69,31 | 67,50 | 66,62 | |
HalDet (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 |
Para ver información más detallada sobre HalDet-LLaVA y el conjunto de datos del tren, consulte el archivo Léame.
Instalación para el desarrollo local:
git clone https://github.com/zjunlp/EasyDetect.git
cd EasyDetect
pip install -r requirements.txt
Instalación de herramientas (GroundingDINO y 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 ..
Proporcionamos código de ejemplo para que los usuarios comiencen rápidamente con EasyDetect.
Los usuarios pueden configurar fácilmente los parámetros de EasyDetect en un archivo yaml o simplemente usar rápidamente los parámetros predeterminados en el archivo de configuración que proporcionamos. La ruta del archivo de configuración es 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
Código de ejemplo
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 )
Cite nuestro repositorio si utiliza EasyDetect en su trabajo.
@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 " ,
}
Ofreceremos mantenimiento a largo plazo para corregir errores, resolver problemas y satisfacer nuevas solicitudes. Entonces, si tiene algún problema, díganoslo.