百度人脸识别私有化部署流程

按照百度官方的文档部署私有化人脸识别服务器的过程中碰到了很多坑,在此整理记录一下。

环境

  • 操作系统: centos 7.2 (或者ubuntu,版本号尽量和官方一致)
  • GPU : Nvidia GTX 1070 (官方建议使用特斯拉系列的卡, 因为手头上只有1070,所以凑活拿过来也能用。但是服务跑起来之后会有显存泄露的问题,不知道是不是因为用了GTX显卡导致的)
  • CPU : E5-2620V4 * 2 ,总计16核32线程
  • 内存 :约200G
  • 硬盘 :128GB ssd + 3TB hdd

需要注意的是,硬件一旦组装完成,不可以再更改, 否则会影响鉴权,需要重新获取授权。重装系统并不会影响鉴权,部署的时候如果出现什么问题,可以随时重装。

安装操作系统

因为在部署百度人脸识别服务的时候会用到各种各样的命令,所以安装linux的时候尽量将各种自带的组件都勾选一下。我安装centos 7.2的时候, 选择的是server版不带GUI, 勾选了全部的开发组件(初次安装的时候什么都没勾选,连个gcc都没有,因此部署的时候遇到了一些问题)
安装完操作系统之后,需要再确认一下这几个命令是否可用: wget, lspci, netstat,
如果不可用,需要安装一下:

yum install wget			//安装wget
yum install pciutils		//安装lspci
yum install net-tools	//安装net-tools

尤其是netstat这个命令,服务器部署完了之后会自动调用这个命令检查服务是否启动,如果没有这个命令则会卡住,当初因为这个问题折腾了好长时间。

指纹采集

准备好服务器后,需要采集机器指纹,然后拿着指纹去跟百度那边获取授权文件。
采集指纹之前,要先给服务器配置好一个固定的ip,采集之后不可变更ip!
具体采集过程比较简单,可以参考官方文档即可。
采集指纹之后,更换(添加、移除)硬件会导致指纹发生变化,需要重新采集。

安装服务

拿到部署包,解压之后是这个样子的?
在这里插入图片描述
部署之前需要运行download.bat或者download.sh下载一些安装包, 如果服务器可以通外网的话,建议在服务器环境下运行download.sh来下载环境, 否则就在可以通外网的机器上运行download.bat然后再一起上传到服务器。 需要下载的文件比较大,建议挑选一个较好的网络环境进行下载,我公司这边100M/S的下载速度都要下个好一会。

下载完成后,进入/package/Install文件夹下,执行 python install.py inall命令开始部署。
接下来就有一些比较坑的地方了:

  • 如果是初次运行的话,刚开始安装一会可能会自动终止,提示有某个服务(具体我也忘记是哪个服务了)正在运行,安装进程已经帮你结束了这个服务,需要你手动重启一下服务器。 这时候按照提示,reboot重启服务器后重新执行python install.py inall 命令即可
  • 一切正常的话到后边会提示输入一个端口号和两个ip, 端口的话用默认的就行, ip在填写的时候一定要注意, mysql的ip填写127.0.0.1(跟提示的一样), 授权服务器如果是本机的话,ip不可以填写127.0.0.1,需要填写服务器的固定IP, 比如我给服务器设置的固定ip是192.168.14.48
  • 安装到最后如果卡住好长时间的话, 可能是netstate命令, 需要安装命令后重新运行install.py
  • 安装过程中可以用ctrl+c中止安装, 再次安装的时候会自动跳过已安装的部分。

验证安装

  • 安装结束后, docker ps -a 可以查看服务所在的容器
  • 使用docker exec -it (dockerID) /bin/bash 进入容器
  • 在容器中 cd /home/idl-face/testtoll/
  • 测试接口: /home/idl-face/odp/php/bin/php FaceApiV3Test.php 127.0.0.1 8300 (注意ip和端口号中间是空格)

测试接口没啥问题,就代表部署成功了。(退出docker 按ctrl+d即可)

重启服务器后怎么办

重启服务器需要重新开一下服务,具体操作如下:

cd /home/baidu/work/license-server/start
sh license-server			//启动授权服务器
systemctl restart docker 	//重启docker

其他需要注意的几个地方

  • 使用人脸对比api的时候, 识别率与摄像头和分辨率有很大关系,建议使用较好的摄像头来采集图像。
  • 服务器运行一段时间后,请求接口返回 system busy的错误信息, 有可能是因为服务器硬盘不够用了(被日志占满),可以检查一下docker容器所占用的分区是否已满
  • 接上一条,开头也提高过,GTX显卡因为驱动的问题,可能会导致显存泄露,导致硬盘很快被占满。解决办法:进入容器,然后进入/home/idl-face/feature-frame文件夹,检查一下这个文件夹里边是否有.core结尾的文件,这些文件通常一个就占用4G左右的空间,可以直接删除掉。(删掉core文件不需要重启服务器,对正常运行的服务不会产生影响。)
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值