人脸识别 face detect & recognize
前言
最近有一个项目要升级. 它是一个在线教育的 web app. 由于学生年龄小, 不适合用 username/password 这种方式做登入.
所以项目开始之初是使用 RFID 来登入的. 但由于疫情影响, 学生自家的平板电脑无法扫描 RFID.
曾想改用 QR code 但是后来觉得如果可以使用人脸识别体验会更好一些.
人脸识别自然不可能自己去实现, 所以找了一些方案.
Azure
Azure 提供的人脸识别服务叫 Face API, 给它 2 张图, 它会告诉你相似度. 1000 次访问 MYR 5.00
由于它是 web service 需要一直发 api 传图片, 所以速度不是很快体验自然也不顺畅.
face-api.js
face-api.js, 这个库可厉害了. 它基于 Google 的 tensorflow.js. 它可以在 node.js 跑, 也可以在游览器上跑.
这个库提供人从图片获取人脸的功能, 也提供了对比相似度的功能.
它可以在游览器上跑不需要往返传图片, 速度自然快了, 体验也好了.
具体实现看这一篇: face-api.js 学习笔记
用于登入需要注意的事:
流程是这样的:
用户点击 Login by Face ID
打开摄像头, 识别人脸位置.
从 local storage 获取用户 Id, 然后去服务端获取用户的人脸图 (由于用户太多了,总不能把所有用户的图都调出来对比)
对比人脸图. 如果失败就 error
成功就发图片发送到服务器 (我们不能只在前端检查, 因为做登入,为了安全还是得让后端来把关, 都一次对比)
成功后就可以让用户登入了.
人脸识别 face detect & recognize的更多相关文章
- Python 3 利用 Dlib 19.7 实现摄像头人脸识别
0.引言 利用python开发,借助Dlib库捕获摄像头中的人脸,提取人脸特征,通过计算欧氏距离来和预存的人脸特征进行对比,达到人脸识别的目的: 可以自动从摄像头中抠取人脸图片存储到本地: 根据抠取的 ...
- 人脸识别引擎SeetaFaceEngine中Identification模块使用的测试代码
人脸识别引擎SeetaFaceEngine中Identification模块用于比较两幅人脸图像的相似度,以下是测试代码: int test_recognize() { const std::stri ...
- Microsoft.Baidu.Ali.语音识别/人脸识别
在第一篇博客里提过图片识别的底层.最精准的图片识别需要海量的数据磨炼.自己写的底层没有以亿为单位的数据支持其实也是个残废品. 此篇不是为了教学.而且在需要的时候抄下来就能用 在此介绍Microsoft ...
- 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn
https://www.cnblogs.com/31415926535x/p/11001669.html 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn ...
- 基于opencv的人脸识别程序
1. 解析opencv自带人脸识别源码(……/opencv-3.1.0/samples/cpp/facedetect.cpp) @ 操作系统:Ubuntu 15.04 OpenCV版本:3.1.0 # ...
- 手把手 Golang 实现静态图像与视频流人脸识别
说起人脸识别,大家首先想到的实现方式应该是 Python 去做相关的处理,因为相关的机器学习框架,库都已经封装得比较好了.但是我们今天讨论的实现方式换成 Golang,利用 Golang 去做静态图像 ...
- AI(二):人脸识别
微软提供的人脸识别服务可检测图片中一个或者多个人脸,并为人脸标记出边框,同时还可获得基于机器学习技术做出的面部特征预测.可支持的人脸功能有:年龄.性别.头部姿态.微笑检测.胡须检测以及27个面部重要特 ...
- 基于安卓高仿how-old.net实现人脸识别估算年龄与性别
前几段微软推出的大数据人脸识别年龄应用how-old.net在微博火了一把,它可以通过照片快速获得照片上人物的年龄,系统会对瞳孔.眼角.鼻子等27个“面部地标点"展开分析,进而得出你的“颜龄 ...
- Android 使用FACE++架构包实现人脸识别
今天给大家带来一个通过使用Face++来实现人脸识别的功能. 我们先去这个Face++官网看看:http://www.faceplusplus.com.cn 我们点开案例可以看到众多我们熟知的软件都是 ...
- opencv face-detection 代码分析 (1)人脸识别后的数据
2014,3,16 老师的工作建议如下: 1. 与四民沟通下,把openCV这边的源代码和调用接口发给四民同时抄送给我. 2. 根据openCV的实时检测结果,实现对屏幕的调整(下周一前基本实 ...
随机推荐
- 重写Save()的两种方法
# 重新Save()def save(self, force_insert=False, force_update=False, using=None, update_fields=None): su ...
- IDEA整合Spring+Struts+Hibernate项目
新手使用idea整合Spring+Struts+Hibernate项目 项目所需jar下载: https://download.csdn.net/download/weixin_44906002/12 ...
- 使用maven搭建父工程与子工程
父/子工程的作用: 1.依赖管理 2.配置信息共享 3.模块化 4.版本控制 5.提高重用性可维护性 什么是dependencyManagement: maven中的一个元素,用于集中管理项目中的依赖 ...
- elasticsearch初步使用学习
通过使用elasticsearch,我们可以加快搜索时间(直接使用SQL的模糊查询搜索耗时会比较久,而且elasticsearch的响应耗时与数据量关系不大) es主要用于存储,计算,搜索数据 依次部 ...
- 2023/4/21 SCRUM个人博客
1.我昨天的任务 学习信号和槽的定义并完善UI界面的基础知识 2.遇到了什么困难 难以理解design的设计理念 3.我今天的任务 学习如何使用QTdesign,并完善UI
- 03 OLED显示屏实现
目录 前言 一.软件模拟IIC协议 1.开启IIC协议 2.结束IIC协议 3.传输数据 二.OLED的操作 1.传输数据的准备 2.写入命令 3.写入数据 4.初始化函数 5.设置光标 6.显示字符 ...
- 9、SpringMVC之处理静态资源
9.1.环境搭建 9.1.1.在project创建新module 9.1.2.选择maven 9.1.3.设置module名称和路径 9.1.4.module初始状态 9.1.5.配置打包方式和引入依 ...
- 家中局域网搭建nas后的一些体验 —— NAS的速率究竟如何计算
NAS局域网,使用的路由器的有线端口为1000Mbps,无线WiFi速率860Mbps,不过由于不知道是不是因为电脑WiFi接收器型号老旧还是路由器WiFi协议或天线老旧(电脑和路由器均不支持WiFi ...
- 模拟实现FutureTask
1.背景 面试官问,,假设让你编写一个FutureTask,你的思路是..... 2.代码 2.1.GuardedObject对象 package com.common; /** * @author ...
- selenium复习之---原理+基础用法
简介 1.是什么 selenium是用来进行页面元素定位的第三方库,用来进行web自动化测试的工具,可以直接运行在浏览器中. 2.原理: selenium在工作过程中有三个角色,selenium客户端 ...