Nodejs开发人脸识别系统-教你实现高大上的人工智能

 

一、缘起缘生

前段时间有个H5很火,上传个头像就可以显示自己穿军装的样子,无意中看到了一篇帖子叫 全民刷军装背后的AI技术及简单实现 ,里面提到了百度AI,我自己也试了一下下,效果就酱紫。

当然这个东西并不实用,只是纯粹娱乐而已,但是本人想是否可以通过这个技术,实现那种人脸识别验证,来验证如会议刷脸签到、网站刷脸登录这种高大上的技术。于是说干就干,花了将近一周时间完成了一个初步的DEMO。

二、技术储备

要实现这个系统,本人认为需要涉及到以下技术知识点,这些都是需要提前学习和积累的:

1、Nodejs

2、Express(基于后端开发)

3、Vue-Cli(基于前端开发,Vue的脚手架,没明白为啥叫脚手架o(╯□╰)o )

4、百度AI人脸识别SDK,点击学习地址

不得不说百度AI在人工智能方面确实比其他几个大佬做的厚道,接口全面开放,而且还是免费,人家估计都在起步阶段,而百度已经甩了好几条街。。。

在网上学习了一些资料,尤其是仔细分析了百度SDK以后,接下来就开始开发啦。

三、开发步骤

1、搭建vue-cli脚手架,主要用于快速搭建一个网站,安装方法

2、在router目录中配置index.js页面路由,方便多个页面之间交互,如图:

设置了两个页面

3、新建两个页面到pages目录,其中Home是主页面,用于展示人脸识别;Main为输入页面,用于录入人员信息。

4、导入百度AI的SDK,都放在src目录中,太多了自己看吧,官方文档中有说明

5、制作Home页面,原理主要是设置了一个getVideo方法 开启摄像头 (前提是你的电脑需要有设备),然后通过takePhoto方法获得当前视频中的一帧图片,打印到canvas中(canvas支持打印绘画、图片、视频)。

DOM结构

getVideo方法

6、制作Main页面,这个页面就比较简单啦,只设置了两个输入框和一个上传图片按钮,先凑合着用吧。主要用于人员信息录入,需要先将人员相关信息建立档案,否则无法识别。

7、说了这么一堆,都是前端的东西,那么怎么和 后端实现互通 呢?别急,看看这里先

里面有方法教你怎么去模拟一个接口数据并访问,其他接口也可以这样写,以此类推。

个人理解有个文件很重要,它就是build目录中的webpack.dev.conf.js文件,主要用于开发环境下的所有配置,因此如果 只是开发环境 下,后台访问和配置相关都可以写到这个文件中。

一个接口成型

8、测试调试,经过漫长的开发和排坑,终于有一定的成效啦!

四、发布部署,前端后端,傻傻分不清

在项目测试没问题需要发布的时候,遇到了一个问题,由于发布需要使用npm run build,文件打包好上传到服务器后 所有接口会报错 ,无法正常访问,天啊撸,难道之前做的都是白做的么?后来才发现,Vue-Cli主要还是用于渲染页面的,无法承载搭建后端服务接口,因此之前才会说只能在开发环境下使用。

相信很多新手都会遇到这个问题,前端后端会傻傻分不清,当需要前后端分离的时候,那么如何解决这个问题呢?

这个时候就可以就需要用到express啦,它是基于Node.js 平台的极简、灵活的 web 应用开发框架。而我只是需要搭建一个接口服务,简单几行代码就可以搭建服务了,so easy!!

于是乎新建了一个项目作为服务端,将百度AI的项目独立出来,并建立server.js,把之前写好的方法copy过来即可,如图:

五、快点入坑吧

总结来说这个项目期间还是经历了好多次的纠结,有些问题报错略感奇葩了,但是不解决又觉得不舒服,只能入坑越入越深,如果你也想试试欢迎加入,坑坑更健康。

比如会出现跨域的问题,因为是前后端分离,所以会出现端口号或者地址不一样情况,这样就会出现跨域。解决方法就是验证跨域CORS问题,在server.js文件中设置跨域的访问即可,如图:

六、效果演示

