xsl
|
1b9f3fdb6f
|
终于修改对了,还是opus
|
2026-07-11 23:14:07 +08:00 |
|
xsl
|
41bb164a52
|
接口11/12:新增发际线外推遮罩(pushed)模式 + multiband融合修复 + 调试日志 + 对比报告脚本
发际线生发遮罩算法(mask_type=pushed):
- _extract_hairline:提取头发/皮肤交界线(逐列头发下沿),用 baseline 水平 y 线截断(无竖线)
- _pushed_mask:以眉心(151点)为圆心逐点径向外推 push_cm,与 baseline 组闭合区域
- 径向归并锯齿用插值填补,避免遮罩碎裂
- pushed 模式过程可视化(①-f 交界线 / ①-g 外推+遮罩),eroded/closed 不展示无关步骤
multiband 金字塔融合修复(hairline_grow.py):
- mb_levels 按层数膨胀外缘 keep 区,让过渡带随层数变宽(旧硬二值钳回导致 mb_levels 形同虚设)
接口12 grow_v2(固定参数精简版):
- 固定 multiband/mb_levels=5/erode_cm=0.6,仅返回 final_base64
- 支持 mask_type=pushed + hairline_push_cm/hairline_edge
调试支持:
- 调试页 test_interface11_debug.html(前后端日志面板 + 下载日志按钮)
- hairline_grow.log 全链路日志(按 rid 关联),/api/v1/debug/hairline_log 下载接口
- 遮罩计算过程可视化(baseline/upper/头发分割/交界线/外推/最终遮罩)
文档与脚本:
- docs/发际线生发遮罩算法_pushed模式.md 算法说明
- scripts/batch_grow_v2.py 批量调用、gen_report_hairline_v2.py 对比报告生成
|
2026-07-11 22:23:57 +08:00 |
|
 xslandClaude
|
864d7f969a
|
fix: torch.load 添加 weights_only=False 以兼容新版 PyTorch
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-09 23:44:48 +08:00 |
|
 xslandClaude Opus 4.8
|
0ddfa83743
|
接口11:发际线生发(接口9遮罩 + change_hair换发型/区域生发 + 按遮罩羽化贴回)+ 分步可视化测试页
- 端点 POST /api/v1/hairline/grow(app.py,纯新增,不影响接口1-5)
- 编排模块 face_analysis/hairline_grow.py:复用接口9 遮罩 → HTTP 调 change_hair(8801) → 按遮罩贴回
- 双生成后端 gen_backend:swaphair(换发型LoRA) / hairgrow(区域生发inpaint)
- swap_mode:ext_mask(接口9遮罩作换发型遮罩) / as_is;融合 feather/alpha_gradient/seamless
- 参数全在测试页可调;可视化按算法文档4步:最终遮罩→生成全帧→严格贴回→接缝融合
- 附启停脚本 scripts/restart_if11_backends.sh、算法文档、测试图
注:change_hair 侧 swapHair 的 ext_mask/denoising_strength 改造在 change_hair 仓库,向后兼容。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-09 22:06:17 +08:00 |
|
 xslandClaude Opus 4.8
|
3eb60bddc5
|
接口10:头部外缘膨胀带遮罩 + 分步可视化
新增 POST /api/v1/head/band(worker + 网关代理)与测试页 test_interface10.html:
- 先和接口9 一样得到内缩后的基准遮罩(含额头的闭合区域外缘朝151内缩 erode_cm、
底线不动,默认1.2cm),在此基础上取外轮廓线,去掉贴着底部分割线的那一段。
- 把外轮廓线膨胀成带子(总宽 dilate_cm,默认2cm;半径=总宽/2,虹膜标定换算)。
- 裁到分割线以上(不越过底线)。BiSeNet/SegFormer 两套并排对比。
- 两个可调参数 erode_cm + dilate_cm(页面数字框+滑块+localStorage)。
- 复用 head_mask 的构件,无新依赖;纯新增,不改动既有接口。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-07 23:32:45 +08:00 |
|
 xslandClaude Opus 4.8
|
9774997035
|
接口9:头发遮罩生成 + 分步可视化
新增 POST /api/v1/head/mask(worker + 网关代理)与测试页 test_interface9.html:
- MediaPipe 关键点连成额头分割线(21,68,104,69,108,151,337,299,333,298,251,
左端21/右端251 水平延伸到图片边缘),分割线以上为上半区。
- 头发分割 BiSeNet 与 SegFormer 两套并排对比;每列从最顶端头发向下填充到分割线,
得到含额头的闭合区域(不从发际线割断)。
- 外缘朝中心点151内缩 erode_cm(默认1.2cm,页面可调,虹膜标定换算像素)、底线不动。
- 复用现有 detector/hair_segmenter/SegFormer 单例(只读推理),无新依赖;纯新增,
不改动既有接口。
顺带修复接口2 遗留测试 test_grow_female_returns_5:hair_style 自 cb1989c 起必填,
补上 hair_style=1,2,3,4,5。全套 42 passed。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-07 23:09:29 +08:00 |
|
 xslandClaude Opus 4.8
