人脸识别博客整理及学习建议

一、前言

之前基于OpenCV断断续续写了几篇关于人脸识别的博客。最开始是写了三篇一系列整套的流程。后来由于问问题的人太多,就又针对一些问题写了些东西,后来OpenCV3出来之后把程序又改成了OpenCV3版本。并且把程序修改的极其容易上手运行,我觉得改的不能更简单了,因为配置好之后其实修改下路径只需要点运行就差不多了。再后来,OpenCV3.3出来之后,人脸识别模块的API发生了变化,于是继续写出来通知大家。但是由于很多人看博客的时候只是看了最初的三篇,而且有些人没有看完之后再去看作者其他文章的习惯,所以会问一些已经解决的问题。本文中我把所有的有用的文章整合起来,以方便大家查阅。

二、经常需要解释的东西

  1. OpenCV先有的三种人脸识别方法是非常经典但是也是非常传统的基于特征的方法,这就意味着,它的正确率不会太高,而且对于场景要求比较严格。说白了,OpenCV的人脸识别程序仅仅能够满足大家的学习需要,能够让大家知道做人脸识别的流程和框架。如果真要做考勤系统或者说人脸识别打卡这些商用的或者产品级东西,光靠本博客的内容是远远不够的。还需要在这个框架下做许多细节优化的东西。当然,真正需要做产品的人估计也不会来我这里看OpenCV学习的内容了。本博客只保证在同一场景下(训练图片和测试图片在同一场景)有较好的识别率。如果还要深入研究的朋友,请学习了传统方法之后,继续研究基于深度学习的方法。
  2. OpenCV2、3、3.3人脸识别部分的API均有所变化,如果遇到不能识别人脸识别模块某些函数(只是某些不是所有,不然就是配置问题了)的问题,应该根据自己配置的OpenCV版本,查看本版本的API,然后修改我的代码。
  3. OpenCV一定要配置编译了contrib模块的,配置的时候记得添加环境变量,最后重启电脑。

三、人脸识别系列博客整理

Visual Studio 2015一分钟配置opencv及CMake编译OpenCV3.1(含opencv-contrib)


OpenCV实践之路——人脸识别之一数据收集和预处理


OpenCV实践之路——人脸识别之二模型训练


OpenCV实践之路——人脸识别之三识别自己的脸


OpenCV之识别自己的脸——C++源码放送


人脸识别源码运行指南


OpenCV3.3人脸识别模块的API的变化



四、下面的话适合运行成功之后再看

  1. 常言道,授之以鱼不如授之以渔,希望大家能在本系列学习的过程中学习到一些属于自己的东西,而不是仅仅是能够运行成功别人的程序。
  2. 学习别人的程序的一种好方法是自己再敲一遍,很多直接运行的时候遇到的问题,也许再敲一遍之后,就不再是问题了。
  3. 而且,本文提供的方法参考的是OpenCV官方教程中的方法,这种方法我认为是不太友好的,毕竟里面用到了Python脚本和at.txt这种东西,我觉得这些东西都是非必要的,完全可以用C++程序完成Python和at.txt的功能。实际上,我也这么尝试了,完全是可行的,纯C++程序,无需Python和at.txt这种不太友好的东西。大家可以学习完之后把这个当成一个练习来做。而且里面用到的相关技术我也已经发到博客里了。这个我就不喂到嘴里了,感兴趣的可以自己找找。
  4. 如果你真的做了以上工作还有兴趣的话,我推荐你去深入了解下OpenCV人脸识别几种方法的原理,然后去读OpenCV人脸识别部分的源代码。
  5. 如果你真的做了以上工作还有兴趣,我推荐你摆脱OpenCV的contrib模块,自己重新实现一个人脸识别模块出来。实现的时候可以尝试不同的方法,比如尝试不同的特征,尝试不同的相似性度量方法,或者尝试不同的框架,比如LBP+SVM。笔者读完源码之后,基于源码尝试重新实现了LBP人脸识别方法,然后又尝试了LBP+SVM进行人脸识别。对于人脸识别以及其他任何东西的识别方法都有了更深的理解。
  6. 如果你的研究课题或者工作内容就是人脸识别,那么肯定的,你需要转向深度学习进行人脸识别方法了。这个由于我的研究方向不是这个,研究不深,只是指个方向。
  7. 现在事情太多时间紧张,很多东西暂时没时间写出来。以后有时间的话再说。

五、欢迎关注公众号和知识星球

公众号首发博客文章。

这里写图片描述


知识星球我自己平时遇到不足以成文的小问题解答和我平时学习的时候遇到的好的资料。

这里写图片描述

已标记关键词 清除标记
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质? 你是否想成为一名资深开发人员,想开发别人做不了的高性能程序? 你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹?   那么C++就是你个人能力提升,职业之路进阶的不二之选。 【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。 2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。 3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。 【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署; 2.吊打一切关于C++的笔试面试题; 3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。 【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块 基础篇 本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。 进阶篇 本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。 提升篇: 本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页