有一个长期的争论,关于是否深度学习算法是更优于基于一些领域知识自定义算法。最近在计算机视觉和语音识别方面的研究已经超过了许多这样的算法。我对深度学习的能力毫不怀疑,然而,很说,建立一个良好的自定义算法和建立一个好的神经网络是多么困难的事情。我刚才所描述的单一规则算法是非常简单的,与一个真实的系统还非常遥远,然而,建立这个简单的算法只用了一个下午就击败了我用了一个月的时间去理解的东西。这并不是任何一个对辩论的决定性答案,但让我想知道,如果自定义算法是准备被深层次学习所取代。自定义算法不仅是好,在以前的文章中也表示他们也会让你完全理解内部发生的事,无价的感觉。
这是一个出于绝望和好奇的实验,它从来不是要否认或批判深层次学习的力量。在某个特定的时刻,所有的意见都会被感受到,也许会改变我的旅程的诅咒,在这个旅程中我打算建立一个深度学习和一个自定义的面部表情分类。
维多利亚孔特雷拉斯弗洛雷斯从惊人的工具artnatomy得到图1和图2(2005)
上 一篇中我们对训练数据做了一些预处理,检测出人脸并保存在\pic\color\x文件夹下(x=1,2,3,...类别号),本训练和识别。为了识 别,首先将人脸训练数据 转为灰度、对齐、归一化,再放入分类器(EigenFaceRecognizer),最后用训练出的model进行predict。
-----------------------------------------
环境:vs2010+opencv 2.4.6.0
特征:eigenface
Input:一个人脸,15个人,每人20个样本(左右)。
Output:人脸检测,并识别出每张检测到的人脸。
-----------------------------------------
1. 为训练数据预处理(转为灰度、对齐、归一化)
转为灰度和对齐是后面做训练时EigenFaceRecognizer的要求;
归一化是防止光照带来的影响
void resizeandtogray(char* dir,int k, vector<Mat> &images, vector<int> &labels,
vector<Mat> &testimages, vector<int> &testlabels);
voidresizeandtogray(char*dir,intK,vector<Mat>&images,vector<int>&labels,
vector<Mat>&testimages,vector<int>&testlabels)
{
IplImage*standard=cvLoadImage("D:\\privacy\\picture\\photo\\2.jpg",CV_LOAD_IMAGE_GRAYSCALE);
stringcur_dir;
charid[5];
inti,j;
for(inti=1;i<=K;i++)
{
cur_dir=dir;
cur_dir.append("gray\\");
_itoa(i,id,10);
cur_dir.append(id);
constchar*dd=cur_dir.c_str();
CStatDirstatdir;
if(!statdir.SetInitDir(dd))
{
puts("Dirnotexist");
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-22609-15.html
听说大多都是在威海卫港区里被人家炸成的
你是最棒的
期待烊烊