Skip to content

MobileClip2-S3 部署

介绍

MobileCLIP2 是 MobileCLIP 的升级版高效图文预训练模型,专为移动端和低延迟场景设计。模型规模在 50–150M 参数之间,推理延迟仅需 3–15ms,却在零样本任务上达到了行业领先水平。与前代相比,MobileCLIP2 在多模态强化训练中引入了三大改进:其一,采用在 DFN 数据集上训练的高质量 CLIP 教师集成,提升蒸馏效果;其二,改进 captioner 教师,并在多个高质量图文数据集上微调,以提升描述多样性和覆盖度;其三,结合多个生成模型的合成 captions,进一步增强模型鲁棒性。实验结果表明,MobileCLIP2-B 在 ImageNet-1k 零样本分类中比 MobileCLIP-B 提升了 2.2% 精度;MobileCLIP2-S4 在精度上达到 SigLIP-SO400M/14 的水平,但模型小 2 倍、延迟更低,并在 DFN ViT-L/14 上实现 2.5 倍加速。我们已开源预训练模型与数据生成工具,方便社区扩展和复现。

本章节将演示如何在边缘设备上完成 MobileClip2-S3 部署、加载与推理流程。提供以下方式部署:

  • AidLite Python API

在本案例中,模型推理运行在设备端 NPU 计算单元,通过代码调用相关接口接收用户输入并返回结果。

该例子展示了匹配文字与若干图片的关系,非常适合处理以文搜图自动化图像标注的场景。

支持平台

平台运行方式
Rhino Pi-X1Ubuntu 22.04, AidLux

准备工作

  1. Rhino Pi-X1 硬件
  2. Ubuntu 22.04 系统或 AidLux 系统

下载 MobileClip2-S3-FP16 模型资源

bash
mms list MobileClip2

#------------------------可以看到 MobileClip2-S3 模型------------------------
Model           Precision  Chipset           Backend
-----           ---------  -------           -------
MobileClip2-S3  FP16       Qualcomm QCS8550  QNN2.36

# 下载 MobileClip2-S3
mms get -m MobileClip2-S3 -p fp16 -c qcs8550 -b qnn2.36 -d /home/aidlux/mobileclip2-s3
cd /home/aidlux/mobileclip2-s3
# 解压
unzip mobileclip2_s3_qcs8550_qnn2.36_fp16_aidlite.zip

💡注意

该模型位于 Model Farm 的预览板块,仅能通过阿加犀板卡 mms 命令获取

AidLite SDK 安装

开发者也可以参考模型文件夹中的 README.md 安装 SDK

  • 确保 QNN 后端版本 ≥ 2.36
  • 确保 aidlite-sdkaidlite-qnnxxx 的版本是 2.3.x
bash
# AidLite & QNN 版本检查
dpkg -l | grep aidlite
#------------------------ 可以看到类似如下输出 ------------------------
ii  aidlite-qnn236       2.3.0.230         arm64        aidlux aidlite qnn236 backend plugin
ii  aidlite-sdk          2.3.0.230         arm64        aidlux inference module sdk

QNN & AidLite 版本更新

bash
# 安装 AidLite SDK
sudo aid-pkg update
sudo aid-pkg install aidlite-sdk
sudo aid-pkg install aidlite-qnn236

# aidlite sdk c++ check
python3 -c "import aidlite; print(aidlite.get_library_version())"

# aidlite sdk python check
python3 -c "import aidlite; print(aidlite.get_py_library_version())"

AidLite Python API 部署

寻找一只猫的照片

bash

# 安装预处理相关依赖
cd /home/aidlux/mobileclip2-s3/model_farm_mobileclip2_s3_qcs8550_qnn2.36_fp16_aidlite/python/open_clip
pip install -e .
pip install timm
pip install torch torchvision torchaudio

cd /home/aidlux/mobileclip2-s3/model_farm_mobileclip2_s3_qcs8550_qnn2.36_fp16_aidlite

# --imgs: 图片集输入
# --invoke_nums: 循环次数
python3 python/run_test.py  --imgs_path python/imgs  --text "a photo of cat"  --invoke_nums 10

可以在命令行看到模型推理耗时 (单位 ms)以及检测结果:

plain
 model load success!
====================================
Text model invoke time:
 --mean_invoke_time is 5.9433698654174805 
 --max_invoke_time is 6.332874298095703 
 --min_invoke_time is 5.860805511474609 
 --var_invoketime is 0.020272773895158025
====================================
====================================
Image model invoke time:
 --mean_invoke_time is 10.306566953659058 
 --max_invoke_time is 10.692834854125977 
 --min_invoke_time is 10.177850723266602 
 --var_invoketime is 0.031342316297866546
====================================
Input text is : a photo of cat
Image similar is :
cat_1                     87.1933%
cat_2                     5.6707%
cat_dog_1                 5.9176%
cat_dog_2                 1.2054%
chicken                   0.0000%
horse                     0.0000%
monkey                    0.0129%
sport3                    0.0000%

根据输出可以发现 cat_1.png 这张图片与 a photo of cat 相似度最高

寻找两只猫的照片

bash
cd /home/aidlux/mobileclip2-s3/model_farm_mobileclip2_s3_qcs8550_qnn2.36_fp16_aidlite

# --imgs: 图片集输入
# --invoke_nums: 循环次数
python3 python/run_test.py  --imgs_path python/imgs  --text "a photo of two cats"  --invoke_nums 10

可以在命令行看到模型推理耗时 (单位 ms)以及检测结果:

plain
====================================
Text model invoke time:
 --mean_invoke_time is 5.883049964904785 
 --max_invoke_time is 6.177663803100586 
 --min_invoke_time is 5.804538726806641 
 --var_invoketime is 0.01604852343461971
====================================
====================================
Image model invoke time:
 --mean_invoke_time is 10.379016399383545 
 --max_invoke_time is 10.837554931640625 
 --min_invoke_time is 10.234355926513672 
 --var_invoketime is 0.03658466241063252
====================================
Input text is : a photo of two cats
Image similar is :
cat_1                     0.0491%
cat_2                     90.2158%
cat_dog_1                 3.9922%
cat_dog_2                 5.7429%
chicken                   0.0000%
horse                     0.0000%
monkey                    0.0000%
sport3                    0.0000%

根据输出可以发现 cat_2.png 这张图片与 a photo of two cats 相似度最高