{ "schemaVersion": "vignette.avatar.v3.layers.v1", "persona": "P1", "canvas": { "w": 1005, "h": 1566 }, "base": { "front": "base/base-front.png", "faceless": "base/base-faceless.png", "facelessPadded": "base/base-faceless-padded.png", "facelessSize": [ 1005, 1565 ], "padNote": "base-faceless.png 마지막 행을 복제해 1005x1566(base-front.png 크기)으로 패딩한 것이 F다." }, "layers": [ { "id": "body", "file": "layers/body.png", "source": "base-faceless-masked+regenerated-fill", "alphaBBox": [ 0, 807, 1005, 1566 ], "opaquePixels": 676997, "greenResidue": 0, "fillTargetPixels": 111193, "fillSourceRaw": "raw/body.png (rejected 재생성이 아니라 수용된 body.png의 크로마키 결과; head/hairFront와 달리 body 재생성은 승인됨)" }, { "id": "head", "file": "layers/head.png", "source": "base-faceless-masked", "alphaBBox": [ 114, 86, 941, 1121 ], "opaquePixels": 581114, "greenResidue": 0 }, { "id": "hairFront", "file": "layers/hairFront.png", "source": "base-faceless-masked", "alphaBBox": [ 260, 391, 751, 932 ], "opaquePixels": 26681, "greenResidue": 0 } ], "composite": { "meanAbsDiff": { "full": 1.2217247097844115, "face": 0.31938995265429254, "hairOutline": 5.581258439408577 }, "target": { "full": 3.0, "pass": true }, "backgroundNote": "카테고리0(배경)은 종이결 텍스처 노이즈(표준편차 ~29/채널)를 포함해 평탄한 크림(#EEE5D3)과 자체적으로 평균절대차 ~7 차이가 난다." }, "landmarks": { "coordSystem": "screen (image pixel: x=0 좌측, y=0 상단; left=작은 x, right=큰 x; 인물 해부학적 좌우 아님)", "eyeLeft": { "innerCorner": [ 430.91, 592.22 ], "outerCorner": [ 339.05, 578.79 ], "upperLidTop": [ 376.31, 564.31 ], "lowerLidBottom": [ 381.06, 598.18 ], "iris": { "center": [ 387.33, 579.15 ], "radius": 21.43 } }, "eyeRight": { "innerCorner": [ 552.78, 590.87 ], "outerCorner": [ 648.01, 575.45 ], "upperLidTop": [ 607.07, 562.12 ], "lowerLidBottom": [ 603.89, 595.01 ], "iris": { "center": [ 601.93, 576.21 ], "radius": 21.28 } }, "eyebrowLeft": { "inner": [ 450.62, 525.06 ], "peak": [ 360.1, 510.44 ], "outer": [ 313.38, 513.28 ] }, "eyebrowRight": { "inner": [ 518.25, 521.66 ], "peak": [ 626.75, 508.19 ], "outer": [ 682.75, 510.7 ] }, "noseTip": [ 486.6, 713.03 ], "mouthCornerLeft": [ 422.12, 804.71 ], "mouthCornerRight": [ 567.47, 805.8 ], "upperLipTopCenter": [ 489.77, 773.37 ], "lowerLipBottomCenter": [ 492.98, 831.48 ], "chinTip": [ 500.61, 919.55 ], "faceWidthAtEyeLevelLeft": [ 281.78, 623.96 ], "faceWidthAtEyeLevelRight": [ 736.2, 621.0 ] }, "landmarkDetector": "mediapipe FaceLandmarker (tasks) 1.0.1, model=face_landmarker(float16, v1)", "segmenter": { "model": "selfie_multiclass_256x256.tflite (mediapipe ImageSegmenter, storage.googleapis.com)", "categories": { "0": "background", "1": "hair", "2": "bodySkin", "3": "faceSkin", "4": "clothes", "5": "others" }, "categoryPixelCounts": { "0": 407753, "1": 383398, "2": 68311, "3": 188992, "4": 525376 }, "hairEdgeRefine": { "dilatePx": 6, "lumThreshold": 110, "addedPixels": 22965 } }, "chinLine": { "landmarkIndex": 152, "xy": [ 500.61, 919.55 ], "marginPx": 8, "cutY": 927.55 }, "faceOval": { "landmarkLoop": [ 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288, 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136, 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109 ], "scale": 1.04, "sourceImage": "base/base-front.png" }, "rejectedRawEdits": { "head": { "file": "raw/head.png", "status": "rejected", "reason": "얼굴 폭·턱선·귀·머리숱이 base-faceless와 달라짐(2단계-A 1차 반려 사유)" }, "hairFront": { "file": "raw/hair-front.png", "status": "rejected", "reason": "노란 하이라이트 획 등 기준에 없던 색상 아티팩트, 형태 변형(2단계-A 1차 반려 사유)" }, "body": { "file": "raw/body.png", "status": "accepted-as-fill-source", "reason": "정렬 (0,0), 형태 변형 없음 — head_mask 채움 전용 소스로 재사용" } }, "layersV2": { "chinBandFix": { "targetRegionPixels": 51052, "sourceBandHeight": 150, "rowJitterRange": [ -2.0, 2.0 ], "rngSeed": 20260930 }, "hairEdgeFix": { "bandOuterPx": 40, "bandInnerPx": 6, "lumSmoothstep": [ 205.0, 150.0 ], "minFragmentAreaPx": 60, "head": { "bandOuterPixels": 93622, "bandInnerPixels": 60104, "componentsBefore": 67, "removed": 63, "removedPixels": 322 }, "hairFront": { "bandOuterPixels": 0, "bandInnerPixels": 21491, "componentsBefore": 217, "removed": 207, "removedPixels": 526 } }, "hairPaperGapFix": { "regionDilatePx": 6, "paperColorDistThreshold": 40.0, "paperLumThreshold": 195.0, "paperSatThreshold": 40.0, "opaqueAlphaThreshold": 0.95, "regionPixels": 410064, "head": { "targetPixels": 1359, "componentsBefore": 4, "removed": 0, "removedPixels": 0, "faceSkinAlphaDiff": 0.0 }, "hairFront": { "targetPixels": 0, "componentsBefore": 10, "removed": 0, "removedPixels": 0, "faceSkinAlphaDiff": 0.0 } }, "jawInkFix": { "mouthCenterY": 797.52, "distThresholdPx": 14.0, "mergePx": 3, "aspectThreshold": 1.0, "removedGroups": [ { "pixels": 4410, "bbox": [ 459, 798, 700, 933 ], "width": 241, "height": 135, "aspect": 1.785 } ], "keptGroups": [ { "pixels": 1471, "bbox": [ 322, 798, 382, 870 ], "width": 60, "height": 72, "aspect": 0.833 } ], "removedPixels": 4410, "strayFragmentCleanup": { "componentsBefore": 21, "removed": 14, "removedPixels": 118 } }, "metrics": { "body": { "haloPct": 0.6339468302658486 }, "head": { "haloPct": 0.04071661237785017, "bgLeakAlphaMean": 0.0, "hairPaperOpaquePct": 0.0, "disconnectedFragmentsUnder60px": 0 }, "hairFront": { "haloPct": 0.0, "bgLeakAlphaMean": 0.0, "hairPaperOpaquePct": 0.0, "disconnectedFragmentsUnder60px": 0 } }, "layers": [ { "id": "body", "bbox": [ 0, 807, 1005, 1566 ], "opaque": 672038, "greenResidue": 1 }, { "id": "head", "bbox": [ 111, 72, 960, 1121 ], "opaque": 593623, "greenResidue": 0 }, { "id": "hairFront", "bbox": [ 260, 391, 751, 907 ], "opaque": 31928, "greenResidue": 0 } ], "faceDetail": { "browLandmarksSource": "persona.json faceDetail.browLandmarksOverride", "regions": { "eyeLeft": [ 309.1, 487.9, 455.9, 668.2 ], "eyeRight": [ 527.8, 486.1, 678.0, 665.0 ], "mouth": [ 377.1, 738.0, 612.5, 904.5 ], "moles": [ { "center": [ 661.3, 627.9 ], "radius": 20.0 } ] }, "exclusionPixels": { "eyeLeft": 12830, "eyeRight": 12345, "browLeft": 17125, "browRight": 19863, "mouth": 18912, "union": 66536 }, "hairMaskPixels": 402878, "bbox": [ 284, 444, 721, 922 ], "textureCloneStamp": { "cloneTargetThreshold": 65.0, "avoidThreshold": 110.0, "lineOpeningIterations": 3, "featherPx": 4.0, "badTexturePixels": 353, "preservedShadowPixels": 0, "components": [ { "componentId": 1, "pixels": 1, "offset": [ -80, 0 ], "method": "clone-stamp" }, { "componentId": 2, "pixels": 4, "offset": [ -100, 0 ], "method": "clone-stamp" }, { "componentId": 3, "pixels": 1, "offset": [ 0, 40 ], "method": "clone-stamp" }, { "componentId": 4, "pixels": 1, "offset": [ 0, 40 ], "method": "clone-stamp" }, { "componentId": 5, "pixels": 4, "offset": [ 0, -180 ], "method": "clone-stamp" }, { "componentId": 6, "pixels": 4, "offset": [ 0, 40 ], "method": "clone-stamp" }, { "componentId": 7, "pixels": 1, "offset": [ 100, 0 ], "method": "clone-stamp" }, { "componentId": 8, "pixels": 4, "offset": [ 100, 0 ], "method": "clone-stamp" }, { "componentId": 9, "pixels": 1, "offset": [ 80, 0 ], "method": "clone-stamp" }, { "componentId": 10, "pixels": 1, "offset": [ 80, 0 ], "method": "clone-stamp" }, { "componentId": 11, "pixels": 17, "offset": [ 80, 0 ], "method": "clone-stamp" }, { "componentId": 12, "pixels": 23, "offset": [ 40, 40 ], "method": "clone-stamp" }, { "componentId": 13, "pixels": 4, "offset": [ 0, 100 ], "method": "clone-stamp" }, { "componentId": 14, "pixels": 1, "offset": [ 0, -180 ], "method": "clone-stamp" }, { "componentId": 15, "pixels": 8, "offset": [ 80, 0 ], "method": "clone-stamp" }, { "componentId": 16, "pixels": 81, "offset": null, "method": "nearest-good-pixel" }, { "componentId": 17, "pixels": 1, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 18, "pixels": 1, "offset": [ -120, -60 ], "method": "clone-stamp" }, { "componentId": 19, "pixels": 1, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 20, "pixels": 1, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 21, "pixels": 5, "offset": [ 0, -180 ], "method": "clone-stamp" }, { "componentId": 22, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 23, "pixels": 1, "offset": [ -40, 40 ], "method": "clone-stamp" }, { "componentId": 24, "pixels": 1, "offset": [ 0, -80 ], "method": "clone-stamp" }, { "componentId": 25, "pixels": 2, "offset": [ 0, -80 ], "method": "clone-stamp" }, { "componentId": 26, "pixels": 1, "offset": [ 0, 40 ], "method": "clone-stamp" }, { "componentId": 27, "pixels": 1, "offset": [ -40, 40 ], "method": "clone-stamp" }, { "componentId": 28, "pixels": 1, "offset": [ 0, -80 ], "method": "clone-stamp" }, { "componentId": 29, "pixels": 3, "offset": [ 0, 40 ], "method": "clone-stamp" }, { "componentId": 30, "pixels": 1, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 31, "pixels": 1, "offset": [ 0, 40 ], "method": "clone-stamp" }, { "componentId": 32, "pixels": 2, "offset": [ 0, 60 ], "method": "clone-stamp" }, { "componentId": 33, "pixels": 1, "offset": [ 0, -40 ], "method": "clone-stamp" }, { "componentId": 34, "pixels": 3, "offset": [ 60, -100 ], "method": "clone-stamp" }, { "componentId": 35, "pixels": 1, "offset": [ -120, -60 ], "method": "clone-stamp" }, { "componentId": 36, "pixels": 1, "offset": [ -100, 0 ], "method": "clone-stamp" }, { "componentId": 37, "pixels": 40, "offset": [ 0, -180 ], "method": "clone-stamp" }, { "componentId": 38, "pixels": 1, "offset": [ 0, -180 ], "method": "clone-stamp" }, { "componentId": 39, "pixels": 9, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 40, "pixels": 4, "offset": [ 0, -120 ], "method": "clone-stamp" }, { "componentId": 41, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 42, "pixels": 1, "offset": [ 0, -180 ], "method": "clone-stamp" }, { "componentId": 43, "pixels": 2, "offset": [ 0, -80 ], "method": "clone-stamp" }, { "componentId": 44, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 45, "pixels": 2, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 46, "pixels": 1, "offset": [ 0, -120 ], "method": "clone-stamp" }, { "componentId": 47, "pixels": 2, "offset": [ -60, -100 ], "method": "clone-stamp" }, { "componentId": 48, "pixels": 21, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 49, "pixels": 1, "offset": [ -40, -40 ], "method": "clone-stamp" }, { "componentId": 50, "pixels": 3, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 51, "pixels": 1, "offset": [ 0, -120 ], "method": "clone-stamp" }, { "componentId": 52, "pixels": 1, "offset": [ -40, -40 ], "method": "clone-stamp" }, { "componentId": 53, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 54, "pixels": 1, "offset": [ -120, -60 ], "method": "clone-stamp" }, { "componentId": 55, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 56, "pixels": 1, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 57, "pixels": 6, "offset": [ -80, 0 ], "method": "clone-stamp" }, { "componentId": 58, "pixels": 15, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 59, "pixels": 1, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 60, "pixels": 1, "offset": [ -80, 0 ], "method": "clone-stamp" }, { "componentId": 61, "pixels": 1, "offset": [ -40, -40 ], "method": "clone-stamp" }, { "componentId": 62, "pixels": 1, "offset": [ -40, -40 ], "method": "clone-stamp" }, { "componentId": 63, "pixels": 10, "offset": [ 60, -100 ], "method": "clone-stamp" }, { "componentId": 64, "pixels": 1, "offset": [ -100, 0 ], "method": "clone-stamp" }, { "componentId": 65, "pixels": 2, "offset": [ -100, 0 ], "method": "clone-stamp" }, { "componentId": 66, "pixels": 2, "offset": [ -100, 0 ], "method": "clone-stamp" }, { "componentId": 67, "pixels": 8, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 68, "pixels": 1, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 69, "pixels": 1, "offset": [ -100, 0 ], "method": "clone-stamp" }, { "componentId": 70, "pixels": 1, "offset": [ -100, 0 ], "method": "clone-stamp" }, { "componentId": 71, "pixels": 1, "offset": [ -100, 0 ], "method": "clone-stamp" }, { "componentId": 72, "pixels": 1, "offset": [ 0, -40 ], "method": "clone-stamp" }, { "componentId": 73, "pixels": 4, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 74, "pixels": 1, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 75, "pixels": 3, "offset": [ 0, -150 ], "method": "clone-stamp" }, { "componentId": 76, "pixels": 4, "offset": [ 0, -180 ], "method": "clone-stamp" }, { "componentId": 77, "pixels": 1, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 78, "pixels": 1, "offset": [ 0, -100 ], "method": "clone-stamp" }, { "componentId": 79, "pixels": 5, "offset": [ -120, -60 ], "method": "clone-stamp" } ] }, "genericPatches": { "forehead": [ 450, 411, 498, 459 ], "cheekLeft": [ 337, 646, 385, 694 ], "cheekRight": [ 506, 643, 554, 691 ] }, "genericPatchBaseline": { "highFreqEnergy": 11.156430639089423, "lineEnergy": 3.887366952020924 }, "checkA_meanAbsDiff": 1.7134750660286082, "checkB_seamLumDiff": 4.286507356166055, "checkC_holeDarkResiduePct": 0.338642256204032, "checkC_violationPixels": 192, "checkD_texturePreservation": { "eyeLeft": { "insideEnergy": 9.38281754159341, "baselineEnergy": 11.156430639089423, "ratio": 0.8410232488443298, "pass": true }, "eyeRight": { "insideEnergy": 10.293938339280684, "baselineEnergy": 11.156430639089423, "ratio": 0.9226910176103479, "pass": true }, "browLeft": { "insideEnergy": 10.557405723240223, "baselineEnergy": 11.156430639089423, "ratio": 0.9463067592828155, "pass": true }, "browRight": { "insideEnergy": 13.693225750578769, "baselineEnergy": 11.156430639089423, "ratio": 1.2273841153640155, "pass": true }, "mouth": { "insideEnergy": 6.263508649377403, "baselineEnergy": 11.156430639089423, "ratio": 0.5614258585027715, "pass": false } }, "checkD_allPass": false, "checkE_ghostOutline": { "eyeLeft": { "bandLineEnergy": 5.890396770321027, "baselineLineEnergy": 3.887366952020924, "ratio": 1.5152664626267889, "pass": false }, "eyeRight": { "bandLineEnergy": 5.7916340703027815, "baselineLineEnergy": 3.887366952020924, "ratio": 1.4898603969691842, "pass": true }, "browLeft": { "bandLineEnergy": 2.409716430748075, "baselineLineEnergy": 3.887366952020924, "ratio": 0.6198839627155179, "pass": true }, "browRight": { "bandLineEnergy": 4.83612006778533, "baselineLineEnergy": 3.887366952020924, "ratio": 1.2440606012949662, "pass": true }, "mouth": { "bandLineEnergy": 3.810132841546642, "baselineLineEnergy": 3.887366952020924, "ratio": 0.980132024728427, "pass": true } }, "checkE_allPass": false, "checkDarkCircle": { "eyeLeft": { "compositeMean": 127.63085714285714, "frontMean": 127.29714285714286, "diff": 0.3337142857142794, "pass": true }, "eyeRight": { "compositeMean": 131.44914285714285, "frontMean": 131.20609523809526, "diff": 0.2430476190475872, "pass": true } }, "checkDarkCircle_allPass": true }, "paperGrain": { "sourceImage": "base/base-front.png", "sourceOrigin": [ 10, 10 ], "tileSize": 256, "personMarginPx": 20, "cleanFraction": 0.952606201171875, "contaminatedPixelsFilled": 3106, "chromaKeep": 0.3, "targetLumRange": [ 245.0, 250.0 ], "lumShift": 22.883758544921875, "finalMeanLum": 247.49081557865418, "finalLumStd": 2.7344333398808125, "seamContinuity": { "leftRightDiff": 0.2262236423635405, "topBottomDiff": 0.623485711518839 } } }, "motifPublish": { "quality": 82, "fileSizes": { "bud-closed": 14576, "bud-half": 14932, "bud-open": 18278, "bud-droop": 14102, "weather-positive": 7594, "weather-negative": 13262, "weather-defensive": 14886, "weather-cognitive": 7790, "weather-energy": 7132 }, "totalBytes": 112552, "budgetBytes": 163840, "halo": { "bud-closed": 0.09157509157509157, "bud-half": 0.09174311926605505, "bud-open": 0.06657789613848203, "bud-droop": 0.205761316872428, "weather-positive": 0.0, "weather-negative": 0.0, "weather-defensive": 0.0, "weather-cognitive": 0.0, "weather-energy": 0.2890173410404624 }, "haloThreshold": 2.0 }, "browCenterline": { "method": "Otsu(front lum in bbox) AND diff(F-front)>=25, morphological closing to merge hatching, single global degree-2 polyfit on column-weighted centroid with one-pass outlier removal", "diffThresh": 25.0, "bboxPad": { "x": 25.0, "yUp": 42.0, "yDown": 14.0 }, "closingKernel": [ 7, 11 ], "minComponentAreaPx": 30.0, "outlierStdMult": 2.0, "edgeInsetFrac": 0.03, "peakWindow": [ 0.25, 0.6 ], "peakFallbackFrac": 0.35, "peakFlatHeightPx": 3.0, "peakFailEdgeFrac": 0.2, "oldPoints": { "browLeft": { "inner": [ 441.16, 535.91 ], "peak": [ 345.46, 497.87 ], "outer": [ 298.95, 524.32 ] }, "browRight": { "inner": [ 531.24, 535.37 ], "peak": [ 628.82, 496.05 ], "outer": [ 687.99, 522.25 ] } }, "newPoints": { "browLeft": { "name": "browLeft", "bbox": [ 274, 456, 466, 550 ], "otsuThresh": 105.0, "colRange": [ 309, 455 ], "width": 146.0, "nColumns": 146, "nOutliersRemoved": 7, "fitCoeffs": [ 0.00161949, -1.15147737, 715.08915879 ], "inner": [ 450.62, 525.06 ], "peak": [ 360.1, 510.44 ], "outer": [ 313.38, 513.28 ], "peakMethod": "fallback35", "peakFracFromOuterEdge": 0.35, "peakFail": false, "checkA_fracColumnsFitWithinMask": 0.9247, "checkA_pass": true, "bandX0": 274, "bandY0": 456, "colMin": 309, "colMax": 455 }, "browRight": { "name": "browRight", "bbox": [ 506, 454, 713, 549 ], "otsuThresh": 110.0, "colRange": [ 513, 688 ], "width": 175.0, "nColumns": 163, "nOutliersRemoved": 11, "fitCoeffs": [ 0.00102658, -1.29955603, 919.43219697 ], "inner": [ 518.25, 521.66 ], "peak": [ 626.75, 508.19 ], "outer": [ 682.75, 510.7 ], "peakMethod": "fallback35", "peakFracFromOuterEdge": 0.35, "peakFail": false, "checkA_fracColumnsFitWithinMask": 0.9202, "checkA_pass": true, "bandX0": 506, "bandY0": 454, "colMin": 513, "colMax": 688 } }, "checkB_innerMinusPeakY": { "browLeft": 14.62, "browRight": 13.47 }, "checkD_symmetry": { "innerYDiff": 3.4, "peakYDiff": 2.25 }, "evidenceImage": "preview/v2/brow-centerline.jpg" }, "lipTexture": { "designVersion": "A5(아랫입술 그늘 띠를 lip-shadow 조각으로 분리)", "landmarks": { "mouthCornerLeft": [ 422.12, 804.71 ], "mouthCornerRight": [ 567.47, 805.8 ], "upperLipTop": [ 489.77, 773.37 ], "lowerLipBottom": [ 492.98, 831.48 ], "mouthCenter": [ 491.55401542782784, 797.5187528729439 ] }, "capBBox": [ 413.8, 767.42, 575.8, 837.42 ], "otsuThreshLabA": 136.0, "diffThresh": 20.0, "dilatePx": 10.0, "alphaRampPx": 4.0, "splitOverlapPx": 2.0, "shadowBandPx": 18.0, "shadowTopOverlapPx": 6.0, "shadowSideRampPx": 6.0, "shadowTopRampPx": 4.0, "checks": { "lip-upper": { "regionPixelCount": 5996, "fullOpacityPixelCount": 5179, "rampPixelCount": 817, "preserveMaxDiffFullOpacity": 0, "check1Preserve": true, "spriteBBoxWorkingLocal": [ 30, 31, 182, 54 ] }, "lip-lower": { "regionPixelCount": 6482, "fullOpacityPixelCount": 5704, "rampPixelCount": 778, "preserveMaxDiffFullOpacity": 0, "check1Preserve": true, "spriteBBoxWorkingLocal": [ 30, 71, 182, 49 ] }, "lip-shadow": { "regionPixelCount": 3888, "fullOpacityPixelCount": 2071, "rampPixelCount": 1817, "preserveMaxDiffFullOpacity": 0, "check1Preserve": true, "spriteBBoxWorkingLocal": [ 40, 75, 162, 53 ] }, "splitOverlapPixelCount": 362, "splitOverlapBandOk": true, "splitOverlapAlphaMaxDiff": 0, "splitOverlapConsistentOk": true, "splitCoverageMismatchPixelCount": 0, "splitCheckOk": true, "shadowLowerOverlapPixelCount": 2845, "shadowLowerOverlapMaxDiff": 35.95294117647059, "shadowLowerOverlapDiffGt1PixelCount": 138, "shadowLowerOverlapOk": false }, "check3NeutralComposite": { "fullOpacityMaxDiff": 0.0, "rampMeanAbsDiff": 3.069, "mouthBBoxMeanAbsDiff": 0.707 }, "pngFileSizes": { "lip-upper": 24050, "lip-lower": 22210, "lip-shadow": 21762 }, "canvasOrigin": { "upper": [ 404, 758 ], "lower": [ 404, 798 ], "shadow": [ 414, 802 ] }, "evidenceImage": "preview/v2/lip-texture.jpg", "check4WebpVsPngMeanAbsDiff": { "upper": 0.0, "lower": 0.0, "shadow": 0.0 } }, "lipTexturePublish": { "quality": "lossless", "fileSizes": { "lip-upper": 15904, "lip-lower": 14630, "lip-shadow": 14868 }, "totalBytes": 45402, "budgetBytes": 81920, "webpVsPngMeanAbsDiff": { "upper": 0.0, "lower": 0.0, "shadow": 0.0 } }, "jaw": { "designVersion": "A5(결정문 §8.4 하관 띠 변형 — 턱 조각 원본)", "noseTip": [ 486.6, 713.03 ], "chinTip": [ 500.61, 919.55 ], "yFormula": "noseTip.y - 50 - 10 .. chinTip.y + 40", "noseToTopPx": 60.0, "chinToBottomPx": 40.0, "ovalOutsetPx": 18.0, "faceOvalSource": "export_rig.detect_face_landmarks + compute_face_oval(base-front.png, 결정적)", "bboxCanvas": [ 260, 653, 760, 960 ], "naiveXRangeForComparison": [ 260, 760 ], "checks": { "head": { "pngRoundTripMaxDiff": 0, "pngRoundTripOk": true, "pngFileSize": 314304 }, "detail": { "pngRoundTripMaxDiff": 0, "pngRoundTripOk": true, "pngFileSize": 332332 } }, "evidenceImage": "preview/v2/jaw-pieces.jpg", "check1VsPublishedLayerAbsDiff": { "head": { "comparedAgainstPublishedLayer": "head.webp", "meanAbsDiffPremultipliedRgb": 3.131, "maxAbsDiffPremultipliedRgb": 40.0, "meanAbsDiffAlpha": 0.0, "maxAbsDiffAlpha": 0.0, "meetsTarget": false }, "detail": { "comparedAgainstPublishedLayer": "face-detail.webp", "meanAbsDiffPremultipliedRgb": 0.565, "maxAbsDiffPremultipliedRgb": 25.0, "meanAbsDiffAlpha": 0.0, "maxAbsDiffAlpha": 0.0, "meetsTarget": true } } }, "jawPublish": { "quality": 80, "scale": 1.0, "fileSizes": { "jaw-head": 24580, "jaw-detail": 15488 }, "totalBytes": 40068, "budgetBytes": 204800, "vsPublishedLayerAbsDiff": { "head": { "comparedAgainstPublishedLayer": "head.webp", "meanAbsDiffPremultipliedRgb": 3.131, "maxAbsDiffPremultipliedRgb": 40.0, "meanAbsDiffAlpha": 0.0, "maxAbsDiffAlpha": 0.0, "meetsTarget": false }, "detail": { "comparedAgainstPublishedLayer": "face-detail.webp", "meanAbsDiffPremultipliedRgb": 0.565, "maxAbsDiffPremultipliedRgb": 25.0, "meanAbsDiffAlpha": 0.0, "maxAbsDiffAlpha": 0.0, "meetsTarget": true } } }, "pipelineRun": { "persona": "P1", "timestamp": "2026-10-01T11:04:58", "completed": true, "stages": [ { "stage": "landmarks", "ok": true, "elapsedSec": 1.24 }, { "stage": "brow_centerline", "ok": true, "elapsedSec": 0.64 }, { "stage": "segmentation", "ok": true, "elapsedSec": 7.84 }, { "stage": "layers_v2", "ok": true, "elapsedSec": 12.39 }, { "stage": "face_detail", "ok": true, "elapsedSec": 12.25 }, { "stage": "paper_grain", "ok": true, "elapsedSec": 1.91 }, { "stage": "lip_texture", "ok": true, "elapsedSec": 1.92 }, { "stage": "jaw_pieces", "ok": true, "elapsedSec": 1.89 }, { "stage": "export_rig", "ok": true, "elapsedSec": 21.12 }, { "stage": "final_previews", "ok": true, "elapsedSec": 16.83 } ] } }