
关键词:MediaPipe、Segment Anything Model、端云协同、低延迟、大模型蒸馏、移动部署
前言
在真实的移动业务场景里,我们同时验证了 端侧 Google MediaPipe Selfie Segmentation 与 后端 Meta Segment Anything Model(SAM) 两套主体抠图 pipeline。结论是:
端侧 80 分体验,后端 99 分精度,但代价是 2.3 GB 模型 + 3-5 s 冷启动。
最终我们落地了一套「端云协同」架构------离线兜底、在线增强、弱网降级,兼顾覆盖率、延迟与包体。
1. 业务背景:为什么一定要抠图?
- 电商场景:商品详情页需要「一键换背景」;
- 社交场景:用户头像需要「人像描边」;
- UGC 场景:贴纸/滤镜必须「精准蒙版」。
核心诉求:毫秒级响应、离线可用、精度 ≥ 95%(IOU)。
2. 技术选型:两条路线的第一次碰撞
维度 | MediaPipe(端侧) | SAM(后端) |
---|---|---|
模型大小 | 2.6 MB(TFLite) | 2.3 GB(ViT-H) |
首次延迟 | 0 ms(已内置) | 3-5 s(含网络 + 加载) |
单次推理 | 8-15 ms(Pixel 7) | 80-120 ms(A100) |
精度(人像 IOU) | 0.82-0.88 | 0.95-0.98 |
离线可用 | ✅ | ❌ |
复杂背景 | 易误检 | 鲁棒 |
并发 | 本地无限制 | 受 GPU/配额限制 |
3. 深度解剖:两条路线的实现细节
3.1 端侧:MediaPipe Selfie Segmentation
3.1.1 模型结构
- Backbone: MobileNetV3-small + 轻量化 FPN;
- Head: 1×1 Conv → 双线性上采样 → Sigmoid;
- 输出: 256×256×1 mask,再上采样到原图。
3.1.2 工程优化
- TFLite GPU Delegate
将CONV_2D
映射到 OpenGL ES 3.1 Compute Shader,推理时间从 28 ms → 11 ms。 - ROI Crop & Resize
先跑一个人脸检测,crop 1.5× 人脸框再送分割,减少 60% 像素量。 - Post-processing
- Guided Filter(r = 8, ϵ = 1e-4)保边平滑;
- 形态学 Close(kernel = 5)填空洞。
3.1.3 实测数据
机型 | CPU(ms) | GPU(ms) | 峰值内存(MB) |
---|---|---|---|
Pixel 7 | 15 | 8 | 65 |
骁龙 778G | 22 | 12 | 78 |
3.2 后端:Segment Anything Model(ViT-H)
3.2.1 模型结构
- Image Encoder: ViT-H/16(632 M 参数)→ 64×64×256 embedding;
- Prompt Encoder: sparse(points/boxes)+ dense(mask);
- Mask Decoder: 2-layer transformer + dynamic conv → 256×256 mask。
3.2.2 部署方案
text
┌────────────┐ ┌────────────┐ ┌────────────┐
│ Client │────▶│ API GW │────▶│ Triton │
│ 640×640 │ │ REST/gRPC │ │ A100×4 │
└────────────┘ └────────────┘ └────────────┘
- TensorRT 8.5: FP16 + Layer fusion,单帧 95 ms → 38 ms;
- KV-Cache: 复用 Image Embedding,仅更新 prompt,二次请求 12 ms;
- Streaming: gRPC + gzip,压缩率 70%,弱网 RTT 400 ms 以内。
3.2.3 Prompt 策略
- 端侧先跑 MediaPipe → 生成 coarse mask → 取最大连通域 bbox → 作为 SAM box prompt;
- 边缘像素采样 8 个正负点,进一步召回漏检区域。
4. 端云协同:让「80 分」与「99 分」共存
4.1 三档策略
场景 | 策略 | 触发条件 | 延迟 | 成功率 |
---|---|---|---|---|
离线 | 端侧 MediaPipe | 无网 | < 30 ms | 82% |
弱网 | 端侧 + 压缩 SAM | 带宽 < 1 Mbps | < 500 ms | 95% |
在线 | 全量 SAM | 其余 | < 150 ms | 98% |
4.2 架构图
Offline Online Camera Frame Network? MediaPipe TFLite Upload to Cloud Local Mask SAM Inference Return Mask Cache & Blend
4.3 智能降级
- 置信度检测:端侧 mask 边缘梯度 > 阈值,认为"复杂背景",自动触发云端;
- 带宽探测:首次建连发送 64×64 缩略图,RTT > 300 ms 则回退端侧。
5. 进一步优化方向
- 模型蒸馏
用 SAM 生成伪标签 → 训练 MobileSAM(参数量 10 MB),IOU 0.93,推理 25 ms。 - 端侧 GPU 超分
将 256×256 mask → 原图分辨率通过 ESRGAN-lite,边缘更锐。 - Prompt Cache
用户连续拍摄同一商品时,Image Embedding 复用,延迟降至 12 ms。
6. 结论
- 端侧 MediaPipe:在 2.6 MB 包体内做到 80-90% 场景可用,是离线兜底的最佳选择;
- 后端 SAM:极致精度,但需 2.3 GB 模型 + 高端 GPU,适合在线增强;
- 端云协同通过置信度、网络、算力三维度动态调度,实现「三档变速」,让用户体验从 80 分跃迁到 99 分。
7. 参考 & 开源实现
以我之思,借AI之力!