之前一篇笔记《使用Face_recognition截取人脸与人像比对》中介绍使用Face_recognition来裁剪人像,人证比对这样的功能
遗留了一点部署问题,离线部署比较麻烦,打包成独立的程序,在不同系统下也不太好用,用Docker部署就方便多了
Github -> fr-compare
# 构建镜像
sudo docker build -t fr-compare:2.0.0 .
# 启动容器
sudo docker run --restart=always --name fr-compare -d -p 8726:8726 fr-compare:2.0.0
访问http://0.0.0.0:8726, 页面输出
{"code":200,"message":"face_recognition server 2.0"}
裁剪
http://0.0.0.0:8726/detect (POST)
请求头
'Content-Type': 'application/json'
请求体
{
"b64_image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQEC..."
}
回复内容
{
"b64_image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQEC...", "message": "success"
}
返回的 b64_image 为裁剪后的头像数据, message 为 "succcess" 时为截取头像成功, 否则为报错信息并且b64_image 为空字符串
比对
http://0.0.0.0:8722/detect (POST)
请求头
'Content-Type': 'application/json'
请求体
{
"b64_image_01": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQEC...",
"b64_image_02": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQEC..."
}
回复内容
{
"message": "ok",
"distance": 56.84
}
distance 值越高,两张照片为一个人的概率越大
补充
可以使用docker命令操作容器
# 进入容器
docker exec -it fr-compare /bin/sh
# 查询应用状态(容器基于pm2构建)
docker exec -it fr-compare pm2 list
# 关闭容器
docker stop fr-compare
离线部署
使用build-image.sh
脚本可以构建/导出镜像并压缩打包
使用deploy.sh
脚本可以解包导入镜像并启动容器