这个暑假我有幸参与了一个人脸识别开发项目,当然中途遇上很多问题,于是把我们遇上的比较难以解决的问题记录下来,希望能帮助到大家。(代码我就不放了,网上很多,首次在CSDN上撰写博客,请多多指教)
-
人脸识别工程简介
我的人脸识别工程是以python为核心语言,调用opencv等相关库,在用户交互界面上采用qt5做ui,在app实现上先编写服务器脚本,再用PWA来写的用户app,最后再弄下端口就完了。 -
步骤简述
一开始你要先把软件啥的装好,比如说pycharm,qt5,anaconda等等,环境和库配好,具体到每个库网上都有教程,我最经常用的是pip的方法。
然后就是库的调用,以opencv为例子,你可以去网上找相关的开发文档,如果不知道怎么下手,最快的是去github找相关开源,看看别人的逻辑如何,对照开发文档你会有入门的很快的
之后你可以开发一个用户交互界面来提升用户体验,一般用的都是qt,你可以用qt creator来创建和编辑交互界面,再在脚本引入qt库写结构体和你编辑设立的界面进行链接,实现交互的功能。
关于服务器程序,一般用js编写,但需要注意的是你需要租用一个服务器,服务器程序一般大同小异,你甚至可以查找网上已经有的。
关于app,鉴于本人没有学过android或者ios,所以我只写了个网页,然后用PWA的方式做出app的感觉,大神可以自己直接上手android,当你的人脸识别已经成熟落地,比如说已经可以当做一个人脸识别签到系统来用的话。
- 值得提出来的几个点
在你的人脸识别工程中,可以增加直方图均衡化的功能,直方图均衡化的作用是提高图片的对比度,这样有利于opencv自带的人间检测模型提取出来人脸特征,可以去除一些环境因素,比如说光线问题。
即使你已经用了直方图均衡化进行对比度的调整,环境对人脸图片的影响依旧是很大,所以这样会出现一个问题,当你只在一个环境进行人脸数据采样的话,你买当前的环境里进行识别检测出来的识别率是的却很高,不过当你换了个环境,比如窗边造成你的脸一半亮的一半暗的,或者太阳下的你和室内的你又不一样,所以这个问题最好的解决方法就是多环境采样再进行训练,而且数据一定要适合,不能太少也不要过多,不然会出现过拟合的问题。
目前我就先更到这里,如果还有不懂的欢迎与我讨论。