Files
juzi/h5/vendor/faceapi/README.md
T
2026-09-26 19:50:39 +08:00

61 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# face-api.js 本地化依赖(h5/vendor/faceapi/)
测肤 H5 的人脸角度检测(yaw / pitch / roll)依赖 face-api.js 及其模型。
所有文件均已本地化,**运行时零外部请求**(不依赖任何 CDN),保证微信 webview /
iOS Safari 在弱网、内网部署或 CDN 不可达场景下仍可稳定加载。
## 来源与版本
| 文件 | 来源 | 版本 / 分支 |
| --- | --- | --- |
| `face-api.js` | https://cdn.jsdelivr.net/npm/face-api.js@0.22.2/dist/face-api.js | 0.22.2(UMD 未压缩构建,0.22.2 未提供 min 版) |
| `models/tiny_face_detector_model-*` | https://github.com/justadudewhohacks/face-api.js-models (`tiny_face_detector/` 目录,raw master) | master |
| `models/face_landmark_68_model-*` | 同上(`face_landmark_68/` 目录,raw master) | master |
下载时间:2026-09-26。
## 许可证
- **face-api.js**(库与模型均出自该项目)以 **MIT License** 发布,
版权归 Vincent Mühler (justadudewhohacks) 所有。
许可证全文见 https://github.com/justadudewhohacks/face-api.js/blob/master/LICENSE 。
- `face-api.js` UMD 构建内联打包了 TensorFlow.js(tfjs-core / tfjs-converter 等),
该部分为 Apache License 2.0,Copyright 2020 Google LLC(见 `face-api.js` 文件头注释)。
MIT 与 Apache-2.0 均允许商用及再分发,保留版权声明即可。
## 文件清单与体积
| 路径 | 体积 | 说明 |
| --- | --- | --- |
| `face-api.js` | 859,250 B(≈839 KB) | UMD 构建,浏览器全局变量 `faceapi` |
| `models/tiny_face_detector_model-weights_manifest.json` | 2,953 B | 轻量人脸检测器权重清单(19 个张量) |
| `models/tiny_face_detector_model-shard1` | 193,321 B(≈189 KB) | 检测器权重分片 |
| `models/face_landmark_68_model-weights_manifest.json` | 7,889 B | 68 点特征模型权重清单(49 个张量) |
| `models/face_landmark_68_model-shard1` | 356,840 B(≈349 KB) | 68 点特征模型权重分片 |
合计约 1.4 MB。已用 Node 校验:manifest JSON 可解析、`paths` 引用的 shard 均存在且非空。
## 用法
```html
<script src="vendor/faceapi/face-api.js"></script>
<script>
const MODEL_URL = 'vendor/faceapi/models';
await faceapi.nets.tinyFaceDetector.loadFromUri(MODEL_URL);
await faceapi.nets.faceLandmark68Net.loadFromUri(MODEL_URL);
// 检测 + 68 特征点:
// const det = await faceapi
// .detectSingleFace(video, new faceapi.TinyFaceDetectorOptions({ inputSize: 320, scoreThreshold: 0.4 }))
// .withFaceLandmarks();
</script>
```
姿态估算(yaw/pitch/roll)由 `js/head-pose.js` 基于 68 特征点做纯几何计算,
不依赖 face-api 的内部 API,可独立单测。
## 为什么本地化
1. 主战场是 iOS Safari + 微信 webview,弱网/CDN 抖动会直接导致检测功能不可用;
2. 内网 / 私有化部署时外网 CDN 可能完全不可达;
3. 锁定 0.22.2 版本,避免上游变更引发回归。