1、信息录入地址(上传一张自拍哟):欢迎进入(进不了可复制链接:https://www.lejuhb.com/myface/#/main )

2、人脸识别地址:欢迎进入(进不了可复制链接:https://www.lejuhb.com/myface/)

注意:必须使用 摄像头和 最新谷歌浏览器 ,如果第一次无法识别,请点击浏览器右上角小图标,点击 加载不安全的脚本 完成,如图:

其实这也是个坑

页面真的很简单吧!

 
 

Nodejs开发人脸识别系统-教你实现高大上的人工智能的更多相关文章

  1. 全栈工程师带你开发 ,node开发人脸识别门禁系统

    效果图:       知识点: 人脸识别SKD部署,  webRTC视频流处理,URL构建blob对象,Canvas映射截图,ajax数据交互,Node图像处理,跨域与413处理,base64解码,p ...

  2. 机器学习实战:用nodejs实现人脸识别

    机器学习实战:用nodejs实现人脸识别   在本文中,我将向你展示如何使用face-recognition.js执行可靠的人脸检测和识别 . 我曾经试图找一个能够精确识别人脸的Node.js库,但是 ...

  3. 人脸识别系统 —— 基于python的人工智能识别核心

    起因 自打用python+django写了一个点菜系统,就一直沉迷python编程.正好前几天公司boss要我研究一下人脸识别,于是我先用python编写了一个人脸识别系统的核心,用于之后的整个系统. ...

  4. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  5. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  6. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【二】人脸预处理

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  7. 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  8. facenet 人脸识别(二)——创建人脸库搭建人脸识别系统

    搭建人脸库 选择的方式是从百度下载明星照片 照片下载,downloadImageByBaidu.py # coding=utf-8 """ 爬取百度图片的高清原图 &qu ...

  9. C++ 人脸识别系统的浅理解

    机器学习 机器学习的目的是把数据转换成信息. 机器学习通过从数据里提取规则或模式来把数据转成信息. 人脸识别 人脸识别通过级联分类器对特征的分级筛选来确定是否是人脸. 每个节点的正确识别率很高,但正确 ...

随机推荐

  1. LoadRunner WebTours无法显示页面

  2. Xiaoguang Tu's Home Page

    Xiaoguang Tu (涂晓光): CV: Ph.D. Candidate of School of Communication and Information Engineering, Univ ...

  3. Python 递归删除非空目录(包括子目录以及文件)

    Python的OS模块自带rmdir和removedirs函数用于删除目录,但是两者都不能删除非空目录,以下代码定义了一个函数 remove_dir 用于删除非空目录. #作者官网 http://ww ...

  4. sqlldr errors

    sqlldr myUser/myPWD@myCONN control='d:/sqlload/new/test/loader1.ctl' errors=1000000

  5. 树莓派与微信公众号对接(python)

    一 内网穿透,让外网可以访问树莓派 二 树莓派对接微信 需要安装webpy和python-lxml git clonegit://github.com/webpy/webpy.git ln -s `p ...

  6. c#程序员机试题

    一.题目: 有一数组: int[] arr = new int[] { 48,1,3,55,15,29,12,33,26,41,56,32}; 1.求出最大值 2.按每个数字的10位数分组(说明:0~ ...

  7. DP Training(Updating)

    感觉前面做了那么多$dp$全是自己想的还是太少啊…… 好像在LZT的博客上看到了不错的资源?赶紧开坑,以一句话题解为主 Codeforces 419B 第一题就开始盗图 由于只有一个交点,手玩一下发现 ...

  8. [CC-SEINC]Sereja and Subsegment Increasings

    [CC-SEINC]Sereja and Subsegment Increasings 题目大意: 有长度为\(n(n\le10^5)\)的序列\(A\)和\(B\). 在一次操作中,可以选择一个区间 ...

  9. C/C++ 之输入输出

    因为C++向下兼容C,所以有多种输入输出的方式,cin/cout十分简洁,但个人觉得不如scanf/printf来的强大,而且在做算法题时,后者运行速度也快些. scanf/printf #inclu ...

  10. hdu 2266 dfs

    题意:在数字之间添加运算符号,使得结果等于题目中要求的Sample Input123456789 321 1Sample Output181 这题虽然看起来比较简单,但是之前和差的状态不太好表示,因此 ...