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. 增加不同肤色、不同光照场景下的适配

免责声明

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

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

相关推荐
wflynn25 分钟前
Genie 4新增原生音频,实时世界模型加入声音生成
ai·技术
xx z3 小时前
谷歌相机9.2下载(GCam 安卓通用版 安装与使用说明)
安卓·相机·软件
吴名氏.3 小时前
Java转AI Agent教程(第十二周)检索与切分
java·开发语言·人工智能·ai·ai agent
效率工作实验室4 小时前
企业级AI Agent平台评测:核心指标、能力对比与选型路径
ai·企业级ai·agent选型·agent平台评测·agent平台对比
韩曙亮6 小时前
【错误记录】安卓 adb 调试 5037 端口占用排查 ( adb 的三层结构 | 找出本机占用 5037 的进程 )
android·数据库·adb·安卓·错误记录
不吃紫菜16 小时前
LangGraph 体系实战(下):中断恢复、流式、子图与设计模式
ai
Dev_XH20 小时前
【成品设计】基于CH32H417的CH32H417AIOT家庭微电网
单片机·嵌入式硬件·物联网·ai
我才是银古1 天前
我把DSH当工位用了64天
ai·deepseek·deepseek-harness
菩提小狗1 天前
每日极客日报 · 2026年11月09日
ai·开源·极客日报·it热点·技术资讯
GISer_Jing1 天前
Agent相关岗位时收集的各类技术面试题
后端·ai·langchain