从「80 分」到「99 分」:移动端主体抠图的双引擎演进——端侧 MediaPipe 大战后端 SAM

关键词: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 工程优化
  1. TFLite GPU Delegate
    CONV_2D 映射到 OpenGL ES 3.1 Compute Shader,推理时间从 28 ms → 11 ms。
  2. ROI Crop & Resize
    先跑一个人脸检测,crop 1.5× 人脸框再送分割,减少 60% 像素量。
  3. 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. 进一步优化方向

  1. 模型蒸馏
    用 SAM 生成伪标签 → 训练 MobileSAM(参数量 10 MB),IOU 0.93,推理 25 ms。
  2. 端侧 GPU 超分
    将 256×256 mask → 原图分辨率通过 ESRGAN-lite,边缘更锐。
  3. Prompt Cache
    用户连续拍摄同一商品时,Image Embedding 复用,延迟降至 12 ms。

6. 结论

  • 端侧 MediaPipe:在 2.6 MB 包体内做到 80-90% 场景可用,是离线兜底的最佳选择;
  • 后端 SAM:极致精度,但需 2.3 GB 模型 + 高端 GPU,适合在线增强;
  • 端云协同通过置信度、网络、算力三维度动态调度,实现「三档变速」,让用户体验从 80 分跃迁到 99 分。

7. 参考 & 开源实现


以我之思,借AI之力!