代码 review 后的清理: - 接口4 由网关本机实现,worker app.py 的 /face/features 回退 Mock(保持 worker 无外网依赖); worker requirements 标注 volcengine 改为网关侧;移除 worker 的接口4 测试(随实现挪到网关) - 网关接口4 业务错误 HTTP 状态统一改 200(与其余接口/worker 约定一致,原为400/503) - 接口文档:gender 非法码 1004(原误写1008);修正指向已删文档的链接 文档合并:把各接口技术方案/开发任务书/系统架构/网关任务书 合并成 docs/实现说明.md(简要总览), 删除原 7 份分散文档,README 收敛为索引(实现说明/接口文档/需求/OFFLINE_ASSETS)。 pytest 44 全绿。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
34 lines
1.8 KiB
Plaintext
34 lines
1.8 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)
|
||
# 国内安装可走 Tsinghua 镜像(PyPI 的 linux wheel 即 CUDA 12.1 构建):
|
||
# ./venv/bin/pip install torch==2.2.2 torchvision==0.17.2 -i https://pypi.tuna.tsinghua.edu.cn/simple/
|
||
# ⚠️ 本 worker 是 RTX 5090(sm_120/Blackwell),torch 2.2.2(cu121) 只编到 sm_90,
|
||
# GPU 上跑算子会报 "no kernel image",代码已自动回退 CPU(方案B 仍可用)。
|
||
# 要真正用 5090 GPU,请换 torch cu128(≥2.7)+ 对应 torchvision,代码无需改。
|
||
torch==2.2.2 # 当前在 5090 上仅 CPU 可用;GPU 需 cu128(≥2.7)
|
||
torchvision==0.17.2
|
||
|
||
# 接口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:用户特征(火山方舟 豆包视觉模型)—— 已迁到**网关**实现,worker 不需要。
|
||
# 网关机装:volcengine-python-sdk[ark](from volcenginesdkarkruntime import Ark);API Key 走配置不入 git
|
||
|
||
# 测试
|
||
pytest==8.3.3
|