端侧图片理解模型调研

文档状态: 调研报告(2026-06-21) 范围: 3B 参数以内、可在 Android 端侧运行的图片理解和人脸聚类模型 维护者: [RD] 全栈工程师


1. 背景

PicMe 当前使用 Google ML Kit Image Labeling 进行图片标注(ADR-007 Phase 1),覆盖 400+ 常见物体/场景标签。但 ML Kit 标签粒度有限,无法满足以下需求:

本报告调研 3B 以内的开源模型,评估其在 PicMe 中的适用性。


2. 人脸聚类

2.1 现状

PicMe 已有 MediaPipe Face Landmarker(468→106 点)、ML Kit Face Detection,Room DB hasFace/faceId 字段已预留,但聚类逻辑未实现。

2.2 方案对比

方案 模型大小 推理速度 聚类精度 新增依赖 实现难度
Landmark 几何特征 + DBSCAN 0 <1ms 低(~100行)
MobileFaceNet TFLite ~4MB ~20ms/张 TFLite Runtime
MediaPipe Face Embedder ~6MB ~15ms/张 MediaPipe Tasks 中(已有生态)

2.3 方案一:Landmark 几何特征 + DBSCAN(Phase 1 推荐)

利用已有的 106 点 landmark 提取几何特征,无需额外模型。

ML Kit / MediaPipe 人脸检测 → 106 点 Landmark
    → 几何特征向量(眼距、鼻嘴距、脸宽、下颚轮廓)
    → DBSCAN 聚类(eps 基于特征空间距离)
    → 分配 faceId → 写入 Room DB

特征向量示例:

data class FaceFeature(
    val eyeDistance: Float,       // 左右眼中心距离 / 脸宽(归一化)
    val noseToMouthRatio: Float,  // 鼻尖到嘴中心距离 / 脸高
    val faceWidthToHeight: Float, // 脸宽高比
    val jawShapeFeature: FloatArray, // 下颚 17 点 PCA 简化
    val leftEyeAspectRatio: Float,   // 左眼长宽比
    val rightEyeAspectRatio: Float   // 右眼长宽比
)
维度 评估
优势 零额外模型,复用已有 106 点检测结果,<1ms 提取
局限 同人不同角度/表情可能分群;仅人脸可见时有效
适用 快速验证人脸聚类效果,作为 baseline

2.4 方案二:MobileFaceNet(Phase 2 精度提升)

MobileFaceNet 是轻量级人脸识别模型,输出 128/256/512 维 embedding 向量。

维度 评估
模型大小 ~4MB(TFLite 量化版)
输出 128/256/512 维 embedding
推理速度 ~20ms/张(ARM CPU)
框架 TFLite / NCNN / MNN
集成 需写适配器(遵循 beauty-engine 已有的人脸检测适配模式)

与 PicMe 现有架构的契合度: - beauty-engine 已有 MNN/NCNN/MediaPipe 多引擎适配器模式 - 可新增 FaceEmbeddingAdapter 接口,类似已有 FaceLandmarkAdapter

2.5 方案三:MediaPipe Face Embedder

Google 官方 MediaPipe Face Embedder,输出 192 维 embedding。

维度 评估
模型大小 ~6MB(TFLite)
输出 192 维 embedding
优势 与已有 MediaPipe Face Landmarker 同一生态
劣势 需额外 task 文件下载

3. 图片内容理解(3B 以内 VL 模型)

3.1 模型对比矩阵

模型 参数 量化后大小 中文能力 推理速度 推理框架
SmolVLM 500M 0.5B ~600MB ⚠️ 一般 ~7-15s llama.cpp/GGUF
SmolVLM 2.2B 2.2B ~1GB ⚠️ 一般 ~12-30s llama.cpp/GGUF
Qwen3-VL 2B 2B ~1GB(INT4) ⭐⭐⭐⭐⭐ ~15s MNN/llama.cpp
MiniCPM-V 2.0 2.8B ~1.5GB(INT4) ⭐⭐⭐⭐ ~20s llama.cpp/MLC
MobileVLM 3B 3B ~1.5GB(INT4) ❌ 未知 ~20s llama.cpp
Chinese-CLIP RN50 0.1B ~300MB(ONNX) ⭐⭐⭐⭐ ~50ms ONNX Runtime
MobileCLIP-S0 0.05B ~200MB ⚠️ 一般 ~5ms ONNX Runtime
LightCap 0.03B ~150MB ⚠️ 一般 CPU 实时 TFLite

3.2 模型详解

SmolVLM 系列(HuggingFace)

专为移动端设计的小型视觉语言模型。已有开源 App (Off Grid) 在 Android 上成功运行。

