25、基于FaceNet的实时人脸识别系统搭建指南

基于FaceNet的实时人脸识别系统搭建指南

1. 三元组选择

在理想情况下,我们选择三元组时应使 $||f(x_i^a) - f(x_i^p)||_2^2$ 最小,同时使 $||f(x_i^a) - f(x_i^n)||_2^2$ 最大。不过,要在所有数据集上计算这两个最值可能并不可行。所以,我们需要一种能高效计算距离最值的方法。这种计算可以离线完成后再输入到算法中,也可以通过某些算法在线确定。

在线方法中,我们将嵌入向量划分为小批量。每个小批量包含一小部分正样本和一些随机选择的负样本。FaceNet的发明者使用的小批量包含40个正样本嵌入和随机选择的负样本嵌入。针对每个小批量计算最小和最大距离,以此创建三元组。

2. 训练人脸识别模型

我们将基于FaceNet训练自己的模型,并构建一个实时人脸识别系统。最流行的基于TensorFlow实现的FaceNet版本之一是David Sandberg的开源版本,可在GitHub(https://github.com/davidsandberg/facenet )上根据MIT许可证免费获取。本文使用的是从原GitHub仓库分叉而来并稍作修改的版本(https://github.com/ansarisam/facenet ),核心神经网络和三元组损失函数的实现未作修改,该版本使用OpenCV来读取和处理图像,同时对一些TensorFlow库函数进行了升级。

为了训练人脸检测模型,我们将使用Google Colab。但要注意,人脸检测模型计算量很大,即使在GPU上训练也可能需要数天时间。而且,Colab会话过期后会丢失所有数据和设置,并非训练长时间运行模型的理想平台。若要训练生产级别的人脸识别模型

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值