人脸识别学习(毕业设计)
前言 <@_@>
由于学校毕设要求,所以有人脸识别这方面技术知识的学习需求,故写此博客,一为记忆,二为分享。(事实上,我也只能随缘记录几个记得的问题)
一、数据集来源
参考:飘零_未知的坚持主要是由于这博客带了百度网盘的下载,官网下载太慢了。
二、vue-cli链接数据库
参考:小江_
问题一:vue-cli所创建的项目无config文件
问题二:vue-cli在与数据库链接中报错 error:1146
三、鸽了
内什么......很尴尬,这篇博客本来目的是为了想记录一下我在实现毕业设计的过程中的若干坑,避免再次碰上。然后由于不断地做毕设、做毕设、做毕设、写论文、改论文、改论文、写PPT、答辩道歉、改材料的的事情下.......等我回过头来记起这玩意儿的时候,离我创建它已经过去了将近半年.......也是,挺离谱的╮(╯-╰)╭。所以......后面的内容就简单讲讲实现结构以及一些看的文档吧(天知道我能记起多少)
前后端以及人脸识别功能的技术选取
前端方面使用vue-cli作为主体框架,添加vuex进行内部的跨页数据传输,添加router进行单页面路由配置,添加elementUI作为UI框架,添加axios代替ajax作为向后端接受与发起请求的工具。
后端方面则主要是python写的方法,交由flask封装为API给前端调用(这里可以用Django进行替换,前者只是一个小型的轻量级框架)
人脸识别方面......额.....就有些......菜了,所以...以下言论都仅为个人理解。○| ̄|_
首先数据来源我就不再说了,值得一提的是现在的已有模型大多是对224×224×3大小的图片来进行训练的,而最早的letNet-5的算法是对124×124×1的大小图片进行训练。(224×224×3代表224×224的彩色图片,×1代表灰度图片)
其次在手动获取人脸图片以及最后识别的时候有个步骤,叫做人脸检测。(这个玩意在我答辩的时候因为太紧张没听出来,一直以为老师说的是人脸识别,差点给怼死,哭辽(┬┬﹏┬┬))这一步可以通过OpenCV或者是Dlib来实现,我这里用的是OpenCV。当然,百度阿里什么的好像也有这类功能,可以试试。
在图片使用之前还有个步骤,数据增强,也就是将数据集进行扩充。在网络上的方法有旋转、平移、拉伸、噪声化等等。然而事实上,在我学习后(被怼后)了解到,对于人脸识别的话可能除了亮度以及翻转以外的数据增强手段对于人脸识别并没有太大的帮助(对人脸检测模型可能更有帮助)
然后嘛,图片有了,下一步就是训练了。这方面我用的是卷积神经网络(如果是临近毕设的小伙伴,在写论文的时候请务必多用几个模型尝试对比o(TヘTo),要不然你就会知道被怼得体无完肤是什么感觉。)卷积神经网络旗下有很多个模型LetNet-5、AlexNet、VGG16、ResNet等等都是属于卷积神经网络的模型,他们的不同在与其网络结构的不同。通过调整卷积层、池化层的数量、步幅、大小来寻找最优的神经网络结构。具体的结构构成就自行百度吧,以AlexNet为例可以参考这篇博客初探Alexnet网络结构。若是对比模型应以SVM、DNN等为对比(别问我为什么只说这些,你以为我为啥会提醒这个(ㄒoㄒ)~~)
接下来在训练给过程中进行参数调优,这个方面因为我只用的API,所以直接看官方文档Keras结合参考一些博客就好了。Keras是Tensorflow下的简化API,此外还有一些框架大佬们还请自行查询。(能手搓的算法大佬应该也不可能看到这儿)
最后就是收尾的应用了,识别和之前的人脸检测一样,无非加一个返回姓名的API。但是网页搞实时视频流的话应该还需要用到websocktet,很明显,我没用上。(是因为答辩结束了嘛,不,是因为没学会ㄟ( ▔, ▔ )ㄏ)。此外网页的话opencv有个js版本可能有帮助OpenCV.js
四、最后的最后
其他的以我这贫瘠的记忆力也想不起来了,这边就附上这个的Github吧,老拼接怪了。vue-python-flask-mysql-face。还有我在此期间做的一个思维导图。