AI 测肤 API 是如何工作的:从图像输入到结构化肌肤分析结果

简介: 玩美移动AI测肤API采用异步任务机制,支持SD/HD双模式分析。需先上传合规图片(短边≥480/1080px),再通过dst_actions指定检测项(如皱纹、毛孔等)。返回ui_score(展示用)与raw_score(原始值)及Detection Mask图像,支持区域级分析结果,适用于灵活构建测肤报告。

从接口设计来看,AI Skin Analysis 并不是一个“上传图片,然后返回一个肤质分数”的简单服务。

一次完整的肌肤分析通常包含几个步骤:准备输入图片、上传文件、创建分析任务、指定需要检测的肌肤问题、查询任务状态,最后读取分数和对应的图像结果。

玩美移动的 AI Skin Analysis API 采用异步任务机制。图片上传完成后,客户端创建 skin-analysis 任务,服务端返回 task_id。应用再通过这个 ID 查询任务状态,直到任务完成。

这种设计很常见于图像 AI 服务,因为推理时间不适合直接绑定在一次同步 HTTP 请求中。

输入图片有明确的尺寸要求

AI 测肤对输入图片的要求比普通人脸检测更高。

原因很直接:毛孔、细纹、纹理等特征本身就属于细节信息。如果输入图像分辨率不足,后续分析的有效信息也会减少。

根据 AI Skin Analysis 文档:

  • SD Skin Analysis 的图片短边至少为 480 px
  • HD Skin Analysis 的图片短边至少为 1080 px
  • 图片最长边不超过 4096 px

因此,在真正调用分析接口之前,应用通常需要先完成图片尺寸检查和预处理。

图片可以先通过 File API 上传,再使用返回的 file_id 创建分析任务。

dst_actions 决定这次任务分析什么

创建 Skin Analysis Task 时,一个比较关键的字段是 dst_actions。

它不是一个展示参数,而是直接决定这次 AI 任务需要运行哪些肌肤分析项目。

文档示例中使用的是:

"dst_actions": ["wrinkle", "pore", "texture", "acne"]

这表示本次任务会分析皱纹、毛孔、纹理和痘痘。

完整的任务请求示例中,可以看到这些参数是如何组合在一起的:

curl --request POST \ --url https://yce-api-01.makeupar.com/s2s/v2.0/task/skin-analysis \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "src_file_id": "SaGaqpDgKwFrVBgMpQMA3HY0LeqdT9/13W5TOD8/u/FfjK3xgCQ+hRt9MJXBFaud", "dst_actions": ["hd_wrinklewrinkle", "hd_porepore", "hd_texturetexture", "hd_acneacne"], "miniserver_args": { "enable_mask_overlay": true, "enable_dark_background_hd_pore": true, "color_dark_background_hd_pore": "3D3D3D", "opacity_dark_background_hd_pore": 0.4 // Additional parameters omitted for brevity }, "format": "json" }'

image.gif

这里真正需要关注的字段不多。

src_file_id 指向已经上传的源图片。

dst_actions 指定检测项目。

miniserver_args 用于控制部分输出行为,例如是否生成 Mask Overlay。

format 用于指定返回结果格式。

从接口设计上看,Skin Analysis 并不是一个固定的“全量检测”。开发者可以根据业务需要选择具体的 Skin Concern。

返回结果里为什么有两个 Score

AI Skin Analysis 的返回结果中会同时出现 ui_score 和 raw_score。

{ "type": "texture", "ui_score": 68, "raw_score": 57.33, "mask_urls": [ "https://yce-us.s3-accelerate.amazonaws.com/...texture_output.jpg" ]}

image.gif

例如:

这里有几个字段值得区分。

type 表示当前结果对应的分析项目,例如 texture。

raw_score 是分析产生的原始数值。

ui_score 是用于用户界面展示的分数。

mask_urls 则指向对应的检测结果图像。

在实际开发中,不建议把 raw_score 和 ui_score 当成同一个概念使用。

如果只是做前端测肤报告,通常会更关注 ui_score。如果需要保存更接近原始分析结果的数据,则可以单独处理 raw_score。

Detection Mask 解决的是“检测区域在哪里”

AI 测肤如果只返回一个数字,其实很难说明模型到底分析了图像中的哪个位置。

这也是 Detection Mask 存在的原因。

对于纹理、毛孔、痘痘等分析项目,API 可以返回对应的 Mask 图像。前端可以把 Mask 和原始图片叠加,用来显示检测区域。

在任务参数中可以看到:

"enable_mask_overlay": true

这个参数与 Mask Overlay 的生成有关。

因此,一项 Skin Concern 的结果通常可以包含两类信息:

数值结果,用来描述分析程度;

Mask 结果,用来描述对应区域。

这两部分结合起来,才比较接近一个完整的 AI 肌肤分析结果。

SD 和 HD 不能混用

AI Skin Analysis 文档对 SD 和 HD Skin Concern 做了明确区分。

