377°

基于face_recognition+tensorflow的实现的人脸一对多搜索

face-search

项目介绍

基于face_recognition+tensorflow的实现的人脸一对多搜索、提供web接口。

  • python完成具体的人脸对比搜索服务
  • Java完成人脸Api的调用并提供对外的web接口

项目地址:https://github.com/jamesluozhiwei/face-search

演示地址:https://ccccyc.cn/face/swagger-ui.html

环境需求

若需要部署项目,您需要以下环境:

  • Java8
  • mysql
  • docker
  • ubuntu(非必需)
  • redis(非必需)
  • nginx(非必需)

初始化数据库

创建数据库:db_face_search_service;

使用数据库文件db_face_search_service.sql初始化数据库。

部署Python人脸服务

提供两种方式:

​ 1、安装python依赖运行脚本;

​ 2、使用Docker构建;

修改face_encoding_data_service.py中的mysql数据库连接信息:

db_host = 'localhost'数据库地址
db_user='root'数据库账户
db_password = '123456'数据库密码
db_name = 'db_face_search_service'数据库名

安装python依赖运行脚本

1、安装gcc(请自行百度);

2、安装cmake(请自行百度);

3、安装项目依赖:

​ 请安装requirements.txt中的所有依赖

pip install -r requirement.txt

4、运行 app.py即可。

使用Docker运行(推荐)

使用Docker可以将环境隔离,不得不说,python需要安装的依赖有点多;

Ubuntu安装Docker

其它系统请自行查阅官网;

此处默认您已成功安装Docker;

使用Docker构建镜像:

进入到Dockerfile所在目录

docker build -t <username>/face-search-service:1 -f Dockerfile .

注意后面有个点 < username >表示你的用户名,可以在DockerHub上注册一个账户,后面可以push自己的镜像上去;

运行镜像:

docker run -d --name face-search-service1 -p 5002:5002 --mount type=bind,source=<your local dir>,target=/usr/src/app/model jamesluozhiwei/face-search-service:1

命令中的< your local dir >指你系统的一个目录,用于保存训练模型;

至此,您已经运行了人脸搜索的服务;

使用命令查看日志

docker logs face-search-service1

即可查看python 服务日志,如果没有异常信息则运行成功。

部署Java API服务

修改系统配置:

applicaiton.yml

  • 修改数据库连接信息;

  • 修改邮箱账户信息;

  • 修改python提供的人脸服务地址;

  • 修改redis连接信息;

示例:可以新建一个文件作为profile环境隔离: application-dev.yml

spring:
  redis:
    password: 123456
  datasource:
    url: jdbc:mysql://localhost:3306/db_face_search_service?useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8
    username: root
    password: 123456
  mail:
    default-encoding: UTF-8
    # 生产环境请使用465端口、本地可以使用25端口
    port: 25
    host: smtp.mxhichina.com
    username: xxxxx@xxx.xxx
    password: 123456

使用Idea直接运行或者使用maven打包成jar运行即可。

访问:http://localhost:8080/swagger-ui.html 查看到API。

使用手册

请确保您已打开文档演示地址:https://ccccyc.cn/face/swagger-ui.html

注册用户获取OpenKey

展开用户相关 | API

  • 调用 发送注册邮箱验证码

    填写邮箱,稍后系统会发送一个验证码至您的邮箱;

    参数示例:1484699019@qq.com 请不要使用双引号,直接填写邮箱即可!!!

    如果系统出现问题或未知异常可以通过示例邮箱联系本人。

    https://tva1.sinaimg.cn/large/006tNbRwgy1gaxgohk2ugj313w0l10ty.jpg

  • 调用注册用户

    将收到的邮箱验证码以及对应的邮箱地址填写到参数中;示例如下:

    https://tva1.sinaimg.cn/large/006tNbRwgy1gaxgqx20d7j313w0l1abi.jpg

    若注册成功,则会将openKey返回,可以查看response中的result字段的值;请将其保存下来;如果您忘记了openKey可以调用忘记openKey接口,系统会将您的openKey发送至您的邮箱。

    到此,您的openKey已获取完毕,请注意保存,每次使用人脸服务时需要该openKey

人脸注册

对于已知的人脸完成注册。

展开人脸相关 | API

调用人脸注册接口。

示例如下

https://tva1.sinaimg.cn/large/006tNbRwgy1gaxgzsi83sj313w0mmacd.jpg

若注册成功则会返回SUCCESS

人脸搜索

查找一张未知的图片上的已注册的人脸。

展开人脸相关 | API

调用人脸搜索接口。

示例如下

openKey用户openKey
img图片(支持base64或网络图片链接)

https://tva1.sinaimg.cn/large/006tNbRwgy1gaxhd060jtj313w0nxabx.jpg

调用该接口会返回一个数组:

https://tva1.sinaimg.cn/large/006tNbRwgy1gaxhejmlrdj313w0ffwfz.jpg

会返回该图片上以及注册过的人脸的标签、该标签就是人脸注册时的personTag


全部评论: 0

    我有话说: