# 人脸特征提取API - 快速启动指南 ## 🚀 快速开始 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 启动API服务 ```bash python app.py ``` 服务将在 `http://localhost:8000` 启动 ### 3. 访问API文档 浏览器打开: http://localhost:8000/docs --- ## 📋 三个核心接口 ### ✅ 接口1: 人脸特征提取 - **路径**: `POST /api/extract_feature` - **功能**: 上传图像,提取1024维人脸特征向量 - **输入**: 人脸图像文件 - **输出**: 特征向量 + 质量评估结果 ### ✅ 接口2: 特征向量对比 - **路径**: `POST /api/compare_features` - **功能**: 计算两个特征向量的相似度 - **输入**: 两个1024维特征向量 - **输出**: 相似度分数 + 是否同一人判断 ### ✅ 接口3: 图像特征对比 (组合接口) - **路径**: `POST /api/compare_image_feature` - **功能**: 上传图像和特征向量,自动提取并对比 - **输入**: 人脸图像 + 特征向量 - **输出**: 相似度分数 + 是否同一人判断 --- ## 🔧 Python调用示例 ```python import requests # 接口1: 提取特征 with open("face.jpg", "rb") as f: response = requests.post( "http://localhost:8000/api/extract_feature", files={"image": f} ) result = response.json() feature = result["feature"] # 获取特征向量 # 接口2: 对比特征 response = requests.post( "http://localhost:8000/api/compare_features", json={ "feature1": feature1, "feature2": feature2 } ) result = response.json() print(f"相似度: {result['similarity']}") # 接口3: 图像特征对比 import json with open("test.jpg", "rb") as f: response = requests.post( "http://localhost:8000/api/compare_image_feature", files={"image": f}, data={"feature": json.dumps(known_feature)} ) result = response.json() print(f"是否同一人: {result['is_same_person']}") ``` --- ## 📚 详细文档 - **完整API文档**: [API_USAGE.md](API_USAGE.md) - **客户端示例**: [examples/api_client_example.py](examples/api_client_example.py) - **交互式文档**: http://localhost:8000/docs (启动服务后访问) --- ## 🎯 应用场景 1. **人脸注册**: 使用接口1提取特征并存储到数据库 2. **人脸验证 (1:1)**: 使用接口3验证用户身份 3. **人脸识别 (1:N)**: 使用接口1+接口2在数据库中搜索匹配 4. **人脸去重**: 使用接口2批量对比特征,找出重复人脸 --- ## ⚙️ 启动参数 ```bash # 默认启动 python app.py # 自定义端口 python app.py --port 8080 # 自定义地址和端口 python app.py --host 0.0.0.0 --port 8000 # 开发模式(热重载) python app.py --reload ``` --- ## 📊 相似度阈值 - **默认阈值**: 0.7 - **>= 0.7**: 判断为同一人 - **< 0.7**: 判断为不同人 根据实际需求调整: - 安全优先: 提高阈值 (0.75-0.85) - 体验优先: 降低阈值 (0.6-0.65) --- ## 🛠️ 技术栈 - **Web框架**: FastAPI - **深度学习**: ONNX Runtime - **图像处理**: OpenCV - **特征维度**: 1024维 (固定,由模型决定) - **相似度算法**: 余弦相似度 > 💡 **特征维度说明**: 查看 [FEATURE_DIMENSION.md](FEATURE_DIMENSION.md) 了解如何调整特征维度 --- ## 📞 支持 遇到问题? 查看完整文档: [API_USAGE.md](API_USAGE.md)