2024-08-30 13:30 湖北
阿里发布Qwen2-VL,开源了Qwen2-VL-2B和Qwen2-VL-7B,72B型号后续推出,Qwen2-VL是Qwen模型系列中视觉语言模型的最新版本。
SoTA 对各种分辨率和比例的图像的理解:Qwen2-VL 在视觉理解基准上实现了最先进的性能,包括 MathVista、DocVQA、RealWorldQA、MTVQA 等。
理解 20 分钟以上的视频:借助在线流媒体功能,Qwen2-VL 可以通过基于高质量视频的问答、对话、内容创作等方式理解 20 分钟以上的视频。
可以操作你的手机、机器人等的Agent:Qwen2-VL 具有复杂的推理和决策能力,可以与手机、机器人等设备集成,根据视觉环境和文本指令进行自动操作。
多语言支持:为了服务全球用户,除了英语和中文,Qwen2-VL 现在还支持理解图像中不同语言的文本,包括大多数欧洲语言、日语、韩语、阿拉伯语、越南语等
模型架构更新:
简单的动态分辨率:与以前不同,Qwen2-VL 可以处理任意图像分辨率,将它们映射到动态数量的视觉标记中,提供更像人类的视觉处理体验。
多模态旋转位置嵌入(M-ROPE):将位置嵌入分解为各个部分,以捕获 1D 文本、2D 视觉和 3D 视频位置信息,增强其多模态处理能力。
Agent Benchmarks:
SR、GC、TM 和 EM 分别是成功率、目标条件成功、类型匹配和完全匹配的缩写。
Qwen 团队自行编写的函数调用基准测试
通过强化学习对大型视觉语言模型进行微调,使其成为决策Agent
Android:GUI Agent的动作链思维
ThinkBot:通过思维链推理实现具体指令遵循
MapGPT:带有自适应路径规划的地图引导提示,用于视觉和语言导
Agent Function Call:
Qwen2-VL支持函数调用(又称工具调用或工具使用),基于 Qwen-Agent进行示例演示:
import json
import urllib.parse
from qwen_agent.llm import get_chat_model
from qwen_agent.llm.schema import ContentItem
def image_gen(prompt: str) -> str:
prompt = urllib.parse.quote(prompt)
image_url = f'https://image.pollinations.ai/prompt/{prompt}'
return image_url
def test():
# Config for the model
llm_cfg_oai = {
# Using Qwen2-VL deployed at any openai-compatible service such as vLLM:
'model_type': 'qwenvl_oai',
'model': 'Qwen/Qwen2-VL-72B-Instruct',
'model_server': 'http://localhost:8000/v1', # api_base
'api_key': 'EMPTY',
}
llm = get_chat_model(llm_cfg_oai)
# Initial conversation
messages = [{
'role':
'user',
'content': [{
'image': 'https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg'
}, {
'text': '图片中的内容是什么?请画一张内容相同,风格类似的图片。'
}]
}]
functions = [
{
'name': 'image_gen',
'description': 'AI绘画(图像生成)服务,输入文本描述,返回根据文本信息绘制的图片URL。',
'parameters': {
'name': 'prompt',
'type': 'string',
'description': '详细描述了希望生成的图像具有什么内容,例如人物、环境、动作等细节描述,使用英文',
'required': True
}
},
]
print('# Assistant Response 1:')
responses = []
for responses in llm.chat(messages=messages, functions=functions, stream=True):
print(responses)
messages.extend(responses)
for rsp in responses:
if rsp.get('function_call', None):
func_name = rsp['function_call']['name']
if func_name == 'image_gen':
func_args = json.loads(rsp['function_call']['arguments'])
image_url = image_gen(func_args['prompt'])
print('# Function Response:')
func_rsp = {
'role': 'function',
'name': func_name,
'content': [ContentItem(image=image_url),
ContentItem(text=f'( 这张图片的URL是 {image_url} )')],
}
messages.append(func_rsp)
print(func_rsp)
else:
raise NotImplementedError
print('# Assistant Response 2:')
responses = []
for responses in llm.chat(messages=messages, functions=functions, stream=True):
print(responses)
messages.extend(responses)
if __name__ == '__main__':
test()
https://huggingface.co/collections/Qwen/qwen2-vl-66cee7455501d7126940800d
https://github.com/QwenLM/Qwen2-VL
推荐阅读
• 对齐LLM偏好的直接偏好优化方法:DPO、IPO、KTO
• RAG全景图:从RAG启蒙到高级RAG之36技,再到终章Agentic RAG!
• Agent到多模态Agent再到多模态Multi-Agents系统的发展与案例讲解(1.2万字,20+文献,27张图)
欢迎关注我的公众号“PaperAgent”,每天一篇大模型(LLM)文章来锻炼我们的思维,简单的例子,不简单的方法,提升自己。