- server.js: face_maps 改为白名单 5 图层完整 dataURL 透传(REPORT_MAPS,按魔数判 mime),marks 坐标随 result 原样透传;实测 return_marks 不支持毛孔/黑头等扩展标记 - skin-score.js: 按需求文档 V2.2 逐字审计修正 9 处(黑眼圈 dark_circle_severity、oil_desc/spot_flag §7.2 拼接、skintone 中文映射、轮廓预警档前缀、痘痘 heavy_note、50+精华全文、综合文案数值格式),契约引用 V2.0→V2.2 - app.js/index.html/css: 报告页 6 分类检测可视化(轮廓=正脸实拍、皱纹=正脸压暗+皱纹增强线、光滑=正脸+色斑/痣/痤疮标记、肤色=色沉图、敏感=红区图、痘痘=正脸+闭口/痤疮标记),数据驱动 VIZ_CAT 配置,优雅降级 - h5/test/: Excel 两组三视图真值回归 84/84(含案例2 AY 列扁平化数据重建 fixture) - h5/assets/mock/: 真实案例1 报告页 fixture(坐标与照片同比例缩放),?mock=1&screen=report 直渲 - e2e: Chrome 无头闭环 55/55(mock 全流程/直渲/真实 API 降级链路),截图存档 preview/e2e-20260926 - 自测: skin-score 83/83,fixture 冒烟 35/35
589 lines
12 KiB
JSON
589 lines
12 KiB
JSON
{
|
|
"request_id": "1790403132,0f99111b-571a-46f5-8540-8209c21b3755",
|
|
"time_used": 751,
|
|
"result": {
|
|
"skin_age": {
|
|
"value": 50
|
|
},
|
|
"eye_pouch": {
|
|
"value": 0,
|
|
"confidence": 0.9219674
|
|
},
|
|
"dark_circle": {
|
|
"value": 3,
|
|
"confidence": 1
|
|
},
|
|
"dark_circle_severity": {
|
|
"value": 0,
|
|
"confidence": 1
|
|
},
|
|
"forehead_wrinkle": {
|
|
"value": 1,
|
|
"confidence": 0.57314694
|
|
},
|
|
"crows_feet": {
|
|
"value": 0,
|
|
"confidence": 0.6948663
|
|
},
|
|
"eye_finelines": {
|
|
"value": 0,
|
|
"confidence": 0.5346259
|
|
},
|
|
"glabella_wrinkle": {
|
|
"value": 0,
|
|
"confidence": 0.65657294
|
|
},
|
|
"nasolabial_fold": {
|
|
"value": 1,
|
|
"confidence": 0.80668426
|
|
},
|
|
"nasolabial_fold_severity": {
|
|
"value": 0,
|
|
"confidence": 0.3970088
|
|
},
|
|
"skin_type": {
|
|
"skin_type": 3
|
|
},
|
|
"pores_forehead": {
|
|
"value": 0,
|
|
"confidence": 1
|
|
},
|
|
"pores_left_cheek": {
|
|
"value": 0,
|
|
"confidence": 1
|
|
},
|
|
"pores_right_cheek": {
|
|
"value": 0,
|
|
"confidence": 1
|
|
},
|
|
"pores_jaw": {
|
|
"value": 0,
|
|
"confidence": 1
|
|
},
|
|
"blackhead": {
|
|
"value": 0,
|
|
"confidence": 1
|
|
},
|
|
"skintone_ita": {
|
|
"ITA": 29.471874,
|
|
"skintone": 3
|
|
},
|
|
"skin_hue_ha": {
|
|
"HA": 57.833736,
|
|
"skin_hue": 0
|
|
},
|
|
"sensitivity": {
|
|
"sensitivity_area": 0,
|
|
"sensitivity_intensity": 0
|
|
},
|
|
"acne": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"mole": {
|
|
"confidence": [
|
|
0.3529357
|
|
],
|
|
"count": 1
|
|
},
|
|
"brown_spot": {
|
|
"count": 23
|
|
},
|
|
"closed_comedones": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"acne_mark": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"acne_nodule": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"acne_pustule": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"blackhead_count": 3,
|
|
"skintone": {
|
|
"value": 2,
|
|
"confidence": 0.7146322
|
|
},
|
|
"fine_line": {
|
|
"forehead_count": 1,
|
|
"left_undereye_count": 3,
|
|
"right_undereye_count": 3,
|
|
"left_cheek_count": 0,
|
|
"right_cheek_count": 0,
|
|
"left_crowsfeet_count": 1,
|
|
"right_crowsfeet_count": 0,
|
|
"glabella_count": 0
|
|
},
|
|
"wrinkle_count": {
|
|
"forehead_count": 1,
|
|
"left_undereye_count": 2,
|
|
"right_undereye_count": 3,
|
|
"left_mouth_count": 0,
|
|
"right_mouth_count": 0,
|
|
"left_nasolabial_count": 1,
|
|
"right_nasolabial_count": 1,
|
|
"glabella_count": 0,
|
|
"left_cheek_count": 0,
|
|
"right_cheek_count": 0,
|
|
"left_crowsfeet_count": 0,
|
|
"right_crowsfeet_count": 0
|
|
},
|
|
"oily_intensity": {
|
|
"t_zone": {
|
|
"area": 0.62,
|
|
"intensity": 2
|
|
},
|
|
"left_cheek": {
|
|
"area": 0.16,
|
|
"intensity": 1
|
|
},
|
|
"right_cheek": {
|
|
"area": 0.16,
|
|
"intensity": 1
|
|
},
|
|
"chin_area": {
|
|
"area": 0,
|
|
"intensity": 0
|
|
},
|
|
"full_face": {
|
|
"area": 0.49,
|
|
"intensity": 2
|
|
}
|
|
},
|
|
"enlarged_pore_count": {
|
|
"forehead_count": 81,
|
|
"left_cheek_count": 10,
|
|
"right_cheek_count": 9,
|
|
"chin_count": 0
|
|
},
|
|
"red_spot": {
|
|
"red_spot_area": 0.009,
|
|
"red_spot_intensity": 3
|
|
},
|
|
"right_dark_circle_rete": {
|
|
"value": 0
|
|
},
|
|
"left_dark_circle_rete": {
|
|
"value": 0
|
|
},
|
|
"right_dark_circle_pigment": {
|
|
"value": 0
|
|
},
|
|
"left_dark_circle_pigment": {
|
|
"value": 0
|
|
},
|
|
"right_dark_circle_structural": {
|
|
"value": 0
|
|
},
|
|
"left_dark_circle_structural": {
|
|
"value": 1
|
|
},
|
|
"dark_circle_mark": {
|
|
"left_eye_rect": {
|
|
"left": 102,
|
|
"top": 137,
|
|
"width": 68,
|
|
"height": 59
|
|
},
|
|
"right_eye_rect": {
|
|
"left": 214,
|
|
"top": 136,
|
|
"width": 67,
|
|
"height": 59
|
|
}
|
|
},
|
|
"water": {
|
|
"water_severity": 7,
|
|
"water_area": 0.068,
|
|
"water_forehead": {
|
|
"area": 0.111
|
|
},
|
|
"water_leftcheek": {
|
|
"area": 0.007
|
|
},
|
|
"water_rightcheek": {
|
|
"area": 0.007
|
|
}
|
|
},
|
|
"rough": {
|
|
"rough_severity": 16,
|
|
"rough_area": 0.28,
|
|
"rough_forehead": {
|
|
"area": 0.352
|
|
},
|
|
"rough_leftcheek": {
|
|
"area": 0.297
|
|
},
|
|
"rough_rightcheek": {
|
|
"area": 0.194
|
|
},
|
|
"rough_jaw": {
|
|
"area": 0.008
|
|
}
|
|
},
|
|
"left_mouth_wrinkle_severity": {
|
|
"value": 0
|
|
},
|
|
"right_mouth_wrinkle_severity": {
|
|
"value": 0
|
|
},
|
|
"forehead_wrinkle_severity": {
|
|
"value": 0
|
|
},
|
|
"left_crows_feet_severity": {
|
|
"value": 1
|
|
},
|
|
"right_crows_feet_severity": {
|
|
"value": 0
|
|
},
|
|
"left_eye_finelines_severity": {
|
|
"value": 0
|
|
},
|
|
"right_eye_finelines_severity": {
|
|
"value": 0
|
|
},
|
|
"glabella_wrinkle_severity": {
|
|
"value": 0
|
|
},
|
|
"left_nasolabial_fold_severity": {
|
|
"value": 2
|
|
},
|
|
"right_nasolabial_fold_severity": {
|
|
"value": 2
|
|
},
|
|
"left_cheek_wrinkle_severity": {
|
|
"value": 0
|
|
},
|
|
"right_cheek_wrinkle_severity": {
|
|
"value": 0
|
|
},
|
|
"forehead_wrinkle_info": {
|
|
"wrinkle_score": 5,
|
|
"wrinkle_severity_level": 0,
|
|
"wrinkle_norm_length": 0.5042114066911291,
|
|
"wrinkle_norm_depth": 0.2771696504688832,
|
|
"wrinkle_pixel_density": 0.026174111741415557,
|
|
"wrinkle_area_ratio": 0.04610318331503842,
|
|
"wrinkle_deep_ratio": 0.6260869565217392,
|
|
"wrinkle_deep_num": 1,
|
|
"wrinkle_shallow_num": 1
|
|
},
|
|
"left_eye_wrinkle_info": {
|
|
"wrinkle_score": 6,
|
|
"wrinkle_severity_level": 0,
|
|
"wrinkle_norm_length": 1.3718454398776636,
|
|
"wrinkle_norm_depth": 0.13984917043740575,
|
|
"wrinkle_pixel_density": 0.4036391390409279,
|
|
"wrinkle_area_ratio": 0.09728506787330317,
|
|
"wrinkle_deep_ratio": 0.35384615384615387,
|
|
"wrinkle_deep_num": 2,
|
|
"wrinkle_shallow_num": 3
|
|
},
|
|
"right_eye_wrinkle_info": {
|
|
"wrinkle_score": 8,
|
|
"wrinkle_severity_level": 0,
|
|
"wrinkle_norm_length": 1.7560485062524749,
|
|
"wrinkle_norm_depth": 0.16168202220647293,
|
|
"wrinkle_pixel_density": 0.4840998584804119,
|
|
"wrinkle_area_ratio": 0.08267090620031796,
|
|
"wrinkle_deep_ratio": 0.5783132530120482,
|
|
"wrinkle_deep_num": 3,
|
|
"wrinkle_shallow_num": 3
|
|
},
|
|
"left_crowsfeet_wrinkle_info": {
|
|
"wrinkle_score": 10,
|
|
"wrinkle_severity_level": 1,
|
|
"wrinkle_norm_length": 0.46431691811243997,
|
|
"wrinkle_norm_depth": 0.11122994652406416,
|
|
"wrinkle_pixel_density": 0.42449501019699687,
|
|
"wrinkle_area_ratio": 0.050966608084358524,
|
|
"wrinkle_deep_ratio": 0,
|
|
"wrinkle_deep_num": 0,
|
|
"wrinkle_shallow_num": 1
|
|
},
|
|
"right_crowsfeet_wrinkle_info": {
|
|
"wrinkle_score": 0,
|
|
"wrinkle_severity_level": 0,
|
|
"wrinkle_norm_length": 0,
|
|
"wrinkle_norm_depth": 0,
|
|
"wrinkle_pixel_density": 0,
|
|
"wrinkle_area_ratio": 0,
|
|
"wrinkle_deep_ratio": 0,
|
|
"wrinkle_deep_num": 0,
|
|
"wrinkle_shallow_num": 0
|
|
},
|
|
"glabella_wrinkle_info": {
|
|
"wrinkle_score": 0,
|
|
"wrinkle_severity_level": 0,
|
|
"wrinkle_norm_length": 0,
|
|
"wrinkle_norm_depth": 0,
|
|
"wrinkle_pixel_density": 0,
|
|
"wrinkle_area_ratio": 0,
|
|
"wrinkle_deep_ratio": 0,
|
|
"wrinkle_deep_num": 0,
|
|
"wrinkle_shallow_num": 0
|
|
},
|
|
"left_mouth_wrinkle_info": {
|
|
"wrinkle_score": 0,
|
|
"wrinkle_severity_level": 0,
|
|
"wrinkle_norm_length": 0,
|
|
"wrinkle_norm_depth": 0,
|
|
"wrinkle_pixel_density": 0,
|
|
"wrinkle_area_ratio": 0,
|
|
"wrinkle_deep_ratio": 0,
|
|
"wrinkle_deep_num": 0,
|
|
"wrinkle_shallow_num": 0
|
|
},
|
|
"right_mouth_wrinkle_info": {
|
|
"wrinkle_score": 0,
|
|
"wrinkle_severity_level": 0,
|
|
"wrinkle_norm_length": 0,
|
|
"wrinkle_norm_depth": 0,
|
|
"wrinkle_pixel_density": 0,
|
|
"wrinkle_area_ratio": 0,
|
|
"wrinkle_deep_ratio": 0,
|
|
"wrinkle_deep_num": 0,
|
|
"wrinkle_shallow_num": 0
|
|
},
|
|
"left_nasolabial_wrinkle_info": {
|
|
"wrinkle_score": 36,
|
|
"wrinkle_severity_level": 2,
|
|
"wrinkle_norm_length": 0.23676013879409538,
|
|
"wrinkle_norm_depth": 0.3566448801742919,
|
|
"wrinkle_pixel_density": 0.06861427532071777,
|
|
"wrinkle_area_ratio": 0.09025069637883008,
|
|
"wrinkle_deep_ratio": 1,
|
|
"wrinkle_deep_num": 1,
|
|
"wrinkle_shallow_num": 0
|
|
},
|
|
"right_nasolabial_wrinkle_info": {
|
|
"wrinkle_score": 50,
|
|
"wrinkle_severity_level": 2,
|
|
"wrinkle_norm_length": 0.22799124476468444,
|
|
"wrinkle_norm_depth": 0.49550173010380627,
|
|
"wrinkle_pixel_density": 0.07321052192999311,
|
|
"wrinkle_area_ratio": 0.056790123456790124,
|
|
"wrinkle_deep_ratio": 1,
|
|
"wrinkle_deep_num": 1,
|
|
"wrinkle_shallow_num": 0
|
|
},
|
|
"left_cheek_wrinkle_info": {
|
|
"wrinkle_score": 0,
|
|
"wrinkle_severity_level": 0,
|
|
"wrinkle_norm_length": 0,
|
|
"wrinkle_norm_depth": 0,
|
|
"wrinkle_pixel_density": 0,
|
|
"wrinkle_area_ratio": 0,
|
|
"wrinkle_deep_ratio": 0,
|
|
"wrinkle_deep_num": 0,
|
|
"wrinkle_shallow_num": 0
|
|
},
|
|
"right_cheek_wrinkle_info": {
|
|
"wrinkle_score": 0,
|
|
"wrinkle_severity_level": 0,
|
|
"wrinkle_norm_length": 0,
|
|
"wrinkle_norm_depth": 0,
|
|
"wrinkle_pixel_density": 0,
|
|
"wrinkle_area_ratio": 0,
|
|
"wrinkle_deep_ratio": 0,
|
|
"wrinkle_deep_num": 0,
|
|
"wrinkle_shallow_num": 0
|
|
},
|
|
"score_info": {
|
|
"dark_circle_score": 89,
|
|
"skin_type_score": 35,
|
|
"wrinkle_score": 90,
|
|
"oily_intensity_score": 38,
|
|
"pores_score": 97,
|
|
"blackhead_score": 99,
|
|
"acne_score": 100,
|
|
"sensitivity_score": 100,
|
|
"melanin_score": 100,
|
|
"water_score": 93,
|
|
"rough_score": 84,
|
|
"total_score": 88,
|
|
"pores_type_score": {
|
|
"pores_forehead_score": 92,
|
|
"pores_leftcheek_score": 98,
|
|
"pores_rightcheek_score": 98,
|
|
"pores_jaw_score": 100
|
|
},
|
|
"dark_circle_type_score": {
|
|
"left_dark_circle_score": 89,
|
|
"right_dark_circle_score": 100
|
|
},
|
|
"red_spot_score": 97
|
|
},
|
|
"left_eye_pouch_rect": {
|
|
"left": 102,
|
|
"top": 137,
|
|
"width": 68,
|
|
"height": 59
|
|
},
|
|
"right_eye_pouch_rect": {
|
|
"left": 214,
|
|
"top": 136,
|
|
"width": 67,
|
|
"height": 59
|
|
},
|
|
"melasma": {
|
|
"value": 1,
|
|
"confidence": 0.50907385
|
|
},
|
|
"freckle": {
|
|
"value": 0,
|
|
"confidence": 0.45538568
|
|
},
|
|
"image_quality": {
|
|
"face_rect": {
|
|
"left": 81,
|
|
"top": 29,
|
|
"width": 229,
|
|
"height": 320
|
|
},
|
|
"face_ratio": 0.42792428,
|
|
"hair_occlusion": 0.11386067,
|
|
"face_orientation": {
|
|
"yaw": -5.9413967,
|
|
"pitch": 6.6220365,
|
|
"roll": 2.846047
|
|
},
|
|
"glasses": 0
|
|
},
|
|
"sensitivity_type_v1": 1
|
|
},
|
|
"face_rectangle": {
|
|
"top": 108,
|
|
"left": 77,
|
|
"width": 238,
|
|
"height": 238
|
|
},
|
|
"side": {
|
|
"left": {
|
|
"left_jawline_info": {
|
|
"left_jawline_quality": 1,
|
|
"left_jawline_angle_level": 1,
|
|
"left_jawline_angle": 114.81
|
|
},
|
|
"left_acne_info": {
|
|
"score": 98,
|
|
"acne": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"acne_pustule": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"acne_nodule": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"acne_mark": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"closed_comedones": {
|
|
"confidence": [
|
|
0.33919
|
|
],
|
|
"count": 1
|
|
}
|
|
},
|
|
"left_melanin_info": {
|
|
"mole": {
|
|
"confidence": [
|
|
0.35832882
|
|
],
|
|
"count": 1
|
|
},
|
|
"brown_spot": {
|
|
"confidence": [
|
|
0.4598653,
|
|
0.40733993,
|
|
0.3679863,
|
|
0.35319555,
|
|
0.3008949
|
|
],
|
|
"count": 5
|
|
}
|
|
}
|
|
},
|
|
"right": {
|
|
"right_jawline_info": {
|
|
"right_jawline_quality": 1,
|
|
"right_jawline_angle_level": 1,
|
|
"right_jawline_angle": 103.95
|
|
},
|
|
"right_acne_info": {
|
|
"score": 100,
|
|
"acne": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"acne_pustule": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"acne_nodule": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"acne_mark": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
},
|
|
"closed_comedones": {
|
|
"rectangle": [],
|
|
"confidence": [],
|
|
"polygon": [],
|
|
"count": 0
|
|
}
|
|
},
|
|
"right_melanin_info": {
|
|
"mole": {
|
|
"confidence": [
|
|
0.43544632,
|
|
0.34137803
|
|
],
|
|
"count": 2
|
|
},
|
|
"brown_spot": {
|
|
"count": 8
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |