为人脸识别配置ANN

时间:2013-05-26 22:46:34

标签: visual-studio-2010 neural-network fann

在我提出问题之前,这里是我项目的简短摘要:

  1. 我正在使用OPENCV的内置功能来检测一个面部 凸轮饲料。
  2. 之后我正在处理包含脸部的图像,即 将其转换为灰度,将其大小调整为40X40像素和 均衡其'直方图。
  3. 然后读取图像的像素值,进行标准化(即 除以256,因为FANN使用0到1之间的值,或-1 和1,取决于使用的函数)并保存到数组中 1600个元素。这是神经网络使用的数据。 根据数据,ANN决定面部是否是我的, 未知,或根本不是面子(误报)。
  4. 神经网络然后返回一个包含3个元素的数组,并且 程序通过查找,决定面部属于哪个组 最大。
  5. 问题是,除了非常好的误报检测之外,我的代码给出了相当不准确的结果。

    我的人工神经网络的一些细节。我正在使用doublefann.h。该网络包含1600个输入神经元(显然),3个输出神经元(甚至更多),而单个隐藏层包含1600个神经元,尽管我确实尝试了800-2400范围内的其他值。我正在使用我的20个样本,30个未知面部样本和30个随机背景样本进行训练。我试过RPROP(默认在FANN,似乎大部分时间都适合)和QUICKPROP(在训练时给出漂亮,平滑减少的误差,但结果不准确)训练算法,以及SIGMOID_SYMMETRIC(训练非常快,但往往以MSE的突然下降到接近零值,并且由此产生的网络过度拟合激活功能。我使用MSE和位失败值作为停止的标准。可悲的是,任何给定的组合导致了相当差的人脸识别。

    所以我的问题是,鉴于我所处理的项目和数据的性质,最佳的是什么:

    1. 隐藏神经元的数量
    2. 激活功能
    3. 训练算法
    4. 每组训练样本数量(据说20-30就足够了)
    5. 停止标准
    6. 当然,欢迎任何建议,不需要回答这五个问题中的全部或任何一个。我知道我的问题非常复杂,但我花了很多时间在圈子里跑,厌倦了阅读有关这一主题的文献,而且一些第一手的知识会受到高度赞赏。

0 个答案:

没有答案