1. MobileSAM与全志开发板部署概述
在边缘计算和嵌入式AI领域,将先进的视觉模型部署到资源受限的设备上一直是个挑战。MobileSAM作为SAM(Segment Anything Model)的轻量级版本,在全志T736开发板上的部署,为移动端和嵌入式设备上的实时图像分割任务提供了新的可能性。
全志T736是一款面向AI应用的嵌入式处理器,搭载专用NPU加速单元,典型算力可达3.6TOPS。而MobileSAM通过模型架构优化,在保持较好分割质量的同时,将参数量减少到原版SAM的1/60,特别适合在T736这类嵌入式平台上运行。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与工具链配置
2.1 开发环境搭建
部署过程采用Docker容器化方案,确保环境一致性。推荐使用以下基础镜像:
code复制docker pull ubuntu:20.04
关键依赖包括:
- AWNPU SDK(全志NPU开发工具包)
- ONNX Runtime 1.10+
- OpenCV 4.5+(带GTK支持)
- CMake 3.18+
提示:全志提供的Docker镜像已包含大部分依赖,可从官方渠道获取。若自行构建,需特别注意交叉编译工具链的版本匹配问题。
2.2 模型准备与优化
原始MobileSAM模型(mobile_sam.pt)需要经过以下处理流程:
- ONNX导出:将PyTorch模型转换为ONNX格式
python复制python export_onnx_models.py \
--checkpoint ./mobile_sam.pt \
--output ./decoder.onnx \
--model-type vit_t \
--fixed-image-size 448,448
- 模型简化:使用onnx-simplifier优化计算图
bash复制python -m onnxsim decoder.onnx decoder_sim.onnx \
--overwrite-input-shape point_coords:1,2,2 point_labels:1,2
- 输入输出调整:使用onnx-modifier工具移除动态尺寸相关节点,这对NPU部署至关重要,因为:
- 静态形状允许编译器进行更激进的内存优化
- 消除动态分支可提升指令流水线效率
- 固定张量形状便于内存池预分配
3. 模型转换与量化
3.1 全志NPU模型转换流程
全志NPU使用专有的Pegasus工具链进行模型转换:
bash复制# Encoder模型转换(FP16精度)
./pegasus_import.sh mobilesam_encoder
./pegasus_quantize.sh mobilesam_encoder int16 10
./pegasus_export_ovx_nbg.sh mobilesam_encoder int16 t736
# Deco
