模型概述
模型特點
模型能力
使用案例
🚀 Migician:揭示多模態大語言模型中自由形式多圖像定位的奧秘
Migician是首個能夠在多圖像上進行自由形式和精確定位的多圖像定位模型。它基於大規模數據集MGrounding - 630k進行訓練,並通過MIG - Bench基準進行評估,在多圖像定位能力上顯著超越現有模型。
🚀 快速開始
目錄
1. 環境配置 [返回頂部]
按照以下命令建立合適的環境:
conda env create -n migician python=3.10
git clone https://github.com/Michael4933/Migician.git
cd Migician
conda activate migician
pip install -r requirements.txt
2. 數據準備 [返回頂部]
MGrounding - 630k包含了多種多圖像定位任務和來自不同來源的大量圖像。為了方便使用,我們將整個訓練數據集上傳到了Huggingface,並根據任務類別對這些大量數據進行了整理。
⚠️ 重要提示
由於多圖像任務的性質,每個訓練示例都涉及多個圖像。因此,600k +的訓練示例總共包含了更多數量的圖像。請確保你有足夠的硬盤存儲空間和穩定的網絡連接。
你可以在./data/MGrounding - 630k
下載數據,然後解壓縮相應的.zip文件。這將得到如下所示的數據結構。我們將所有對話數據收集在./data/MGrounding - 630k/MGrounding - 630k.json
中,方便使用,其中每個訓練示例都標有相應的子任務類別。同時也提供了每個任務的單獨json文件。
從huggingface下載數據的代碼在./data/download.py
中,實現了一鍵快速下載。
最終的代碼結構如下:
Migician/
├──data/
│ ├──MGrounding-630k
│ │ ├── Common_Object
│ │ │ ├── COCO
│ │ │ ├── ImageNet
│ │ │ ├── Object365
│ │ │ ├── common_train_70k.json # 此級別上的附加.zip文件可能幫助有限
│ │ │
│ │ ├── Difference
│ │ │ ├── clevr-change
│ │ │ ├── img-diff
│ │ │ ├── magicbrush
│ │ │ ├── spot-the-diff
│ │ │ ├── diff_train_70k.json
│ │ │
│ │ ├── Free-Form
│ │ │ ├── Object365
│ │ │ ├── free_form_grounding_130k.json
│ │ │
│ │ ├── Group_Grounding
│ │ │ ├── SA-1B
│ │ │ ├── _gg_reg_40k.json # 組定位迴歸任務
│ │ │ ├── gg_train_120k.json # 組定位識別任務
│ │ │
│ │ ├── Object_Tracking
│ │ │ ├── GOT-10k
│ │ │ ├── LaSOT
│ │ │ ├── MOT17_image
│ │ │ ├── TrackingNet
│ │ │ ├── ot_train_130k.json
│ │ │
│ │ ├── Referring_Grounding
│ │ │ ├── ImageNet
│ │ │ ├── refer_train_70k.json
│ │ │
│ │ ├── Region_Locating
│ │ ├── Object365
│ │ ├── region_train_70k.json
│ │
│ ├── MGrounding-630k.json # 包含所有對話數據
│
...
訓練數據的示例結構:
{
"id": "5229016_8929009_6793119_3571391", # 你可以忽略此內容
"images": [
"./MGrounding-630k/Group_Grounding/SA-1B/sa_5229016.jpg",
"./MGrounding-630k/Group_Grounding/SA-1B/sa_8929009.jpg",
"./MGrounding-630k/Group_Grounding/SA-1B/sa_6793119.jpg",
"./MGrounding-630k/Group_Grounding/SA-1B/sa_3571391.jpg"
], # 它們都以列表形式組織
"conversations": [
{
"from": "human",
"value": "<image>\n<image>\n<image>\n<image>\n給出此句子所指區域的邊界框:<|object_ref_start|>一個男人的雕像<|object_ref_end|>。" # 我們在定位任務中採用特殊標記
},
{
"from": "gpt",
"value": "它在第三張圖像中。<|box_start|>(316,58),(764,999)<|box_end|>" # 0 - 1000,相對位置,x1 y1 x2 y2格式
},
{
"from": "human",
"value": "識別此句子所指的目標區域:<|object_ref_start|>一個穿著橙色襯衫的女人<|object_ref_end|>。"
},
{
"from": "gpt",
"value": "它在第一張圖像中。<|box_start|>(408,656),(578,997)<|box_end|>"
}
],
"type": "gg_train" # 組定位任務
}
3. 推理與評估 [返回頂部]
推理
如論文中所述,🎩Migician在[Qwen2 - VL - 7B](https://huggingface.co/Qwen/Qwen2 - VL - 7B - Instruct)上通過漸進式兩階段訓練過程進行微調,使用了8 * A100 - 80G上的大量數據。你可以通過以下代碼感受多圖像定位的神奇之處:
from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
import torch
model = Qwen2VLForConditionalGeneration.from_pretrained(
"Your_Migician_Path",
torch_dtype=torch.bfloat16,
attn_implementation="flash_attention_2", # 建議啟用flash_attention_2以獲得更好的加速和內存節省。
device_map="auto",
)
messages = [
{
"role": "user",
"content": [
{
"type": "image", "image": resize("./figs/multi_view_1.png"),
},
{
"type": "image", "image": resize("./figs/multi_view_2.png"),
},
{
"type": "image", "image": resize("./figs/multi_view_3.png"),
},
{
"type": "image", "image": resize("./figs/multi_view_4.png"),
},
{
"type": "text", "text": "請識別<|object_ref_start|>所有這些圖像中出現的共同人物<|object_ref_end|>,並在所有這些圖像中定位此人。"
}
]
}
]
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(text=[text],images=image_inputs,videos=video_inputs,padding=True,return_tensors="pt")
inputs = inputs.to("cuda")
# 推理:生成輸出
generated_ids = model.generate(**inputs, max_new_tokens=128)
generated_ids_trimmed = [
out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text)
評估
🤗📜[MIG - Bench](https://huggingface.co/datasets/Michael4933/MIG - Bench)可以全面評估當前MLLM的多圖像定位(MIG)能力。你可以直接從huggingface下載它並進行自己的評估。評估的文件結構如下:
Migician/
├──eval/
│ ├── MIG-Bench
│ │ ├── images
│ │ │ ├── common # 10種不同的任務
│ │ │ ├── correspondence
│ │ │ ├── group_grounding
│ │ │ ...
│ │ ├── MIG_data.json # 可直接用於評估
│ │
│ ├── eval_output/
│ ├── others/ # MMIU和MIBench
│ │
│ ├── MIG_bench_cot.py # 通過單圖像CoT框架執行MIG
│ ├── MIG_bench_eval.py # 通過直接推理執行MIG
│ ├── utils.py
│ ├── requirements.txt
│ ├── chat.py
每個測試示例的格式如下,其中包括任務類別標籤、圖像路徑、問題和真實值等關鍵信息:
⚠️ 重要提示
真實座標被歸一化為0 - 1之間的浮點數,遵循
x1 y1 x2 y2
格式。這些數值是相對於整個圖像的寬度和高度的相對位置。
{
"task": "reasoning",
"images": [
"./MIG-Bench/images/reasoning/case097_1.png",
"./MIG-Bench/images/reasoning/case097_2.png"
],
"question": "圖像2中哪個物品與圖像1具有相似特徵?找到它並在第二張圖像中定位它。 ",
"answer": [
0.418,
0.391,
0.595,
0.546
],
"additional_info": "圖像2中哪個物品與圖像1具有相似特徵?",
"need_format": true
}
你可以在MIG - Bench上對🤩🤩🤩七個不同的模型[Migician、[Qwen2 - VL](https://huggingface.co/Qwen/Qwen2 - VL - 7B - Instruct)、[InternVL2](https://huggingface.co/OpenGVLab/InternVL2 - 8B)、[MiniCPM - V_2.6](https://huggingface.co/openbmb/MiniCPM - V - 2_6)、[LLaVA - OneVision](https://huggingface.co/llava - hf/llava - onevision - qwen2 - 7b - ov - hf)、[mPLUG - Owl3](https://huggingface.co/mPLUG/mPLUG - Owl3 - 7B - 241101)和[Mantis](https://huggingface.co/TIGER - Lab/Mantis - 8B - Idefics2)]進行一鍵評估。只需運行MIG_bench_eval.py腳本,它將報告IOU@0.7、IOU@0.5、IOU@0.3和平均IOU分數。我們還在MIG_bench_eval.py中為不同模型簡化了對🤗MIBench和🤗MMIU的評估。
4. 微調
我們的兩階段訓練過程主要基於🏭🏭🏭[Llamafactory](https://github.com/hiyouga/LLaMA - Factory)進行,其中對整個大語言模型(LLM)的骨幹參數進行了微調。 我們提供了這兩個階段的訓練腳本和requirements.txt文件:
Migician/
├── train/
│ ├── stage-1_finetune_full.yaml
│ ├── stage-2_finetune_full.yaml
│ ├── requirements.txt
✨ 主要特性
頂尖的多圖像定位能力
📚 詳細文檔
摘要
近期,多模態大語言模型(MLLMs)的發展顯著提升了它們對單圖像的細粒度感知和對多圖像的整體理解能力。然而,現有的MLLMs在複雜的多圖像場景中實現精確的定位仍然面臨挑戰。為了解決這個問題,我們首先探索了一種思維鏈(CoT)框架,該框架將單圖像定位與多圖像理解相結合。雖然部分有效,但由於其非端到端的性質,它仍然不穩定,並且難以捕捉抽象的視覺信息。因此,我們引入了🎩Migician,這是第一個能夠在多個圖像上進行自由形式和精確定位的多圖像定位模型。為了支持這一模型,我們提出了[MGrounding - 630k](https://huggingface.co/datasets/Michael4933/MGrounding - 630k)數據集,該數據集包含從現有數據集中派生的多個多圖像定位任務的數據,以及新生成的自由形式定位指令跟隨數據。此外,我們還提出了[MIG - Bench](https://huggingface.co/datasets/Michael4933/MIG - Bench),這是一個專門用於評估多圖像定位能力的綜合基準。實驗結果表明,我們的模型在多圖像定位能力上有顯著提升,比現有的最佳MLLMs高出21.61%,甚至超過了更大的70B模型。
🔧 技術細節
基礎信息
屬性 | 詳情 |
---|---|
基礎模型 | Qwen/Qwen2 - VL - 7B - Instruct |
數據集 | Michael4933/MGrounding - 630k、lmms - lab/M4 - Instruct - Data、lmms - lab/LLaVA - OneVision - Data |
語言 | 英語 |
許可證 | apache - 2.0 |
評估指標 | 準確率 |
任務類型 | 圖像文本到文本 |
庫名稱 | transformers |
📄 許可證
本項目遵循apache - 2.0許可證。
📝 引用
@misc{li2025migicianrevealingmagicfreeform,
title={Migician: Revealing the Magic of Free-Form Multi-Image Grounding in Multimodal Large Language Models},
author={You Li and Heyu Huang and Chen Chi and Kaiyu Huang and Chao Huang and Zonghao Guo and Zhiyuan Liu and Jinan Xu and Yuhua Li and Ruixuan Li and Maosong Sun},
year={2025},
url={https://arxiv.org/abs/2501.05767},
}









