验证人脸识别算法
2017-09-16 21:57
190 查看
序言:博客(http://blog.csdn.net/xingchenbingbuyu/article/details/68482838)提到40行代码进行人脸识别,于是按照这篇博客介绍打流程,我尝试进行重现实验结果。
相关安装过程此处不详细介绍,参见博客1与博客2
。
过程1:为了保证实验结果不受客观环境影响,我尽量使我的环境与原博文中的环境一致。一是文件命名、文件放置位置我都与原博文给出的截图一致。如图1。
二是通过博文中给的测试图片,在网上通过以图搜图的功能分别找到相关的原图,并与原博文图片格式保持一致。如图2。图3。
三是代码直接从原博文Copy复制下来,未做任何改动。此处应注意,python对换行有要求,有时复制粘贴会出现格式混乱,代码无法正常运行,需要自行调整格式。
过程2:完成准备工作后,进入.py目录,运行人脸识别程序。完整结果截图如图4。
人脸识别的结果是“The person is: Unknown2”,这与原博文提到的识别结果是
过程3:从图4截图看出,人脸识别扫描候选人图片顺序是girl6-->girl5--->girl1-->girl2----->girl3--->girl4。而人脸识别程序中候选人名单如下。# 候选人名单
candidate = ['Unknown1','Unknown2','Shishi','Unknown4','Bingbing','Feifei']
对于被测试图片test1,与之对应的候选人图片为girl5,而girl5是第二个扫描的图片,对应程序输出候选人名单数组中第二个元素,也就是“Unknown2”。
也就说原博主的算法并没有错,但是输出结果依赖与候选人图片被扫描顺序。此时我依然是猜测。
为了验证我的猜测,我查看原来的人脸识别程序,发现程序片段for f in glob.glob(os.path.join(faces_folder_path, "*.jpg")):这处在获取候选人图片时可能是依赖于系统。于是我将该程序段换成
Processing file: ../candidate-faces/girl1.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl2.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl3.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl4.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl5.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl6.jpg
Number of faces detected: 1
The person is: Bingbing
果然。输出结果和原博主一致,和我猜测的结果一致。为了进一步验证候选人图片扫描顺序会影响输出结果,我将候选人图片输出顺序改为图4扫描顺序(girl6-->girl5--->girl1-->girl2----->girl3--->girl4)。如下。
#Input file
#candiates = ['girl1.jpg','girl2.jpg','girl3.jpg','girl4.jpg','girl5.jpg','girl6.jpg'];
candiates = ['girl6.jpg','girl5.jpg','girl1.jpg','girl2.jpg','girl3.jpg','girl4.jpg'];
# 3.描述子提取
#for f in glob.glob(os.path.join(faces_folder_path, "*.jpg")):
for f in candiates:
输出结果应为Unkown2。实际输出结果为:Processing file: ../candidate-faces/girl6.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl5.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl1.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl2.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl3.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl4.jpg
Number of faces detected: 1
The person is: Unknown2
实际输出结果和我的猜测结果一致。
最终结论:原博主的人脸识别算法思路上是没有问题的,但是在算法实现上,输出结果依赖于输入文件打扫描顺序这是不合理的。
相关安装过程此处不详细介绍,参见博客1与博客2
。
过程1:为了保证实验结果不受客观环境影响,我尽量使我的环境与原博文中的环境一致。一是文件命名、文件放置位置我都与原博文给出的截图一致。如图1。
二是通过博文中给的测试图片,在网上通过以图搜图的功能分别找到相关的原图,并与原博文图片格式保持一致。如图2。图3。
三是代码直接从原博文Copy复制下来,未做任何改动。此处应注意,python对换行有要求,有时复制粘贴会出现格式混乱,代码无法正常运行,需要自行调整格式。
过程2:完成准备工作后,进入.py目录,运行人脸识别程序。完整结果截图如图4。
人脸识别的结果是“The person is: Unknown2”,这与原博文提到的识别结果是
“The 打person is Bingbing”不一致。
什么会出现结果不一致?是因为人脸识别错误?原博主算法存在问题?于是我进一步设置实验进行验证。
过程3:从图4截图看出,人脸识别扫描候选人图片顺序是girl6-->girl5--->girl1-->girl2----->girl3--->girl4。而人脸识别程序中候选人名单如下。# 候选人名单
candidate = ['Unknown1','Unknown2','Shishi','Unknown4','Bingbing','Feifei']
对于被测试图片test1,与之对应的候选人图片为girl5,而girl5是第二个扫描的图片,对应程序输出候选人名单数组中第二个元素,也就是“Unknown2”。
也就说原博主的算法并没有错,但是输出结果依赖与候选人图片被扫描顺序。此时我依然是猜测。
为了验证我的猜测,我查看原来的人脸识别程序,发现程序片段for f in glob.glob(os.path.join(faces_folder_path, "*.jpg")):这处在获取候选人图片时可能是依赖于系统。于是我将该程序段换成
#Input file candiates = ['girl1.jpg','girl2.jpg','girl3.jpg','girl4.jpg','girl5.jpg','girl6.jpg']; # 3.描述子提取 #for f in glob.glob(os.path.join(faces_folder_path, "*.jpg")): for f in candiates:重新运行程序,将候选人图片按照girl1~ggirl6顺序输入,仍对test1进行识别,猜测输出结果应该为Bingbing,因为此时与test1是同一个人的图片girl5是第五个被扫描的图片,对应候选人名单数组元素为Binbing。实际输出结果为
Processing file: ../candidate-faces/girl1.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl2.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl3.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl4.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl5.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl6.jpg
Number of faces detected: 1
The person is: Bingbing
果然。输出结果和原博主一致,和我猜测的结果一致。为了进一步验证候选人图片扫描顺序会影响输出结果,我将候选人图片输出顺序改为图4扫描顺序(girl6-->girl5--->girl1-->girl2----->girl3--->girl4)。如下。
#Input file
#candiates = ['girl1.jpg','girl2.jpg','girl3.jpg','girl4.jpg','girl5.jpg','girl6.jpg'];
candiates = ['girl6.jpg','girl5.jpg','girl1.jpg','girl2.jpg','girl3.jpg','girl4.jpg'];
# 3.描述子提取
#for f in glob.glob(os.path.join(faces_folder_path, "*.jpg")):
for f in candiates:
输出结果应为Unkown2。实际输出结果为:Processing file: ../candidate-faces/girl6.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl5.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl1.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl2.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl3.jpg
Number of faces detected: 1
Processing file: ../candidate-faces/girl4.jpg
Number of faces detected: 1
The person is: Unknown2
实际输出结果和我的猜测结果一致。
最终结论:原博主的人脸识别算法思路上是没有问题的,但是在算法实现上,输出结果依赖于输入文件打扫描顺序这是不合理的。
相关文章推荐
- 浅谈PHP+MYSQL身份验证的方法
- Email和url的正則表达式验证
- 自己写一个js表单验证框架(转)
- 第11周项目1-验证算法(3)中序线索化二叉树的算法验证
- iOS 手机号和固话验证方法
- jquery正则表达式验证(手机号、身份证号、中文名称)
- 某人在玩游戏的时候输入密码123456后成功进入游戏(输错5次则被强行退出),要求用程序实现密码验证的过程。
- Oracle 9i所有版本的最新下载地址(已验证!)
- js 验证电子邮箱
- 初始化validation验证插件
- 连接数据库与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误,请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。
- SharePoint 验证用户组是否存在当前用户方法
- javaWeb——图片验证
- 使用需要验证的邮件服务器发送邮件的方法
- 将表单身份验证用于 Active Directory
- 在ASP.NET 2.0中操作数据之十九:给编辑和新增界面增加验证控件
- 验证邮箱
- jquery 延时验证
- 【Scikit-Learn 中文文档】交叉验证 - 模型选择和评估 - 用户指南 | ApacheCN
- 第十五周 项目一 (3)验证交换排序