當哪吒牽手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 圖像的識別,展示了科技與藝術結合的無限可能 。
