SAM2 部署
介绍
Segment-Anything-Model-2 (简称 SAM 2) 是 Meta AI 发布的下一代视觉分割基础模型,支持对图像和视频中的任意物体进行实时交互式分割。相比先前版本,SAM 2 在视频分割上采用通用 Transformer 架构并集成流式内存机制,使其在少量交互提示下即能实现精确、持续的目标跟踪。
本章节将演示如何在边缘设备上完成 SAM2 部署、加载与推理流程。提供以下方式部署:
- AidLite Python API
在本案例中,模型推理运行在设备端 NPU 计算单元,通过代码调用相关接口接收用户输入并返回结果。
支持平台
| 平台 | 运行方式 |
|---|---|
| Rhino Pi-X1 | Ubuntu 22.04, AidLux |
准备工作
- Rhino Pi-X1 硬件
- Ubuntu 22.04 系统或 AidLux 系统
下载 SAM2-tiny-FP16 模型资源
bash
mms list sam2-tiny
#------------------------可以看到 sam2-tiny 模型------------------------
Model Precision Chipset Backend
----- --------- ------- -------
SAM2-tiny FP16 Qualcomm QCS8550 QNN2.36
# 下载 SAM2-tiny-FP16
mms get -m SAM2-tiny -p fp16 -c qcs8550 -b qnn2.36 -d /home/aidlux/sam2-tiny
cd /home/aidlux/sam2-tiny
# 解压
unzip sam2_qcs8550_qnn2.36_fp16_aidlite.zip💡注意
开发者也可以在 Model Farm 网页上搜索并下载
AidLite SDK 安装
开发者也可以参考模型文件夹中的 README.md 安装 SDK
- 确保 QNN 后端版本
≥ 2.36 - 确保
aidlite-sdk和aidlite-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 sdkQNN & 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 部署
运行 Python API 例子
bash
cd /home/aidlux/sam2-tiny/model_farm_sam2_qcs8550_qnn2.36_fp16_aidlite
# --imgs: 图片输入
# --point-coordinates: 坐标
# --invoke_nums: 循环次数
python3 python/run_test.py --imgs python/truck.jpg --point-coordinates "500,375;1100,600" --invoke_nums 10可以在命令行看到模型推理耗时 (单位 ms)以及分割结果:
plain
====================================
Encoder model invoke 10 times:
--mean_invoke_time is 216.16535186767578
--max_invoke_time is 221.62842750549316
--min_invoke_time is 214.51592445373535
--var_invoketime is 3.8429782512139354
====================================
[2026-02-10 15:26:06.024] [info] [license.cpp:520] the device is licensed, with license ID: aidf70cf68561ab0f1555c98a624584610b
PluginManager::load_plugin(): plugin(=aidlite_qnn236) has been loaded
w:1800, h:1200
====================================
Decoder model invoke 10 times:
--mean_invoke_time is 6.911730766296387
--max_invoke_time is 7.040739059448242
--min_invoke_time is 6.859779357910156
--var_invoketime is 0.0025213859089490143
====================================
Result images saved to 'python/mask_results.jpg'结果图片 mask_results.jpg 保存在路径 /home/aidlux/sam2-tiny/model_farm_sam2_qcs8550_qnn2.36_fp16_aidlite/python 下