想做一个微信朋友的头像分析,分析出使用头像的种类,如人像、卡通像、风景、表情图等。一开始用准备用opencv,但是在安装opencv时一直出错,一步一步的解决,第四遍时终于安装好了opencv,但是运行又发现 numpy包的版本不匹配。
种种问题,只好先放一放。想到了Face++,于是动手,边看文档边弄。以下是一些使用情况。
1)申请开发者帐号,api_key, api_secret
2)查看API文档说明
3)动手写代码测试
采用API调用的方式,比较简单,但是没有我之前预期的把图片分类。我使用是的Direct API,只能进行人脸检测和人脸分析。我只取两个数据:性别和年龄。即调用Face++ Direct API分析出头像的性格和年龄。看网站下还有一个数据,微笑的类别种类,如“似笑非笑”、“眉开眼笑”等,我没有找到相应的分类说明,这个数据抓取下来了也无法辨别。
测试很简单,POST请求,传递3个参数,app_key, app_secret, 需要检测的图片文件url,返回json数据,编程就是对数据进行解析。
curl -X POST "https://api-cn.faceplusplus.com/facepp/v3/detect" -F "api_key=gwFiGs7g3vbYQqLcwcdvieaEprbGbCXe" \
-F "api_secret=qVGtFiWRiQG7Wmy9uRrdZgm6PWEijEVU" \
-F "image_url=http://ol6pdll7a.bkt.clouddn.com/x_6.jpg" \
-F "return_landmark=0" \
-F "return_attributes=gender,age"
返回的json
{
"image_id": "W30t6uOoAtiyx9n/kypZMg==",
"request_id": "1486806689,22075b28-9daa-42d0-9341-305e8cb32f31",
"time_used": 290,
"faces": [
{
"attributes": {
"gender": {
"value": "Female"
},
"age": {
"value": 37
}
},
"face_rectangle": {
"width": 49,
"top": 37,
"left": 45,
"height": 49
},
"face_token": "325b034c1f0821af1898a0ec35ee3f16"
}
]
}
发现在识别度上有这样几个问题:
- 拍摄得太远,人像太小,会无法识别
- 背影、侧面、剪影都无法识别
- 戴口罩的无法识别,戴墨镜的会识别出性别错误
- 卡通人物头像无法识别,但是照片素描化后是可以识别的
文档中对图片的要示是:最小48*48像素。
最后写了一段代码对1546个微信好友头像进行了检测分析:
女性210人,男性142人,没有检测出来(包括非人像图片头像)1149人。也就是使用清晰人像作为微信头像的占22.7%。
稍后,当然还有更多其他数据分析。
网友评论