机器视觉及图像处理系列之二(C++,VS2015)——图像级的人脸识别(1)

      接上一篇,一切顺利的话,你从github上clone下来的整个工程应该已经成功编译并生成dll和exe文件了;同时,ImageMagic程序亦能够打开并编辑图像了,如此,证明接下来的操练你不会有任何障碍。开篇序文已经说过,工具库缘起人脸识别。我开博后的第一个系列讲了TensorFlow下的人脸识别,写完之后就觉得方向错了,那个系列采用的方案其实更适合物体检测、分类,而不是人脸识别。所以,基于历史原因,我决定这个系列还是从人脸识别开始,让诸君看看改进后的方案到底是怎样的。首先声明,改进后的方案参考了如下一篇博文:

https://blog.csdn.net/mr_curry/article/details/52443126

方案的基本原理及核心算法参照该博文实现,并不是本人原创,要感谢该篇博文的作者只不过有些遗憾的是,该作者并没有在blog上提供完整代码(少了一个函数),且提供的代码亦存在些许错误;同时,对同一张图片的多次预测其结果并不一致,存在计算结果溢出的情形。虽如此,但还是要感谢博文作者,核心算法很明了,且有效,再次感谢!我在原文的核心算法基础上,按照我自己的设计原则做了重构和编码,除了算法原理,代码和结构与原文完全不同,请诸君注意

      我自己的学习习惯是——先看效果,然后再决定是否跟进研究此项技术,我想诸君大抵以如此。故,我们先运行一下程序看看效果如何。事先声明,如果你在接下来的操作中出现任何问题,请回头阅读该系列第一篇文章,确定完全达成第一篇的目标后再来这里。前文已经说过,EXE工程“WhoYouAre”即为图像级的人脸识别应用,因此,你应当在工程的输出目录“MachineVisionLib\x64\bin”下看到该应用程序的可执行文件:“WhoYouAre.exe”,如下图:

在该文件夹空白处,按住键盘“Shift”键不要松开,然后鼠标右键菜单选择“在此处打开命令窗口(W)”,如此,我们进入windows控制台:

为了将来能够看到完整的控制台输出信息,建议你鼠标左键点击控制台窗口左上角的图标,在弹出的菜单中打开“属性”窗口,将控制台“布局”设置大一些,最好能够占满整个屏幕,这样你才能看到完整的程序输出信息。设置完毕后,请在控制台输入:

WhoYouAre

控制台会输出该程序的Usage信息:

看着有很多选择,其实就人脸注册和人脸识别两项功能而已。这么多的选择只是为了编码方便,因为视频文件、视频流和图像(照片)在实际处理上均有些许不同,需要单独处理,所以选择看起来就比较多了:

                                     WhoYouAre.exe add 使用照片注册人脸

                               WhoYouAre.exe predict 使用照片进行预测,控制台输出预测结果(人名和概率)

                        WhoYouAre.exe ocvcamera 通过捕获USB/WEB摄像头的实时视频进行人脸识别,参数值为摄像头序号,可以不指定,默认值为0,程序会自动检测人脸并给出预测结果,播放器为OCV自带播放器,其实就是ffmpeg

                            WhoYouAre.exe ocvvideo 通过视频流进行预测,参数值为视频地址,可以是本地的视频文件:avi、mp4等,也可以是rtsp实施视频流地址,播放器依然是OCV自带播放器

     WhoYouAre.exe vlcvideo_rtsp_predict 通过捕获rtsp实时视频进行人脸识别,参数值为rtsp地址,播放器为libvlc播放器

              WhoYouAre.exe vlcvideo_predict 通过本地视频文件进行人脸识别,参数值为本地视频文件名

WhoYouAre.exe vlcvideo_rtsp_catchface 通过rtsp视频流检测人脸并注册到人脸库,参数值为rtsp视频流地址

         WhoYouAre.exe vlcvideo_catchface 通过本地视频文件检测人脸并注册到人脸库,参数值为本地视频文件名

这些选项中,几个视频预测选项在CPU模式下存在卡顿、掉帧的问题,主要是因为人脸检测与识别处理花费了太长的时间;GPU模式下,GTX 1050Ti显卡加速测试,帧率(FPS)高于15帧时视频播放开始呈现太空漫步状态,动作明显变慢,识别性能同样表现不佳。至于时间到底耗费在了哪些处理上,我会在后面的篇幅中详细讲解,让我们先看看图片预测的效果。

猜你喜欢

转载自www.cnblogs.com/neo-T/p/MVLib-2.html