- worker /api/v1/face/features 不再返回假成功数据,直接告知仅网关实现, 避免本机误打 :8187 被 Mock 结果误导。 - 网关 ark_api_key 加载优先级改为 gateway/config.json 优先(原先误读 worker_config.json 里的失效 key)。 - 接口4 face_shape 不再采信豆包结果,改用本机 face/face_shape_classifier.py (MediaPipe 7 类)计算覆盖;其余 5 项特征仍走豆包。 - 修复 face_shape_classifier 共享 FaceMesh 实例的线程安全问题(加锁), 避免网关侧接口4 并发请求时崩溃/结果错乱。 - 新增 /api/v1/debug/face-shape 调试接口 + static/test_face_shape.html 单图调试页(worker 侧)。 - 更新文档:网关机现在也需要 mediapipe/opencv-python/numpy<2。 ⚠️ 部署前提醒:网关机需先安装 mediapipe==0.10.14 / opencv-python==4.10.0.84 / numpy==1.26.4,否则接口4 会返回 1007「分析服务异常」。 Co-authored-by: Cursor <cursoragent@cursor.com>
37 lines
2.1 KiB
Plaintext
37 lines
2.1 KiB
Plaintext
fastapi==0.115.12
|
||
uvicorn[standard]==0.34.2
|
||
python-multipart==0.0.31
|
||
httpx==0.28.1
|
||
|
||
# 接口1:四庭七眼测量(worker 侧算法依赖)
|
||
mediapipe==0.10.14 # MediaPipe Face Mesh(经典 Solutions API,模型内置)
|
||
opencv-python==4.10.0.84 # 图片读取/处理 + solvePnP 姿态估计
|
||
Pillow==11.0.0 # 标注图生成(PNG 透明图层)
|
||
numpy==1.26.4 # 必须 <2,否则 mediapipe 0.10.x import 崩溃
|
||
|
||
# 方案 B:头发分割(BiSeNet face-parsing)
|
||
# ⚠️ RTX 5090(sm_120/Blackwell)必须用 cu128 构建——cu121(如 torch 2.2.2)只编到
|
||
# sm_90,GPU 跑算子会报 "no kernel image"。cu128 含 sm_120,BiSeNet/SegFormer 走 GPU。
|
||
# 安装(走 PyTorch 官方 cu128 index):
|
||
# ./venv/bin/pip install --index-url https://download.pytorch.org/whl/cu128 torch==2.11.0 torchvision==0.26.0
|
||
# numpy 必须保持 <2(mediapipe 0.10.x / scikit-image 0.24.x 依赖),cu128 torch 兼容 numpy 1.26.4。
|
||
torch==2.11.0 # +cu128,支持 RTX 5090 sm_120;GPU 推理
|
||
torchvision==0.26.0
|
||
|
||
# 接口2:C端生发(发际线预览)
|
||
# MediaPipe Tasks(FaceLandmarker) 用已装的 mediapipe;新增 SegFormer 人脸分割:
|
||
transformers==4.45.2 # SegFormer 人脸分割(jonathandinu/face-parsing,本地权重)
|
||
|
||
# 接口3:B端生发(马克笔发际线检测)
|
||
# ⚠️ 必须 0.24.x —— 0.25+ 强依赖 numpy>=2,会顶掉 mediapipe 需要的 numpy<2
|
||
scikit-image==0.24.0 # route_through_array(黑帽响应图上的 Dijkstra 最小路径)
|
||
|
||
# 接口4:用户特征(火山方舟 豆包视觉模型 + 本机 MediaPipe 脸型覆盖)—— 已迁到**网关**实现,worker 不需要。
|
||
# 网关机装:volcengine-python-sdk[ark](from volcenginesdkarkruntime import Ark);API Key 走配置不入 git
|
||
# ⚠️ face_shape 字段改为本机 face/face_shape_classifier.py 计算(覆盖豆包结果),
|
||
# 因此网关机现在也需要 mediapipe==0.10.14 + opencv-python==4.10.0.84 + numpy==1.26.4
|
||
# (不再是"网关不需要 mediapipe",见 docs/实现说明.md 需同步更新)
|
||
|
||
# 测试
|
||
pytest==8.3.3
|