如果一个请求同时包含 SD 和 HD 的 dst_actions,接口会直接返回参数错误:

{ "status": 400, "error": "cannot mix HD and SD dst_actions", "error_code": "InvalidParameters"}

因此,在应用侧生成请求参数时,需要提前确定本次任务属于 SD 还是 HD,而不是在一个任务中把两套分析项目混在一起。

这类校验最好放在服务端完成。

如果直接允许前端拼接 dst_actions,很容易产生无效组合。更稳妥的方式是由后端维护可用的分析项目列表,再根据业务场景生成请求。

HD 分析不仅仅是分辨率更高

HD Skin Analysis 和普通 SD 分析的区别,并不只是输入图片尺寸更大。

部分 HD Skin Concern 还包含更细的区域结果。

例如 HD 毛孔分析可以进一步区分:

  • forehead
  • nose
  • cheek
  • whole

HD wrinkle 也可以按不同面部位置返回分析结果,例如 forehead、glabellar、crowfeet、periocular、nasolabial 等区域。

对于前端来说,这意味着结果展示不一定只能是“全脸毛孔 82 分”这种单值结构。

如果接口返回了区域级结果,就可以进一步做局部展示,例如分别显示鼻部和脸颊的毛孔情况。

文件上传是一个容易被忽略的环节

从实际接入来看,File API 是比较容易出问题的一步。

调用 File API 获取上传 URL,并不代表图片已经上传成功。

应用还需要真正把文件 PUT 到返回的 URL,然后再使用对应的 file_id 创建 Skin Analysis Task。

如果文件没有上传完成就开始创建 AI 任务,后续请求可能失败。

因此,一个相对可靠的服务端流程通常是:

  1. 初始化文件上传
  1. 获取上传 URL 和 file_id
  1. 完成实际文件上传
  1. 确认上传成功
  1. 创建 Skin Analysis Task
  1. 保存 task_id
  1. 查询任务状态
  1. 解析分析结果

这部分虽然和 AI 模型本身无关,但在生产环境里往往比模型调用更容易产生集成问题。

从接口角度理解 AI 测肤

如果只看 API,AI Skin Analysis 最终做的事情其实很明确。

输入是一张符合要求的人脸图片。

请求参数决定需要分析哪些 Skin Concern。

AI Task 完成之后,返回每个分析项目对应的结构化结果,例如:

type ui_score raw_score mask_urls HD 模式下,部分结果还可以进一步拆分到具体面部区域。

所以从工程角度看,AI 测肤更接近一个“面部图像分析服务”,而不是一个固定格式的测肤报告生成器。

报告长什么样、显示哪些分数、是否展示 Mask、如何组织 HD 区域结果,这些都属于应用层的实现。API 本身提供的是底层分析结果和对应的数据结构。

相关文章
|
6天前
|
人工智能 API 内存技术
刚刚 DeepSeek V4.1 Flash 开启内测,1 分钟教你用上!
刚刚 DeepSeek 内测群发布了 DeepSeek V4.1 Flash 中间版本内测的消息,这次的模型采用了新的结构,原生支持多模态、能力更强、速度更快、且成本更低。
1749 9
|
10天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1637 2
|
11天前
|
网络协议 Linux iOS开发
【2026实测】Wireshark下载+安装+汉化+使用教程(图文版,巨详细)
Wireshark 是一款免费开源的网络协议分析工具,可实时捕获、解析并可视化数据包,助你诊断网络故障、分析通信协议(如HTTP、DNS、TCP等)。支持Windows/macOS/Linux,含中文界面,新手入门便捷。(239字)
|
7天前
|
SQL 人工智能 前端开发
QoderWake 1.0 正式发布:从桌面里的 Agent,到工作现场的数字员工
QoderWake v1.0正式发布:企业级数字员工团队平台。支持“一句话建岗”,预置10类特训岗位;Waker常驻钉钉/飞书群,@即响应、自动协作、跨任务记忆;具备定时/事件/API多触发方式与统一任务看板;已沉淀27.6万条记忆、12.3万项技能,助力组织实现人机协同增效。
770 2
|
5天前
|
缓存 测试技术 API
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)
DeepSeek V4.1 Flash 内测不用申请,base_url 不变、改个模型名就能调,9/10 到期。本文讲清接入、计费限流与多模态注意点。
765 0
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)
|
19天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
3934 5
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
10天前
|
人工智能 自然语言处理 安全
阿里云AI数智鉴密:AI 生成内容如何拿到一张"防篡改的身份证"
隐形水印 + C2PA签名:让AI生成内容“持证上岗”。
1150 0
|
12天前
|
缓存 数据可视化 开发工具
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式
DeepSeek Harness 的更新分两层:本体更新(npx 自动最新、npm update -g、源码 git pull)与插件更新(插件市场点更新、命令行覆盖安装)。本文按「准备 → 更新本体 → 更新插件 → 更新后检查」四步走,覆盖新手常见疑问。
1399 1
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式