|
a9439e4975
|
接口1: 标注图人头最左/最右竖线改用耳朵分割外缘
- 最左/最右竖线由「头发轮廓」改为同一 BiSeNet 的耳朵类(7/8)外缘,
看不到耳朵(被头发/侧脸遮挡→掩膜空)则该侧不画线
- 外耳轮廓常被误标成头发: 从耳朵外缘沿紧邻前景(耳∪发)按脸宽自适应
外扩回收(上限 face_w*0.045, 遇背景间隙即停)
- 先按人脸包围盒裁剪再分割: BiSeNet 在紧裁人脸上训练, 整张全身/街拍图
脸偏小会严重欠分割、丢耳朵; 裁剪后映射回原图, 耳朵稳定可分
- segment_hair_and_ears() 单次推理同出 hair_mask + ear_mask
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 21:36:23 +08:00 |
|
xsl
|
57d1a876cc
|
save code
|
2026-06-23 23:26:40 +08:00 |
|
xsl
|
6e8113b3ff
|
save code
|
2026-06-23 22:46:24 +08:00 |
|
xsl
|
85f1ca521d
|
修改画线
|
2026-06-23 22:29:41 +08:00 |
|
 xslandClaude Opus 4.8
|
891bc0da8b
|
feat(annotation): 线名移到右侧 + 线条只覆盖人脸范围
- 5 条横线的线名(头顶/发际线/眉心/鼻翼下缘/下巴尖)从左侧移到右侧
- 四庭 cm(顶庭/上庭/中庭/下庭)留在左侧,右对齐贴脸盒左缘
- 横线只覆盖脸宽(左右脸颊)、竖线只覆盖脸高(头顶→下巴),渐变消失
- 七眼段宽标注移到脸盒上端/下端(配合新线长),相邻段上下错行防重叠
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-14 19:58:12 +08:00 |
|
 xslandClaude Opus 4.8
|
10488171eb
|
feat(annotation): 标注图改版——横线标名+四庭cm,竖线标七眼段宽(顶/底)
按需求重排标注图:
- 去掉右侧全脸总高标尺,去掉单眼宽度/两眼间距/脸宽 三条横向标注
- 横向 5 条线标注线名(头顶/发际线/眉心/鼻翼下缘/下巴尖) + 保留左侧四庭 cm
- 新增纵向 6 条渐变竖线(左脸颊/左右眼内外角/右脸颊),切脸宽为 5 段
- 每段宽度在顶部和底部各标一次(只标 X.XXcm),相邻段上下错行防重叠
- 新增 draw_gradient_vertical_line 竖向渐变线
- test_api 用模块级 ACCEPT_PASSWORDS 固定测试密码,不依赖 worker_config.json
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-14 18:37:09 +08:00 |
|
 xslandClaude Opus 4.8
|
0eaaf05ac3
|
fix(annotation): 标注图重排,8 个量全标注且不重叠
- 修复七眼三个横向量(单眼宽度/两眼间距/脸宽)叠在同一条眼睛线上的重叠问题,
改为上下错开三个高度,各自虚线带箭头 + 紧贴标签
- 新增「全脸总高」标注:右侧竖向标尺(虚线双箭头,头顶→下巴)+ 标签
- 四庭(顶/上/中/下庭)仍在左侧各段中点
- 标签用全名:单眼宽度/两眼间距/脸宽/全脸总高
- 新增 tests/test_annotation.py 防回归
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-14 17:33:58 +08:00 |
|
 xslandClaude Opus 4.8
|
8d3b145111
|
feat(worker): 接口1 四庭七眼测量真实实现(替换 Mock)
worker 侧从 Mock 替换为真实算法:
- face_analysis 包:detector(MediaPipe 478点) / pose(solvePnP 姿态) /
calibration(虹膜直径法) / hair_segmenter+bisenet_model(方案B 头发分割) /
measure(方案A兜底+B/A决策+七眼+换算) / annotation(numpy渐变线+中文标注)
- app.py:/api/v1/face/measure 接真实实现,返回 annotated_image_base64
(不落盘不拼URL,落盘由网关做);加 X-Internal-Token 鉴权、/health 就绪态、
可配置分辨率门槛、异常兜底
- 部署:start.sh/run_worker.sh/hair-worker.service 监听 8187;worker_config 示例
- 测试 tests/:Tier1合成真值<1e-6 + Tier2缩放不变 + Tier3叠加 + 错误码集成 +
数值回归,pytest 24 项全绿
- 文档补实测基线表 + RTX5090/torch 说明
注:worker 为 RTX 5090(sm_120),pinned torch 2.2.2(cu121) 只到 sm_90,
BiSeNet 已自动回退 CPU(方案B 正常);要用 GPU 需换 torch cu128(≥2.7)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-14 16:07:28 +08:00 |
|
xsl
|
7493f48992
|
加入模型文件
|
2026-06-14 00:24:09 +08:00 |
|