Face_recognition与Docker部署

Published: 2018-12-21

Tags: Python

本文总阅读量

之前一篇笔记《使用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脚本可以解包导入镜像并启动容器