前不久《最强大脑》第四季第一期的舞台上,王峰对阵小度机器人进行了“人机大战”,其中最精彩和有趣的是第一场 pk---从小时候照片判别长大后对应的人,而她有个姐姐,这对姐妹恰恰是双胞胎!百度真的这么强吗,可以识别出万分之一的区别?
分别注册账号,拿到 api key 和 api secret ,阅读下示例代码。发现 face++的很简单,直接用 curl.exe + MS 命令行。而百度我选择用 python sdk 。由于我用的是免费的接口,旷视的调用次数限制未知,而百度的 api 每天最多 1000 次,他们都对并发不做保证,如果想要商用并且调用次数很多,考虑买个商用授权吧。同时还要说明,试用版和商用版用的效果是一样的,也就是商用版识别结果会和试用版一样,仅仅是次数限制。 face++对免费 api 的说明: 并发数有上限且不保证并发:由于资源有限,在调用繁忙的情况下,您的请求有可能会受到并发限制。 Face 存储有上限:每个用户使用免费服务只能创建 1000 个 FaceSet ,总计最多存储 100 万个人脸。 一个用户只能有一个 API Key 使用免费服务,而且该 API Key 不能转为正式 API Key 。
1.首先我想到的是对比下双胞胎辨别能力如何 从朱佳雯微博提取了 3 张正面照片,从朱佳怡提取 1 张正面图片。 图片来源:
蜜蜂少女队-朱佳雯
http://weibo.com/u/5873198061
http://tva2.sinaimg.cn/crop.0.0.749.749.180/006ptl6Zjw8fa9d1bq3xmj30ku0ktmyd.jpg
http://wx1.sinaimg.cn/mw690/006ptl6Zgy1fc0nme8eapj31ho1zk7wj.jpg
http://wx3.sinaimg.cn/mw690/006ptl6Zgy1fcfsg03fs1j31ho1zkhdv.jpg
蜜蜂少女队-朱佳怡
http://www.weibo.com/u/5873198101
http://tva3.sinaimg.cn/crop.0.0.749.749.180/006ptl7Djw8fa0yk1bwisj30ku0ktmy7.jpg
face++的识别代码,请将“应用的 API Key ”和“应用的 Secret Key ”分别替换成申请到的字符串。
set ZJW1=http://tva2.sinaimg.cn/crop.0.0.749.749.180/006ptl6Zjw8fa9d1bq3xmj30ku0ktmyd.jpg
set ZJW2=http://wx1.sinaimg.cn/mw690/006ptl6Zgy1fc0nme8eapj31ho1zk7wj.jpg
set ZJW3=http://wx3.sinaimg.cn/mw690/006ptl6Zgy1fcfsg03fs1j31ho1zkhdv.jpg
set ZJY=http://tva3.sinaimg.cn/crop.0.0.749.749.180/006ptl7Djw8fa0yk1bwisj30ku0ktmy7.jpg
curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/compare" -F "api_key=应用的 API Key" -F "api_secret=应用的 Secret Key" -F "image_url1=%ZJW1%" -F "image_url2=%ZJY%"
curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/compare" -F "api_key=应用的 API Key" -F "api_secret=应用的 Secret Key" -F "image_url1=%ZJW2%" -F "image_url2=%ZJY%"
curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/compare" -F "api_key=应用的 API Key" -F "api_secret=应用的 Secret Key" -F "image_url1=%ZJW3%" -F "image_url2=%ZJY%"
curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/compare" -F "api_key=应用的 API Key" -F "api_secret=应用的 Secret Key" -F "image_url1=%ZJW1%" -F "image_url2=%ZJW2%"
curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/compare" -F "api_key=应用的 API Key" -F "api_secret=应用的 Secret Key" -F "image_url1=%ZJW1%" -F "image_url2=%ZJW3%"
curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/compare" -F "api_key=应用的 API Key" -F "api_secret=应用的 Secret Key" -F "image_url1=%ZJW2%" -F "image_url2=%ZJW3%"
百度识别代码 安装百度人脸识别包, pip install baidu-aip 百度识别需要使用本地文件,下载她们的照片,依次命名 zhujiawen 、 zhujiawen2 、 zhujiawen3 和 zhujiayi ,保存到 d 盘下。
# 引入人脸识别 SDK
from aip import AipFace
# 定义常量 APP_ID = '你的
App ID'API_KEY = '你的 API Key'
SECRET_KEY = '你的 Secret Key'
# 初始化 AipFace 对象
aipFace = AipFace(APP_ID, API_KEY, SECRET_KEY)
# 读取图片
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
aipFace.match([get_file_content('d:/zhujiawen.jpg'),get_file_content('d:/zhujiayi.jpg'),])
aipFace.match([get_file_content('d:/zhujiawen2.jpg'),get_file_content('d:/zhujiayi.jpg'),])
aipFace.match([get_file_content('d:/zhujiawen3.jpg'),get_file_content('d:/zhujiayi.jpg'),])
aipFace.match([get_file_content('d:/zhujiawen.jpg'),get_file_content('d:/zhujiawen2.jpg'),])
aipFace.match([get_file_content('d:/zhujiawen.jpg'),get_file_content('d:/zhujiawen3.jpg'),])
aipFace.match([get_file_content('d:/zhujiawen2.jpg'),get_file_content('d:/zhujiawen3.jpg'),])
图片如下(前三章朱佳雯,后一张朱佳怡):
|表 1|人脸对比结果| |----|----|----|----|----| |序号|图片 1|图片 2|face++|百度| |1|朱佳雯 1|朱佳怡|88.804|93.915| |2|朱佳雯 2|朱佳怡|84.242|94.210| |3|朱佳雯 3|朱佳怡|79.859|93.574| |4|朱佳雯 1|朱佳雯 2| 84.716|93.172| |5|朱佳雯 1|朱佳雯 3|87.825|92.108| |6|朱佳雯 2|朱佳雯 3|83.453|92.042|
这个是百度运行结果,可以参考下:
我们观察数据,分析下: 1 )序号 1 、序号 2 的数值都比序号 6 大,这意味着双胞胎的相似度有时高过自己与自己的相似度。这说明,最强大脑中,小度可能真的是运气好,蒙对了! 2 )百度的数据比较集中,在 92~95 之间,而 face++数据在 79~89 之间。这说明百度的算法可能比较准确。(双胞胎确实像啊,怎么 face++范围波动那么大?) 3 )观察最大值, face++在 1 (人不同)和 5 (同一个人)时数值最大,百度在 1 (人不同)和 2 (人不同)数值最大。 face++比百度稍微好些。 4 )观察最小值, face++序号 3 (不同人)最小,百度序号 6 最小(同一人)。 face++比百度好。 对比双胞胎,双方确实都有问题。要说谁好一些,我投 face++一票。 2.可能你说上一回合,各有错误,而每张照片差别太大(清晰度、时间、光照、妆容都不一样)。那么同一个人在同一时间段的照片分别对比(人脸表情、朝向不同),看看相似性是不是应该很高。 这次换王珞丹,从她的微博弄下 5 张图,分别用第 1 张与后 4 张进行对比: 王珞丹
http://ww2.sinaimg.cn/mw1024/49393842jw1f8wne2olizj22as3g6u0x.jpg
http://ww1.sinaimg.cn/mw1024/49393842jw1f8wnejo9tyj22as3g6u0y.jpg
http://ww4.sinaimg.cn/mw1024/49393842jw1f8wne9yic3j22as3g6qv6.jpg
http://ww3.sinaimg.cn/mw1024/49393842jw1f8wndxibndj22as3g6qv5.jpg
http://ww3.sinaimg.cn/mw1024/49393842jw1f8wnee6krdj22as3g6qv6.jpg
对比代码: face++的
set WLD1=http://ww2.sinaimg.cn/mw1024/49393842jw1f8wne2olizj22as3g6u0x.jpg
set WLD2=http://ww1.sinaimg.cn/mw1024/49393842jw1f8wnejo9tyj22as3g6u0y.jpg
set WLD3=http://ww4.sinaimg.cn/mw1024/49393842jw1f8wne9yic3j22as3g6qv6.jpg
set WLD4=http://ww3.sinaimg.cn/mw1024/49393842jw1f8wndxibndj22as3g6qv5.jpg
set WLD5=http://ww3.sinaimg.cn/mw1024/49393842jw1f8wnee6krdj22as3g6qv6.jpg
curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/compare" -F "api_key=应用的 API Key" -F "api_secret=应用的 Secret Key" -F "image_url1=%WLD1%" -F "image_url2=%WLD2%"
curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/compare" -F "api_key=应用的 API Key" -F "api_secret=应用的 Secret Key" -F "image_url1=%WLD1%" -F "image_url2=%WLD3%"
curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/compare" -F "api_key=应用的 API Key" -F "api_secret=应用的 Secret Key" -F "image_url1=%WLD1%" -F "image_url2=%WLD4%"
curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/compare" -F "api_key=应用的 API Key" -F "api_secret=应用的 Secret Key" -F "image_url1=%WLD1%" -F "image_url2=%WLD5%"
百度的(还是一次下载图片,保存为 wangluodan1 、 wangluodan2 、 wangluodan3 、 wangluodan4 、 wangluodan5 )
aipFace.match([get_file_content('d:/wangluodan1.jpg'),get_file_content('d:/wangluodan2.jpg'),])
aipFace.match([get_file_content('d:/wangluodan1.jpg'),get_file_content('d:/wangluodan3.jpg'),])
aipFace.match([get_file_content('d:/wangluodan1.jpg'),get_file_content('d:/wangluodan4.jpg'),])
aipFace.match([get_file_content('d:/wangluodan1.jpg'),get_file_content('d:/wangluodan5.jpg'),])
对比结果如下(数值越高越相似):
|表 2|人脸对比结果| |----|----|----|----|----| |序号|图片 1|图片 2|face++|百度| |1|王珞丹 1|王珞丹 2|88.973|95.826| |2|王珞丹 1|王珞丹 3|94.752|98.096| |3|王珞丹 1|王珞丹 4|81.722|93.068| |4|王珞丹 1|王珞丹 5|80.724|94.447|
果不其然, face++的相似度范围来去太大,而百度依旧十分稳定!这一回合百度完胜。可以看到 face++在人脸发生很大的旋转、表情发生变化时,数值波动增大,识别效果不如百度。这一回合毋庸置疑,我投百度一票。 最后在看一下不同的人的对比:
|表 3|人脸对比结果| |----|----|----|----|----| |序号|图片 1|图片 2|face++|百度| |1|朱佳雯 1|王珞丹 1|59.221|53.006|
再一次看到对于不同的人,百度的相似度更低。百度能在同样的人的对比中,相似度更高,而在不同人对比中,相似度更低,这一回合我投百度一票。最终还是百度更强,说明百度的人脸识别应该是国内最强。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.