DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)

DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)


@author:wepon

@blog:http://blog.csdn.net/u012162613/article/details/43277187


本文代码下载地址:我的github


本文主要讲解将CNN应用于人脸识别的流程,程序基于python+numpy+theano+PIL开发,采用类似LeNet5的CNN模型,应用于olivettifaces人脸数据库,实现人脸识别的功能,模型的误差降到了5%以下。本程序只是个人学习过程的一个toy implement,样本很小,模型随时都会过拟合。

但是,本文意在理清程序开发CNN模型的具体步骤,特别是针对图像识别,从拿到图像数据库,到实现一个针对这个图像数据库的CNN模型,我觉得本文对这些流程的实现具有参考意义。


《本文目录》

一、olivettifaces人脸数据库介绍

二、CNN的基本“构件”(LogisticRegression、HiddenLayer、LeNetConvPoolLayer)

三、组建CNN模型,设置优化算法,应用于Olivetti Faces进行人脸识别

四、训练结果以及参数设置的讨论

五、利用训练好的参数初始化模型

六、一些需要说明的


一、olivettifaces人脸数据库介绍


Olivetti Faces是纽约大学的一个比较小的人脸库,由40个人的400张图片构成,即每个人的人脸图片为10张。每张图片的灰度级为8位,每个像素的灰度大小位于0-255之间,每张图片大小为64×64。如下图,这个图片大小是1190*942,一共有20*20张人脸,故每张人脸大小是(1190/20)*(942/20)即57*47=2679:



本文所用的训练数据就是这张图片,400个样本,40个类别,乍一看样本好像比较小,用CNN效果会好吗?先别下结论,请往下看。

要运行CNN算法,这张图片必须先转化为数组(或者说矩阵),这个用到python的图像库PIL,几行代码就可以搞定,具体的方法我之前刚好写过一篇文章,也是用这张图,考虑到文章冗长,就不复制过来了,链接在此:《利用Python PIL、cPickle读取和保存图像数据库》


训练机器学习算法,我们一般将原始数据分成训练数据(training_set)、验证数据(validation_set)、测试数据(testing_set)。本程序将training_set、validation_set、testing_set分别设置为320、40、40个样本。它们的label为0~39,对应40个不同的人。这部分的代码如下:

"""
加载图像数据的函数,dataset_path即图像olivettifaces的路径
加载olivettifaces后,划分为train_data,valid_data,test_data三个数据集
函数返回train_data,valid_data,test_data以及对应的label
"""
def load_data(dataset_path):
    img = Image.open(dataset_path)
    img_ndarray = numpy.asarray(img, dtype='float64')/256
    faces=numpy
  • 84
    点赞
  • 677
    收藏
    觉得还不错? 一键收藏
  • 104
    评论
基于CNN人脸识别是指使用卷积神经网络CNN)模型来实现人脸识别的功能。在这个过程中,程序使用了Python的numpy、theano和PIL等库,并采用了类似LeNet5的CNN模型。 要进行基于CNN人脸识别,首先需要将人脸图像转化为数组或矩阵的形式。这可以通过使用Python的图像库PIL来实现,只需几行代码就可以完成。具体的方法可以参考之前一篇文章中的说明,该文章提供了读取和保存图像数据库的示例。 通过使用CNN模型进行训练和测试,可以将人脸图像与已知的人脸数据库进行比对,并识别出输入图像中的人脸属于哪个人。基于CNN人脸识别模型在olivettifaces人脸数据库上进行了实验,将模型的误差降到了5%以下。 需要注意的是,这个程序只是作者个人学习过程中的一个玩具实现,样本规模较小,模型可能会过拟合。因此,在实际用中,还需要根据具体情况对模型进行调整和优化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [DeepLearning tutorial(5)CNN卷积神经网络用于人脸识别详细流程+代码实现)](https://blog.csdn.net/u012162613/article/details/43277187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 104
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值