测试点评
Face++服务是一款致力于人脸识别的技术服务,提供免费的API和SDK供企业和开发者调用:
1. Face++是一款免费的跨安卓,IOS,MAC,PC等多平台支持的人面识别服务。
2. FACE++具备检测,关键点,识别三项技术强项
3. FACE++支持多种语言,包括python,object-c,java,matlab,php,c#,javascript。
4. 提供Android,IOS,WindowsPhone,PC,web等多平台的SDK集成,参考例子和DEMO。
经过笔者在2G和3G网络下对Face++的评测:
1.人脸检测能在不同光线条件下,图像不同灰度值下快速的检测出来
2.对方向性有要求,对多种人脸姿态识别率相对较低
3.支持离线检测
开发建议
经过笔者对Face++的使用,从开发者的角度,给想使用该服务的开发者几个建议:
1. Face++的API采用的面向服务的调用模型,对于开发者而言,只要掌握基本的服务调用方法,就很容易掌握一系列开发的技巧。
2. 集成到客户端时,需要仔细阅读FACE++的相应语言文档。
评测环境
测试对象 |
FACE++ |
测试手机 |
三星Galaxy S I9000 |
系统版本 |
4.2.1 |
手机网络 |
WIFI |
测试方法 |
客户端运行DEMO+手机自带摄像头识别 |
测试时间 |
2014-2-25 21:13-21:43 |
光线环境 |
室内自然光线 |
摄像头角度 |
分为正面,侧面,倾斜测试 |
基本参数:
是否免费 |
免费 |
支持平台 |
Android、iOS、Linux、windows和Mac OS等 |
支持语言 |
Python ,Objective-C,Java ,Matlab ,C#,javascript,php |
安装包大小 |
1.4M |
支持人脸检测 |
支持 |
支持人脸分析 |
支持 |
支持人脸识别 |
支持 |
集成过程
一 如何嵌入客户端SDK
1. 从http://www.faceplusplus.com.cn/下载SDK
2. 建立一个java工程。
3. 在AndroidManifest.xml中添加权限,此处代码详见测试DEMO 1
4. 根据需求选择离线SDK中依赖库以及libs/faceapi.jar拷入工程内的libs文件夹内,例如若 APP的运行环境为armeabi架构,如下图所示:
5. 接着,在程序中初始化一个 com.faceplusplus.api.FaceDetector类。注意类初始化时需要使用到当前 context以及使用者对应的 API_Key,这个API_Key必须与下载离线检测器的 App对应的 API_Key一致才可以正确调用这个库。下面是一个调用示例:
初始化:
detecter = new FaceDetecter(); //初始化 detecter.init(this, "a986f2e7b07928316d92ca4fb8b5a769"); |
检测,并获取检测结果:
Face[] faceinfo = detecter.findFaces(curBitmap);// 进行人脸检测 |
若图像由摄像头采集,则原始数据将以YUV格式存储,可以先将图像旋转到正确的方向后使用灰度图的形式传入检测器
此处代码详见测试DEMO 2
6. 离线检测器与线上 API的协同功能:如果需要用到线上 API的更多功能,可以将本地的检测结果直接上传(从而节省传输的数据量,仅会上传脸部图像)。使用离线 SDK中 HttpRequest的新方法 offlineDetect,可将离线结果直接同步至线上,并获取 face_id进行后续操作,如下图所示:
二 测试截图
三 遇到的问题
笔者只测试了人脸检测模块,人面识别无法评测。原因是要使用人面识别功能必须申请上线,通过FACE++官方审核,审核通过后才能在站点上管理人和组,有人和组的相关信息后才可以使用识别模块。
四 上手难易
1.Face++使用基于服务的调用方式来管理所有的API,极大降低了编写人面识别程序的难度,这种基于云服务的架构非常优秀,将很难理解的识别技术用方便快捷的服务调用来封装,非常有利于开发者学习!
2.上手难度为中等。
五 花费时间
取决于开发者基于HTTP的服务调用的熟练程度以及对识别技术的一些原理了解情况,如果上述都达标,可以边看文档边写代码;如果不清楚人面识别原理,需要多花费时间进行补习相关知识。
六 开发支持和文档
Face++提供多平台和语言的支持:
测试日志
测试日志如下截图:
测试DEMO
测试DEMO 1
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.megvii.apitest" android:versionCode="1" android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.faceplusplus.apitest.MainActivity" android:label="@string/app_name2" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.faceplusplus.apitest.CameraPreview" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
</manifest> |
测试DEMO 2
public void onPreviewFrame(final byte[] data, Camera camera) { camera.setPreviewCallback(null); detectHandler.post(new Runnable() {
@Override public void run() { byte[] ori = new byte[width * height]; int is = 0; for (int x = width - 1; x >= 0; x--) {
for (int y = height - 1; y >= 0; y--) {
ori[is] = data[y * width + x];
is++; }
} final Face[] faceinfo = facedetecter.findFaces( ori, height, width); runOnUiThread(new Runnable() {
@Override public void run() { mask.setFaceInfo(faceinfo); } }); CameraPreview.this.camera.setPreviewCallback(CameraPreview.this); } }); } |
离线检测器与线上API的协同功能
//在线api交互 try { request.offlineDetect(detecter.getImageByteArray(),detecter. getResultJsonString(), new PostParameters()); } catch (FaceppParseException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } |
主要功能
人脸检测:Face++人脸检测与跟踪技术提供快速、高准确率的人像检测功能。普遍适用于图片与实时视频流,能够应对复杂的光照并支持多种人脸姿态。可检出不小于16*16像素的人脸,并可在移动设备上实时跟踪人脸(20帧/秒),其中检测中的关键点检测,精确定位面部的关键区域位置,包括眉毛、眼睛、鼻子、嘴巴,脸部轮廓等。支持一定程度遮挡以及多角度人脸。使用关键点检测技术,可以精确定位人脸美化局部,还可以实现表情交互。
静态检测:检测静态的图片,得到关键点信息。
左右上无法识别:
检测对于方向性有要求
想要了解更多测试内容,请登录: