# ai **Repository Path**: stud619/ai ## Basic Information - **Project Name**: ai - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-01 - **Last Updated**: 2026-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI面部皮肤分析系统 基于YOLOv8x-seg实例分割模型和BiSeNet语义分割的面部皮肤特征检测与评估系统。 ## 功能特性 - **多维度皮肤分析**: 检测痘痘、斑点、黑头、皱纹、毛孔、棕色斑等6类皮肤问题 - **实时可视化反馈**: 前端Canvas渲染,精确标注各类皮肤问题位置和范围 - **综合健康评估**: 肌肤年龄、粗糙度、弹性、水分、黑眼圈、敏感度、肤质类型等指标 - **跨平台部署**: 支持Windows、Linux、macOS ## 技术栈 | 层级 | 技术 | |------|------| | 后端框架 | Spring Boot 4.1.0 + Java 25 | | 推理引擎 | ONNX Runtime 1.18.0 | | 图像处理 | OpenCV 4.13.0 | | 深度学习模型 | YOLOv8x-seg(实例分割) | | 前端界面 | HTML/CSS/JavaScript + Canvas | | 训练框架 | Python 3.10+ + Ultralytics YOLO | ## 项目结构 ``` ai/ ├── src/main/java/com/stud/ai/ │ ├── AiApplication.java # 应用入口 │ ├── controller/ │ │ └── FaceAnalysisController.java # REST API控制器 │ ├── service/ │ │ └── FaceAnalyzer.java # AI推理引擎(核心) │ └── dto/ │ └── FaceAnalysisDTO.java # 数据传输对象 ├── src/main/resources/ │ ├── application.yml # 配置文件 │ ├── static/index.html # 前端界面 │ └── sql/sql.sql # 数据库表结构 ├── models/ │ └── yolov8x-seg-face.onnx # ONNX推理模型 ├── training/ │ ├── scripts/ # 训练脚本 │ ├── dataset/ # 数据集 │ └── config/ # 训练配置 └── pom.xml # Maven依赖管理 ``` ## 快速开始 ### 环境要求 - Java 25+ - Maven 3.6+ - 至少2GB RAM(推荐4GB以上) ### 启动步骤 1. **构建项目** ```bash mvn clean install ``` 2. **准备模型** ```bash # 将训练好的ONNX模型放入models/目录 # 文件名为: yolov8x-seg-face.onnx ``` 3. **启动应用** ```bash mvn spring-boot:run ``` 4. **访问界面** ``` http://localhost:8888 ``` ## API接口 ### 图像分析接口 **POST** `/faceAnalysis/analyze` | 参数 | 类型 | 必填 | 描述 | |------|------|------|------| | file | MultipartFile | 是 | 面部图像文件(JPEG/PNG) | **响应示例** ```json { "score": 85, "ageResult": 28, "pockmarkCount": 3, "pockmarkScore": 78, "spotCount": 1, "blackheadCount": 5, "wrinkleCount": 2, "poreCount": 8, "chloasmaCount": 0, "moistureResult": 75, "darkCircleScore": 68, "sensitiveScore": 85, "skinTypeScore": 78, "roughnessScore": 70, "elasticityScore": 88 } ``` ### 请求示例(curl) ```bash curl -X POST http://localhost:8888/faceAnalysis/analyze \ -H "Content-Type: multipart/form-data" \ -F "file=@/path/to/image.jpg" ``` ## 配置参数 主要配置项(application.yml): | 参数 | 默认值 | 说明 | |------|--------|------| | server.port | 8888 | 服务端口 | | ai.model.path | models/yolov8x-seg-face.onnx | 模型路径 | | ai.model.input-size | 640 | 输入图像尺寸 | | ai.model.confidence-threshold | 0.25 | 置信度阈值 | | ai.model.iou-threshold | 0.45 | NMS重叠阈值 | | ai.age.exponent | 1.6 | 年龄计算指数 | ## 模型训练 ### 环境准备 ```bash cd training pip install -r requirements.txt ``` ### 检测类别 | ID | 英文 | 中文 | 视觉特征 | |----|------|------|----------| | 0 | pockmark | 痘痘 | 小圆凸起,红/白色中心 | | 1 | spot | 斑点 | 扁平棕褐色色素沉着 | | 2 | blackhead | 黑头 | 极小黑点,密集于T区 | | 3 | wrinkle | 皱纹 | 线性纹路,长宽比>3:1 | | 4 | pore | 毛孔 | 微小圆孔,有深度感 | | 5 | chloasma | 棕色斑 | 大面积棕色,边界不规则 | ### 训练流程 1. **首次训练** ```bash cd scripts python train.py --epochs 200 --batch 8 --device 0 ``` 2. **验证效果** ```bash python validate.py ``` 3. **导出ONNX** ```bash python export_onnx.py ``` ## 性能指标 - **单次分析时间**: 2-5秒(CPU,640x640输入) - **内存占用**: 约500MB - **模型大小**: YOLOv8x-seg ONNX约140MB ## 故障排除 ### 模型加载失败 - 确认模型文件存在于 `models/yolov8x-seg-face.onnx` - 检查模型文件完整性(非16KB损坏文件) ### 推理性能问题 - 调整 `ai.model.input-size` 参数减小输入尺寸 - 检查系统内存和CPU使用情况 ### 前端显示异常 - 检查浏览器控制台错误信息 - 验证返回的数据格式 ## 核心算法 ### 图像预处理流程 1. OpenCV解码 → 等比缩放 → Letterbox填充 → RGB转换 → 归一化 → ONNX张量 ### 检测后处理流程 1. 按置信度排序 → 按类别分组 → NMS非极大值抑制 → 掩码生成 → 轮廓提取 → 指标计算 ### 年龄估算算法 基于加权综合评分,结合幂函数映射计算肌肤年龄。 ## 注意事项 - 训练必须使用GPU(推荐NVIDIA GPU + CUDA) - 推理可在CPU上运行 - 支持的图像格式:JPEG、PNG - 最大文件大小:128MB