
当哪吒牵手Labubu:OpenVINO2025与QWen2.5-VL的奇妙之旅 原创
引言
在科技与艺术不断交融的时代,创意的碰撞总能带来意想不到的惊喜。Labubu,这个由香港艺术家龙家升创造的森林精灵,以其独特的 “丑萌” 形象和丰富的角色设定,在潮流玩具领域掀起了一阵热潮 ,它有着 9 颗尖牙、歪斜笑容与超长獠耳,看似邪恶调皮却心地善良,自 2015 年诞生后,迅速成为了年轻人收藏和追捧的对象。
而Intel的哪吒开发套件,作为一款高性能、高扩展性的开源硬件平台,以其强大的计算能力和丰富的接口,为开发者们提供了无限的创作可能,它搭载 Intel N97 处理器,最高睿频可达 3.6GHz,拥有 Intel UHD Graphics 内核 GPU,支持高分辨率显示,还配备了丰富的接口如 GPIO、USB、HDMI 等,无论是物联网开发、人工智能应用还是创意项目,都能轻松应对。
当 Labubu 这个充满艺术感的潮玩形象遇上哪吒开发板这个科技感十足的硬件平台,会碰撞出怎样的火花呢?今天,就让我们一起走进这场奇妙的创意之旅,通过OpenVINO来部署QWen2.5-VL多模态大模型 Labubu 与哪吒开发板结合背后的故事和乐趣。
当潮玩明星遇上科技新星
(一)哪吒开发板实力剖析
Nezha开发板作为一款备受瞩目的开源硬件平台,具备诸多令人瞩目的特性。
- 硬件参数:哪吒开发板采用英特尔 ® 处理器 N97(Alder Lake-N) ,支持四核 SoC,时钟频率高达 3.60GHz,在提供强大计算能力的同时,TDP 仅为 12W,有效平衡了性能与功耗 。图形处理方面,内置 Intel® UHD Graphics Gen12,最多 24 个执行单元,支持包括 INT8 在内的主要数据类型,通过 HDMI 1.4b 端口可支持 30Hz 的 4KUHD(3840×2160)高分辨率显示,无论是高清视频播放还是图形界面展示,都能轻松应对。内存与存储上,支持高达 8GB 的 LPDDR5 系统内存和高达 64GB 的 eMMC 存储,确保系统运行流畅,同时为数据存储提供了充足的空间。此外,板载 TPM 2.0,提供硬件级别的安全支持,保障系统和数据的安全。
- 性能优势:得益于其高性能处理器和优秀的 GPU 性能,哪吒开发板在各类计算任务中表现出色,尤其是在人工智能和机器学习领域。以图像识别任务为例,在处理复杂图像时,能够快速准确地识别出图像中的物体。同时,其丰富的接口和扩展性,为开发者提供了极大的便利,能够轻松连接各类传感器和执行器,实现多样化的功能。
- 应用领域:哪吒开发板的应用领域十分广泛,在教育领域,可用于教学实践和科研项目,帮助学生更好地理解和掌握编程、人工智能等知识;在物联网网关方面,凭借其强大的计算能力和网络连接能力,能够高效处理和传输物联网设备的数据;在数字标牌领域,能够驱动高分辨率显示屏,展示丰富多样的信息;在机器人开发中,可为机器人提供智能决策和控制能力 。例如,在智能家居控制系统中,哪吒开发板作为核心控制单元,连接各类智能设备,实现对家居环境的智能控制,用户可以通过手机或其他终端远程控制家电设备、调节室内温度等。
奇妙联动:创意应用大放送
我们尝试用OpenVINO在哪吒开发板上部署QWen2.5-VL识别Labubu。在开始这个奇妙联动之前,我们要做一些准备工作。
(二)QWen2.5-VL模型
QWen-VL 是阿里云团队开发的大规模视觉语言模型,它由大规模语言模型(LLM)、视觉编码器和位置感知的视觉语言适配器构成。LLM 采用 Qwen-7B 模型作为核心,视觉编码器基于 Vision Transformer (ViT),特别是 OpenCLIP 的 ViT - bigG 版本,位置感知的视觉语言适配器使用交叉注意力机制,将图像特征压缩为固定长度的表示。它有 3B、7B 和 72B 等不同尺寸版本。它具有以下功能特性:
- 强大的视觉理解能力:能识别常见物体,分析图像中的文本、图表、图标、图形和布局等元素,还能解析图像的布局结构,从 APP 截图中分析出插图和可点按钮等元素。
- 精准的视觉定位:可以通过生成 bounding boxes 或者 points 来准确定位图像中的物体,能为坐标和属性提供稳定的 JSON 输出,比如准确识别和定位马路上骑摩托车未戴头盔的人。
- 出色的 OCR 能力:OCR 能力提升到全新水平,更擅长理解图表并拥有更全面的文档解析能力,在精准识别内容的同时还能完美还原文档版面和格式。
- 增强的视频理解能力:引入了动态帧率(FPS)训练和绝对时间编码技术,不仅能够准确地理解小时级别的长视频内容,还可以在视频中搜索具体事件,并对视频的不同时间段进行要点总结。
- 视觉 Agent 能力:能够直接作为视觉智能体进行操作,而无需特定任务的微调,比如直接操作电脑和手机,根据提示自动完成查询天气、订机票、下载插件等多步骤复杂任务。
(三)MacOS上实现模型转换
采用OpenVINO部署QWen2.5-VL,首先需要将QWen2.5-VL转换成OpenVINO支持的OR格式。
1、模型下载
国内下载模型,第一想到魔搭社区。使用modelscope将模型下载到本地指定目录。
modelscope download --model Qwen/Qwen2.5-VL-3B-Instruct --local_dir ./Qwen2.5
2、模型转换
模型下载完成后,我先在MacOS上进行模型转换。我们需要将原始的PyTorch模型转换为OpenVINO™的IR静态图格式,并对其进行压缩,以实现更轻量化的部署和最佳的性能表现。通过Optimum提供的命令行工具optimum-cli,我们可以一键完成模型的格式转换和权重量化任务。
我的电脑配置是M1芯片,8G内存。在转换前,要先安装Optimum、OpenVINO、Transformers和NNCF等工具
apt update
pip install "git+https://github.com/huggingface/optimum-intel.git" --extra-index-url https://download.pytorch.org/whl/cpu
pip install "openvino>=2025.1.0" "openvino-tokenizers>=2025.1.0" "nncf>=2.15.0" "transformers>=4.49"
- 神经网络压缩框架 (NNCF) 提供了一套训练后和训练时算法,用于优化 OpenVINO™ 中神经网络的推理,同时将准确率下降降至最低。用NNCF将大模型压缩量化,支持 INT8、INT4 模式文件 。
工具下载好后开始模型转换,为了支持哪吒开发板,我将模型进行INT4量化压缩,并存放到Qwen2.5-VL-3B-INT4的文件夹下。
optimum-cli export openvino \
--model ./Qwen2.5-VL-3B \
--task image-text-to-text \
--weight-format int4 \
./Qwen2.5-VL-3B-INT4
这里的--task image-text-to-text参数至关重要,它表示模型支持多模态输入,即图像与文本 。若不指定该参数,转换时会报错。
通过这一系列操作,在 Mac 上成功将 QWen2.5-VL 模型转换为适合在哪吒开发板上部署的 OpenVINO 格式,生成INT4格式的qwen2.5-openvino格式文件。
(四)在哪吒开发板上部署Qwen2.5-VL模型
将在 Mac 上转换好的 QWen2.5-VL 模型部署到哪吒开发板上,充分发挥哪吒开发板的性能优势。在部署前,确保哪吒开发板的系统环境满足要求,安装好必要的依赖库 。
pip install qwen-vl-utils[decord]
pip install "torch>=2.1" "torchvision"
由于目前OpenVINO的GenAI还不支持QWen2.5-VL,所以我们需要通过optimum openvino的插件OVModelForVisualCausalLM 加载模型,基于QWen API函数构建输入预处理与输出后处理。编写代码如下:
from transformers import AutoProcessor, AutoTokenizer
from qwen_vl_utils import process_vision_info
from optimum.intel.openvino import OVModelForVisualCausalLM
min_pixels = 256 * 28 * 28
max_pixels = 1280 * 28 * 28
model_dir = "/Qwen2.5-VL-3B-INT4"
processor = AutoProcessor.from_pretrained(
model_dir,
min_pixels=min_pixels,
max_pixels=max_pixels,
use_fast=True
)
model = OVModelForVisualCausalLM.from_pretrained(model_dir, device="CPU")
if processor.chat_template is None:
tok = AutoTokenizer.from_pretrained("/Qwen2.5-VL-3B-INT4")
processor.chat_template = tok.chat_template
question = "图片里是什么内容?"
messages = [
{
"role": "user",
"content": [
{
"type": "image",
"image": "/pic.jpeg",
},
{"type": "text", "text": question},
],
}
]
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",
)
outputs = model.generate(
**inputs,
max_new_tokens=1048,
do_sample=True,
temperature=0.9,
top_p=0.5,
repetition_penalty=1.1
)
response = processor.batch_decode(outputs, skip_special_tokens=True)[0]
# print("\n完整回答:", response)
print(response)
在加载过程中,合理配置模型参数,如根据开发板的内存和计算资源,设置合适的批处理大小、线程数等,以确保模型能够在开发板上高效稳定地运行 。
(五)哪吒开发板上识别Labubu图像
当 QWen2.5-VL 模型成功部署在哪吒开发板上后,就可以实现对 Labubu 图像的识别。在识别过程中,模型会提取图像中的特征信息,与自身学习到的知识进行匹配,从而判断图像中是否存在 Labubu,并输出相关的识别结果 。例如,模型可能会输出图像中 Labubu的具体形象描述、所在位置信息等 。
这是我们这次准备的Labubu图片:
运行QWen2.5-VL识别,可惜Qwen2.5没认出来,但它对Labubu做出了准确的描述。
我们再给它一个飞机图片试试,看看QWen2.5-VL认识吗?
果然,这次QWen2.5-VL认出来了,还做出了详细解释。
总结与展望
Labubu 与哪吒开发板的结合,是一次充满创意与惊喜的尝试,它将潮流玩具的艺术魅力与开源硬件的科技力量完美融合,为我们带来了全新的体验和乐趣 。通过在 Mac 上实现模型转换,在哪吒开发板上部署和运行 QWen2.5-VL 模型,成功实现了对 Labubu 图像的识别,展示了科技与艺术结合的无限可能 。
