Android 离线肤质分析

Android 离线肤质分析 Demo

这是一套完全离线运行的 Android 肤质分析 MVP Demo。

项目地址:肤质分析https://gitcode.com/mushike/skin

功能

  • 支持选择相册照片分析
  • 支持拍照体验分析
  • 全流程本地运行,不上传服务器
  • 使用 ML Kit bundled Face Detection 检测人脸
  • 支持 MediaPipe Image Segmenter 皮肤区域分割
  • 支持 BiSeNet Face Parsing ONNX 人脸解析
  • 支持不使用模型的规则区域兜底模式
  • 支持 TFLite 痘痘检测模型
  • 使用 Kotlin 本地图像算法分析肤质
  • 输出综合评分、分项结果、护肤建议和分析区域示意图

当前分析项目

  • 痘痘/红斑
  • 色斑/色沉
  • 泛红
  • 黑眼圈/眼周暗沉
  • 油光倾向
  • 毛孔/纹理粗糙度
  • 细纹趋势
  • 综合评分

技术方案

人脸检测

使用 ML Kit bundled Face Detection 检测图片中的主要人脸,并裁剪人脸区域用于后续分析。

皮肤区域分割

当前支持三种模式:

kotlin 复制代码
SkinSegmentBackend.MEDIAPIPE
SkinSegmentBackend.BISENET_ONNX
SkinSegmentBackend.NONE

说明:

  • MEDIAPIPE:使用 MediaPipe Image Segmenter,速度较快,适合快速演示。
  • BISENET_ONNX:使用 BiSeNet Face Parsing ONNX,分割更细,可更好排除嘴唇、眉毛、眼睛、头发等非皮肤区域。
  • NONE:不使用分割模型,回退到规则区域。

痘痘检测

当前支持 TFLite 痘痘检测模型:

text 复制代码
acne_float32.tflite

如果痘痘模型加载失败或推理失败,会自动回退到颜色规则版红斑估计。

图像规则分析

除痘痘模型外,其他肤质指标主要基于本地图像规则估计:

  • 色斑/色沉:基于 Lab 亮度暗斑估计
  • 泛红:基于 Lab a* 通道和 HSV 饱和度估计
  • 油光:基于 T 区高亮低饱和区域估计
  • 纹理:基于鼻子/脸颊高频纹理估计
  • 细纹:基于额头/眼周边缘纹理估计
  • 黑眼圈:基于眼下区域与脸颊亮度差估计

模型文件

根据实际使用的功能,需要将模型放到:

text 复制代码
app/src/main/assets/

可能用到的模型文件:

text 复制代码
selfie_multiclass_256x256.tflite
bisenet_face_parsing.onnx
acne_float32.tflite

说明:

  • selfie_multiclass_256x256.tflite:MediaPipe 皮肤/人像分割模型
  • bisenet_face_parsing.onnx:BiSeNet 人脸解析模型
  • acne_float32.tflite:TFLite 痘痘检测模型

运行

  1. 用 Android Studio 打开本工程
  2. 等待 Gradle 同步完成
  3. 确认所需模型文件已放入 app/src/main/assets/
  4. 连接安卓手机
  5. 点击 Run 运行

拍照说明

当前拍照模式使用系统相机返回的缩略图,清晰度可能低于相册高清照片。

因此,拍照模式可能影响以下结果:

  • 肤色分布
  • 色斑判断
  • 泛红判断
  • 油光判断
  • 细纹和纹理判断

如果需要更准确的分析结果,建议优先选择相册中的高清照片。

评分说明

综合评分从 100 分开始,根据各分项问题程度扣分。

当前权重优先级由高到低为:

  1. 痘痘/红斑
  2. 色斑/色沉
  3. 毛孔/纹理粗糙度
  4. 泛红
  5. 细纹趋势
  6. 黑眼圈/眼周暗沉
  7. 油光倾向

评分等级:

text 复制代码
90 - 100:肤质较好
75 - 89 :肤质良好
60 - 74 :肤质一般
60 以下:问题较明显

