python3.6+opencv+keras等人脸识别匹配初探

emmm,心血来潮,搞一下子。

参考链接:感谢前辈大佬们的带路!

https://www.jianshu.com/p/d4a924c97416

https://www.cnblogs.com/ylzj/p/8043120.html

很喜欢文章中的一句话:如果要真正理解一个东西,我们必须要能够把它创造出来。

扫盲:

运用的技术有opencv(摄像头、图片处理),numpy(图片数字化),os(文件的操作和处理),keras(构建神经网络进行图像识别)。

Anaconda是一个免费且易于使用的科学Python环境。Conda使安装,运行和升级学习环境(如Scikit-learn,TensorFlow和SciPy)变得简单快捷。

运行环境:

Win10 x64、Anaconda3-5.0.0集成了Python 3.6.2 :: Anaconda custom (64-bit)

环境配置

Anaconda下载https://www.anaconda.com/download/

安装好后cmd下用python –version查看能执行吗,没有就自己添加环境变量(根据自己路径修改)

使用Anaconda,安装好必要的科学计算包

权限不够请以管理员身份运行

下载大佬的代码:https://github.com/jerry1900/faceRecognition

其实大佬的代码很棒棒了,你需要的是自己来debug

相关报错处理

为啥要把报错写在前头,既然这坑我踩过了,就告诉你这有坑,你掉进去了蹦出来的也快。。

报错1:unicodeescape’ codec can’t decode bytes in position XXX: truncated

图片路径可能写的有问题,window 读取文件可以用\,但是在字符串中\是被当作转义字符来使用,例如\t可能就转义成tab键了。参考https://blog.csdn.net/u011242657/article/details/64437612

报错2:ascade.detectMultiScale error

识别要用到分类器文档,把path写对就好了,下载地址https://github.com/opencv/opencv/tree/master/data/haarcascades

获得训练数据集

这里我是用的另一位大佬的代码,稍作修改,大佬文章链接 https://www.cnblogs.com/ylzj/p/8116705.html

第11行请下载分类器放到运行目录,参见上边报错2

 

保存运行这个py文件会打开摄像头,自动捕获裁剪成128*128的灰度图片,退出请按q,不然会一直保存下去。

可以修改下路径多获取几个人的进行训练。

构建模型和进行模型训练

train_model.py

keras的后台引擎,三种后端TensorFlow、theano、cntk。

这里源教程用的theano,keras默认后端是tensorflow,我没作修改用的tensorflow.

我修改的是train_model.py的第64行,loss把 categorical_crossentropy修改成了squared_hinge,不然报错训练不通过。

生成的模型model.h5有98.4MB

打开摄像头验证模型效果

打开read_camera.py

请注意你的self.img_size是否和训练的一致,不然报错

按照国际标准这里应该放一张图的

python3.6+opencv+keras等人脸识别匹配初探


总结

原作者万壑说到,模型有过拟合的问题。在训练的时候如果epoch太高,会发现accuray虽然逐步提高甚至到达95%以上,但是实际test的准确度要比training的时候低很多,这个就说明模型出现了过拟合的问题。解决办法,增加样本类别和样本数,这个需要花费很多功夫;调整模型,但是在样本数量比较小的时候不是很显著。

另外放上我修改后使用的代码吧,里边改成了相对路径。点这下载–>faceRecognition

再次感谢前辈的踩坑带路。

 

转载请注明原作者,如果你觉得文章对你有帮助或启发,也可以来请我喝咖啡

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注