CogVLM 和 CogAgent
🌟 跳转到详细介绍:CogVLM介绍, 🆕 CogAgent介绍
📔 更详细的使用信息,请参考:CogVLM & CogAgent技术文档
CogVLM📖 论文:CogVLM: 预训练语言模型的视觉专家 CogVLM是一个强大的开源视觉语言模型(VLM)。CogVLM-17B有100亿视觉参数和70亿语言参数,支持490*490分辨率的图像理解和多轮对话。 CogVLM-17B在10个经典跨模态基准测试中达到了最先进的性能,包括NoCaps、Flicker30k描述、RefCOCO、RefCOCO+、RefCOCOg、Visual7W、GQA、ScienceQA、VizWiz VQA和TDIUC。 |
CogAgentCogAgent是基于CogVLM改进的开源视觉语言模型。CogAgent-18B有110亿视觉参数和70亿语言参数,支持1120*1120分辨率的图像理解。除了CogVLM的能力外,它还具备GUI图像代理能力。 CogAgent-18B在9个经典跨模态基准测试中达到了最先进的通用性能,包括VQAv2、OK-VQ、TextVQA、ST-VQA、ChartQA、infoVQA、DocVQA、MM-Vet和POPE。它在AITW和Mind2Web等GUI操作数据集上显著超越了现有模型。 |
🌐 CogVLM2的网页演示:此链接 |
目录
发布
-
🔥🔥🔥 新闻:
2024/5/20
: 我们发布了下一代模型CogVLM2,它基于llama3-8b,在大多数情况下与GPT-4V相当(或更好)!快来下载试用! -
🔥🔥 新闻:
2024/4/5
: CogAgent被选为CVPR 2024亮点论文! -
🔥 新闻:
2023/12/26
: 我们已发布CogVLM-SFT-311K数据集, 其中包含超过15万条我们仅用于CogVLM v1.0训练的数据。欢迎关注和使用。 -
新闻:
2023/12/18
: **新的网页界面已上线!**我们推出了基于Streamlit的新网页界面, 用户可以在我们的界面中轻松与CogVLM、CogAgent对话。体验更佳。 -
新闻:
2023/12/15
: CogAgent正式发布!CogAgent是基于CogVLM开发的图像理解模型。 它具有基于视觉的GUI代理能力,并在图像理解方面有进一步增强。它支持1120*1120分辨率的图像输入, 并拥有包括图像多轮对话、GUI代理、Grounding等多项能力。 -
新闻:
2023/12/8
我们已更新cogvlm-grounding-generalist的检查点为 cogvlm-grounding-generalist-v1.1,在训练时使用了图像增强,因此更加稳健。 详见介绍。 -
新闻:
2023/12/7
CogVLM现在支持4位量化!您只需11GB显存就可以进行推理! -
新闻:
2023/11/20
我们已更新cogvlm-chat的检查点为cogvlm-chat-v1.1,统一了聊天和VQA的版本, 并刷新了各种数据集上的最佳记录。详见介绍 -
新闻:
2023/11/20
我们在🤗Huggingface上发布了**cogvlm-chat、cogvlm-grounding-generalist/base、cogvlm-base-490/224**。现在您可以用几行代码使用transformers进行推理! -
2023/10/27
CogVLM双语版本已上线!欢迎试用! -
2023/10/5
CogVLM-17B发布。
开始使用
选项1:使用网页演示进行推理
- 点击此处进入CogVLM2演示。
如果您需要使用代理和Grounding功能,请参考使用手册 - 任务提示词
选项2:自行部署CogVLM / CogAgent
我们支持两种模型推理的图形界面,命令行界面和网页演示。如果您想在Python代码中使用它,很容易修改命令行界面脚本以适应您的情况。
首先,我们需要安装依赖项。
# CUDA >= 11.8
pip install -r requirements.txt
python -m spacy download en_core_web_sm
所有用于推理的代码都位于basic_demo/
目录下。在进行进一步操作之前,请先切换到该目录。
情况2.1 命令行界面(SAT版本)
通过以下方式运行命令行演示:
# CogAgent
python cli_demo_sat.py --from_pretrained cogagent-chat --version chat --bf16 --stream_chat
python cli_demo_sat.py --from_pretrained cogagent-vqa --version chat_old --bf16 --stream_chat
# CogVLM
python cli_demo_sat.py --from_pretrained cogvlm-chat --version chat_old --bf16 --stream_chat
python cli_demo_sat.py --from_pretrained cogvlm-grounding-generalist --version base --bf16 --stream_chat
程序将自动下载sat模型并在命令行中进行交互。您可以通过输入指令并按回车来生成回复。
输入clear
清除对话历史,输入stop
停止程序。
我们还支持模型并行推理,将模型分割到多个(2/4/8)GPU上。以下命令中的--nproc-per-node=[n]
控制使用的GPU数量。
torchrun --standalone --nnodes=1 --nproc-per-node=2 cli_demo_sat.py --from_pretrained cogagent-chat --version chat --bf16
-
如果您想手动下载权重,可以将
--from_pretrained
后的路径替换为模型路径。 -
我们的模型支持SAT的4位量化和8位量化。 您可以将
--bf16
更改为--fp16
,或--fp16 --quant 4
,或--fp16 --quant 8
。例如
python cli_demo_sat.py --from_pretrained cogagent-chat --fp16 --quant 8 --stream_chat python cli_demo_sat.py --from_pretrained cogvlm-chat-v1.1 --fp16 --quant 4 --stream_chat # 在SAT版本中,--quant应与--fp16一起使用
-
程序提供以下超参数来控制生成过程:
用法: cli_demo_sat.py [-h] [--max_length MAX_LENGTH] [--top_p TOP_P] [--top_k TOP_K] [--temperature TEMPERATURE] 可选参数: -h, --help 显示此帮助信息并退出 --max_length MAX_LENGTH 总序列的最大长度 --top_p TOP_P 核采样的top p --top_k TOP_K top k采样的top k --temperature TEMPERATURE 采样的温度
-
点击这里查看不同模型与
--version
参数的对应关系。
情况2.2 命令行界面(Huggingface版本)
通过以下方式运行命令行演示:
# CogAgent
python cli_demo_hf.py --from_pretrained THUDM/cogagent-chat-hf --bf16
python cli_demo_hf.py --from_pretrained THUDM/cogagent-vqa-hf --bf16
# CogVLM
python cli_demo_hf.py --from_pretrained THUDM/cogvlm-chat-hf --bf16
python cli_demo_hf.py --from_pretrained THUDM/cogvlm-grounding-generalist-hf --bf16
-
如果您想手动下载权重,可以将
--from_pretrained
后的路径替换为模型路径。 -
您可以将
--bf16
更改为--fp16
,或--quant 4
。例如,我们的模型支持Huggingface的4位量化:python cli_demo_hf.py --from_pretrained THUDM/cogvlm-chat-hf --quant 4
情况2.3 网页演示
我们还提供了基于Gradio的本地网页演示。首先,通过运行以下命令安装Gradio:pip install gradio
。然后下载并进入此存储库,运行web_demo.py
。详细用法见下一节:
python web_demo.py --from_pretrained cogagent-chat --version chat --bf16
python web_demo.py --from_pretrained cogagent-vqa --version chat_old --bf16
python web_demo.py --from_pretrained cogvlm-chat-v1.1 --version chat_old --bf16
python web_demo.py --from_pretrained cogvlm-grounding-generalist --version base --bf16
网页演示的图形界面如下所示:
选项3:微调CogAgent / CogVLM
您可能想在自己的任务中使用CogVLM,这需要不同的输出风格或领域知识。所有用于微调的代码都位于finetune_demo/
目录下。
我们在这里提供了一个使用lora进行验证码识别的微调示例。
- 首先下载[验证码图像数据集](https://www.kaggle.com/datasets/aa
模型检查点
如果您从代码仓库运行basic_demo/cli_demo*.py
,它会自动下载SAT或Hugging Face权重。或者,您也可以选择手动下载所需的权重。
-
CogAgent
模型名称 输入分辨率 简介 Huggingface模型 SAT模型 cogagent-chat 1120 CogAgent的聊天版本。支持GUI代理、多轮对话和视觉定位。 HF链接
OpenXLab链接HF链接
OpenXLab链接cogagent-vqa 1120 CogAgent的VQA版本。在单轮视觉对话方面具有更强的能力。推荐用于VQA基准测试。 HF链接
OpenXLab链接HF链接
OpenXLab链接 -
CogVLM
模型名称 输入分辨率 简介 Huggingface模型 SAT模型 cogvlm-chat-v1.1 490 同时支持多轮对话和VQA,使用不同的提示。 HF链接
OpenXLab链接HF链接
OpenXLab链接cogvlm-base-224 224 文本-图像预训练后的原始检查点。 HF链接
OpenXLab链接HF链接
OpenXLab链接cogvlm-base-490 490 通过从 cogvlm-base-224
插值位置编码将分辨率放大到490。HF链接
OpenXLab链接HF链接
OpenXLab链接cogvlm-grounding-generalist 490 该检查点支持不同的视觉定位任务,如REC、Grounding Captioning等。 HF链接
OpenXLab链接HF链接
OpenXLab链接
CogVLM简介
-
CogVLM是一个强大的开源视觉语言模型(VLM)。CogVLM-17B有100亿视觉参数和70亿语言参数。
-
CogVLM-17B在10个经典的跨模态基准测试中达到了最先进的性能,包括NoCaps、Flicker30k captioning、RefCOCO、RefCOCO+、RefCOCOg、Visual7W、GQA、ScienceQA、VizWiz VQA和TDIUC,并在VQAv2、OKVQA、TextVQA、COCO captioning等方面排名第二,超越或匹配PaLI-X 55B。CogVLM还可以与您聊天讨论图像。
点击查看MM-VET、POPE、TouchStone的结果。
方法 | LLM | MM-VET | POPE(对抗性) | TouchStone |
BLIP-2 | Vicuna-13B | 22.4 | - | - |
Otter | MPT-7B | 24.7 | - | - |
MiniGPT4 | Vicuna-13B | 24.4 | 70.4 | 531.7 |
InstructBLIP | Vicuna-13B | 25.6 | 77.3 | 552.4 |
LLaMA-Adapter v2 | LLaMA-7B | 31.4 | - | 590.1 |
LLaVA | LLaMA2-7B | 28.1 | 66.3 | 602.7 |
mPLUG-Owl | LLaMA-7B | - | 66.8 | 605.4 |
LLaVA-1.5 | Vicuna-13B | 36.3 | 84.5 | - |
Emu | LLaMA-13B | 36.3 | - | - |
Qwen-VL-Chat | - | - | - | 645.2 |
DreamLLM | Vicuna-7B | 35.9 | 76.5 | - |
CogVLM | Vicuna-7B | 52.8 | 87.6 | 742.0 |
点击查看cogvlm-grounding-generalist-v1.1的结果。
RefCOCO | RefCOCO+ | RefCOCOg | Visual7W | ||||||
val | testA | testB | val | testA | testB | val | test | test | |
cogvim-grounding-generalist | 92.51 | 93.95 | 88.73 | 87.52 | 91.81 | 81.43 | 89.46 | 90.09 | 90.96 |
cogvim-grounding-generalist-v1.1 | **92.76** | **94.75** | **88.99** | **88.68** | **92.91** | **83.39** | **89.75** | **90.79** | **91.05** |
示例
-
CogVLM能够准确详细地描述图像,几乎不会产生幻觉。
点击查看与LLAVA-1.5和MiniGPT-4的比较。
<img src=assets/llava-comparison-min.png width=50% />
-
CogVLM可以理解并回答各种类型的问题,并有一个视觉定位版本。
- CogVLM有时能比GPT-4V(ision)捕捉到更多细节内容。
点击展开更多示例。
CogAgent简介
CogAgent是一个基于CogVLM改进的开源视觉语言模型。CogAgent-18B有110亿视觉参数和70亿语言参数。
CogAgent-18B在9个经典跨模态基准测试中达到了最先进的通用性能,包括VQAv2、OK-VQ、TextVQA、ST-VQA、ChartQA、infoVQA、DocVQA、MM-Vet和POPE。它在GUI操作数据集(如AITW和Mind2Web)上的表现显著超越了现有模型。
除了CogVLM已有的所有功能(视觉多轮对话、视觉定位)外,CogAgent还:
-
支持更高分辨率的视觉输入和对话问答。支持1120x1120的超高分辨率图像输入。
-
具备视觉Agent的能力,能够针对任何GUI截图上的任何任务返回计划、下一步行动和具体的带坐标操作。
-
增强了GUI相关的问答能力,可以处理任何GUI截图的问题,如网页、PC应用、移动应用等。
-
通过改进的预训练和微调,增强了OCR相关任务的能力。
GUI Agent示例
使用指南
任务提示
-
一般多轮对话:说出你想说的任何话。
-
GUI Agent任务:使用Agent模板并用双引号括起来的任务指令替换<TASK>。这个查询可以让CogAgent推断计划和下一步行动。如果在查询末尾添加
(with grounding)
,模型将返回带坐标的正式化动作表示。
例如,要询问模型如何在当前GUI截图上完成"搜索CogVLM"的任务,请按以下步骤操作:
- 从[Agent
计划:1. 在谷歌搜索栏中输入"CogVLM"。2. 查看出现的搜索结果。3. 点击相关结果以阅读更多关于CogVLM的信息或访问更多资源。
下一步行动:将光标移至谷歌搜索栏,并在其中输入"CogVLM"。 基于图像的操作:[下拉框] 搜索 -> 在框内输入:CogVLM [[212,498,787,564]]
提示:对于GUI代理任务,建议每张图片只进行单轮对话以获得更好的结果。
-
视觉定位。支持三种定位模式:
-
带定位坐标(边界框)的图像描述。使用caption_with_box模板中的任何模板作为模型输入。例如:
你能提供图像的描述,并包括每个提到物体的坐标[[x0,y0,x1,y1]]吗?
-
根据物体描述返回定位坐标(边界框)。使用caption2box模板中的任何模板,将
<expr>
替换为物体描述。例如:
你能在图像中指出穿蓝色T恤的孩子并提供他们位置的边界框吗?
-
根据边界框坐标提供描述。使用box2caption模板中的模板,将
<objs>
替换为位置坐标。例如:
告诉我你在图片中指定区域*[[086,540,400,760]]*内看到了什么。
-
坐标格式: 模型输入和输出中的边界框坐标使用[[x1, y1, x2, y2]]
格式,原点在左上角,x轴向右,y轴向下。(x1, y1)和(x2, y2)分别是左上角和右下角,值为相对坐标乘以1000(前面补零到三位)。
使用哪个--version
由于模型功能的差异,不同的模型版本可能有不同的文本处理器--version
规格,这意味着使用的提示格式有所不同。
模型名称 | --version |
---|---|
cogagent-chat | chat |
cogagent-vqa | chat_old |
cogvlm-chat | chat_old |
cogvlm-chat-v1.1 | chat_old |
cogvlm-grounding-generalist | base |
cogvlm-base-224 | base |
cogvlm-base-490 | base |
常见问题
- 如果您在访问huggingface.co时遇到困难,可以添加
--local_tokenizer /path/to/vicuna-7b-v1.5
来加载分词器。 - 如果您在使用🔨SAT自动下载模型时遇到困难,请尝试从🤖modelscope或🤗huggingface或💡wisemodel手动下载。
- 使用🔨SAT下载模型,模型将保存到默认位置
~/.sat_models
。通过设置环境变量SAT_HOME
来更改默认位置。例如,如果您想将模型保存到/path/to/my/models
,可以在运行python命令之前执行export SAT_HOME=/path/to/my/models
。
许可证
本仓库中的代码根据Apache-2.0许可证开源,而使用CogVLM模型权重必须遵守模型许可证。
引用和致谢
如果您觉得我们的工作有帮助,请考虑引用以下论文
[论文引用信息]
在CogVLM的指令微调阶段,有一些英文图文数据来自MiniGPT-4、LLAVA、LRV-Instruction、LLaVAR和Shikra项目,以及许多经典的跨模态工作数据集。我们衷心感谢他们的贡献。