主要代码文件

MainActivity.kt

负责页面展示、选择照片、拍照入口和结果显示。

OfflineSkinAnalyzer.kt

负责整体分析流程调度,包括人脸检测、人脸裁剪、皮肤分割、痘痘检测和肤质分析。

SkinImageAnalyzer.kt

负责具体肤质指标分析、综合评分、建议生成和分析区域叠加图绘制。

MediaPipeSkinSegmenter.kt

MediaPipe 皮肤区域分割后端。

BiseNetFaceParserOnnx.kt

BiSeNet ONNX 人脸解析后端。

AcneTfliteDetector.kt

TFLite 痘痘检测后端。

当前优点

  • 完全离线运行
  • 不上传服务器
  • 不依赖 Python 运行环境
  • 支持皮肤分割模型和规则兜底
  • 支持 TFLite 痘痘检测
  • 支持分析区域可视化
  • 工程结构简单,适合 Android 端 Demo 展示

当前限制

本项目仍属于 Demo / MVP 级肤质分析工具,不是医学诊断系统。

当前限制包括:

  • 普通照片受光照、角度、美颜、化妆影响较大
  • 拍照模式当前使用缩略图,清晰度有限
  • 色斑、泛红、油光、纹理、细纹仍主要依赖图像规则估计
  • 不同手机相机的色彩风格会影响分析结果
  • 深色皮肤、强光、阴影、滤镜、美颜场景下结果可能偏差
  • 皮肤分割效果会影响有效分析区域
  • 痘痘检测效果取决于 acne_float32.tflite 模型训练质量

后续优化方向

  1. 将拍照模式升级为高清拍照输入
  2. 继续优化 BiSeNet / MediaPipe 的有效皮肤区域
  3. 基于真实拍摄数据微调色斑、泛红、油光、纹理和细纹阈值
  4. 优化痘痘检测模型的训练数据和置信度阈值
  5. 增加更细粒度的毛孔、细纹、色斑检测模型
  6. 增加不同肤色、不同光照场景下的适配

免责声明

本应用仅基于普通照片进行可见肤质分析,结果仅供护肤参考,不构成医学诊断或医疗建议。

如存在严重皮肤问题,请咨询专业皮肤科医生。

相关推荐
Agent产品评测局2 小时前
制造业模具管理AI系统,主流产品能力对比详解:2026年智能制造选型深度洞察
人工智能·ai·chatgpt·制造
搬砖的小码农_Sky4 小时前
AI Agent:WebMCP介绍和具体实现方案
人工智能·ai·人机交互·agi
AI绘画哇哒哒7 小时前
Agent三种思考模式深度解析:CoT/ReAct/Plan-and-Execute,小白程序员必看,助你轻松掌握大模型精髓(收藏版)
人工智能·学习·ai·程序员·大模型·产品经理·转行
小江的记录本7 小时前
【Java基础】核心关键字:final、static、volatile、synchronized、transient(附《思维导图》+《面试高频考点清单》)
java·前端·数据结构·后端·ai·面试·ai编程
me8328 小时前
【AI】踩坑LangChain4j集成千问模型:版本适配问题完整解决历程
java·spring·阿里云·ai
weixin_449290018 小时前
Dify 企业数字安全一键配置模板
ai
TheRouter8 小时前
OpenClaw 上下文瘦身:3 个实验
开发语言·python·ai
码农阿强9 小时前
MiniMax speech-2.8-hd 技术详解与API接入实战
人工智能·ai·aigc
一切皆是因缘际会9 小时前
依托记忆结构心智体系,AI 自主意识进化路径
大数据·人工智能·安全·搜索引擎·ai
OpenBayes9 小时前
外语、方言、少数民族语言全覆盖:Hy-MT1.5 支持 1056 个翻译方向;MIT 联合发布 MathNet:涵盖 2.7 万道奥数真题的多模态数学推理基准
人工智能·深度学习·ai·agent