能力: 图像描述、物体识别、场景理解、文字阅读、视觉问答

输入: 图片 + "描述这张照片的内容"
输出: "这是一张在海边拍摄的照片,画面中有两个人站在沙滩上,
      远处可以看到日落。照片左下角有日期水印 2025-08-15。"

PicMe 适用: 批量离线标注(后台处理,用户不感知延迟)

Qwen3-VL 2B(阿里,🔥 中文场景首选)

阿里通义千问团队出品,原生中文视觉语言模型。

维度 评估
中文 OCR ⭐⭐⭐⭐⭐ 截图/文档/手写文字
中文场景描述 ⭐⭐⭐⭐⭐ 自然流畅的中文输出
物体定位 支持 bounding box 输出
推理框架 MNN(已有)/ llama.cpp

PicMe 适用: 中文截图、带中文标签的图片、中文自然语言描述生成。

MiniCPM-V 2.0(面壁智能 + 清华)

2.8B 参数,端侧 VL 模型中场景文字识别能力最强者(匹配 Gemini Pro)。

维度 评估
场景文字 ⭐⭐⭐⭐⭐
图像描述 ⭐⭐⭐⭐
推理框架 llama.cpp / MLC-LLM

Chinese-CLIP(OFA-Sys)

中文 CLIP 模型,适合图像-文本跨模态匹配。

核心能力: 将图片和文本映射到同一向量空间,通过余弦相似度比较。

图片 → CLIP Image Encoder → 512维 embedding
查询 "猫" → CLIP Text Encoder → 512维 embedding
余弦相似度 > 阈值 → 匹配

适用场景: 无法用标签覆盖的语义查询(“温暖的照片”“拥挤的街道”“安静的角落”)

MobileCLIP-S0

CLIP 的极致轻量版(50M),适合快速标注。

维度 评估
推理速度 ~5ms/张(可实时)
标签覆盖 对比 ML Kit 多 ~10x 标签
中文 需 Chinese-CLIP 替代

LightCap

CPU 实时图像标注模型,30M 参数。

维度 评估
推理速度 CPU 实时(<50ms)
输出 自然语言描述
框架 TFLite

4. VL 模型 vs CLIP 类模型

两类模型能力互补,适用场景不同:

维度 VL 模型(SmolVLM/Qwen3-VL) CLIP 类(Chinese-CLIP/MobileCLIP)
输出 自然语言描述、问答、物体定位 图像+文本 embedding 向量
推理速度 7-30s/张(慢) 5-50ms/张(快)
使用方式 离线批量处理 在线实时搜索
适用 图片标注、内容理解、描述生成 语义搜索、相似图片查找
模型大小 600MB-1.5GB 150-300MB
中文 Qwen3-VL 最强 Chinese-CLIP 较强

共存策略: VL 模型后台批量生成描述和标签存 DB,CLIP 模型在线处理语义搜索请求。


5. 推理框架选择

PicMe 已有的推理框架:

框架 当前用途 VL 模型支持
MNN LLM (Qwen3.5-2B) + 人脸检测备选 可支持 Qwen3-VL
MediaPipe 人脸 Landmark(主力) Face Embedder
ONNX Runtime 语音 ASR/KWS(Sherpa-ONNX) Chinese-CLIP、MobileCLIP
TFLite 未直接使用(通过 ML Kit) MobileFaceNet、LightCap
NCNN 人脸检测备选 部分模型支持

推荐: - VL 模型:MNNllama.cpp(已有 MNN LLM 经验) - CLIP 模型:ONNX Runtime(已有 Sherpa-ONNX 经验) - 人脸 Embedding:TFLiteMediaPipe(已有 MediaPipe 生态)


6. 建议路线

Phase 1(当前,已实施):
  ├── 图片标注:ML Kit Image Labeling(400+ 标签,端侧免费)
  └── 搜索引擎:QueryParser + LLM 语义解析(ADR-007)

Phase 2(人脸聚类,待实施):
  ├── 方案一:Landmark 几何特征 + DBSCAN(零成本验证,~100行代码)
  └── 如精度不够 → 方案二:MobileFaceNet TFLite(~4MB)

Phase 3(图片内容理解升级,可选):
  ├── 中文场景首选:Qwen3-VL 2B + MNN(复用已有 MNN LLM 框架)
  ├── 快速标注:LightCap / MobileCLIP-S0(<10ms/张)
  └── 语义搜索:Chinese-CLIP + ONNX Runtime(复用已有 Sherpa-ONNX 框架)

Phase 4(远期):
  └── SmolVLM / MiniCPM-V:端到端图片理解和问答

7. 参考