OpenVINO 人脸向量库(入库 + 识别)
这个 Skill 做什么
本 Skill 提供两个可直接运行的命令(Python 脚本),用 OpenVINO 从图片提取人脸 embedding,然后:
- 入库(Enroll):将 embedding 以“人名/标签”为 key 保存到本地向量库目录
- 识别(Identify):将 embedding 与向量库做余弦相似度比对,返回最相似的人名与是否通过阈值
假设与限制
- 默认会在推理前先做人脸检测 + 对齐裁剪到 112×112(基于 MediaPipe FaceDetector 关键点估计仿射矩阵)。
- 模型输入为 RGB (112x112),dtype 为
uint8。 - 输出向量会做 L2 归一化;相似度为余弦相似度(点积)。
快速开始
安装依赖
pip 安装依赖:
pip install numpy opencv-python openvino lancedb mediapipe pyarrow
如果你使用 Astral uv:
uv add numpy opencv-python openvino lancedb mediapipe pyarrow
入库一个人
运行:
python openvino-face-skill/scripts/enroll.py --name "alice" --image "path/to/alice.png"
如果你使用 Astral uv:
uv run openvino-face-skill/scripts/enroll.py --name "alice" --image "path/to/alice.png"
识别一个人
运行:
python openvino-face-skill/scripts/identify.py --image "path/to/unknown.png" --threshold 0.35
如果使用 Astral uv:
uv run openvino-face-skill/scripts/identify.py --image "path/to/unknown.png" --threshold 0.35
使用指引(给 Agent 的操作提示词)
当用户提出“存人脸向量 / 入库 / enroll”时:
- 获取或推断参数:
--name、--image,可选--db(默认openvino-face-skill/db)、--model(默认openvino-face-skill/model/openvino/model.xml)、--face_detector_model(默认openvino-face-skill/model/mediapipe/blaze_face_short_range.tflite) - 运行入库脚本并返回:
- 保存路径(
.npy文件路径) - 向量维度
- 保存路径(
当用户提出“判断是谁 / 识别 / identify / recognize”时:
- 获取或推断参数:
--image,可选--db、--model(默认openvino-face-skill/model/openvino/model.xml)、--face_detector_model(默认openvino-face-skill/model/mediapipe/blaze_face_short_range.tflite)、以及合理的--threshold(默认0.35) - 运行识别脚本并返回:
- 最佳匹配人名
- 相似度分数
- 是否通过阈值
- 若未通过:建议降低阈值或为同一人入库更多样本
微信扫一扫