人脸识别

    常见问题

    安卓—常见问题

    Q:提示硬件指纹变化,导致激活失效?
    A:v1.0.1版本以上的SDK,已经修复了硬件指纹变化问题。但由于硬件本身的多样化原因,可能某些情况下,仍会导致指纹变化。

    Q:哪些情况可能导致指纹变化?
    A:刷机、更换硬件设备将会导致指纹变化。但安卓系统升级、APP卸载重装、恢复系统出厂值并不会导致硬件指纹变化。

    Q:同一台设备可以被多个序列号多次激活么?
    A:可以。一台设备可以被多个序列号激活,没有限制。

    Q:调用getFeature接口对图片进行特征提取,经常会出现特征提取失败的情况,错误码为6。
    A:主要可能为在人脸检测的过程中没有检测到人脸,建议调整设置下人脸的大小set_min_face_size的值。

    Q:视频流人脸检测和图片检测是否可以同时或间隔进行?
    A:人脸SDK为单例,同一时间只能进行一个图像源。另外进行人脸检测具体追踪功能,视频流进行检测时,不能插入其他图像帧。想VideoMatchImageActivityRgbIrVideoMatchImageActivityOrbbecVideoMatchImageActivity,需要先把图片进行人脸检测后,在把打开视频流检测。中间需要使用FaceSDKManager.getInstance().getFaceDetector().clearTrackedFaces();清除数据

    Q:人脸检测检测不到人脸?
    A:人脸SDK检测需要传入检测的人脸图片是人脸朝上,预览和实际传给SDK检测的图片方向不一定相同,需要把实际检测的数据转成(argb->bitmap)图片,显示确定人脸是否朝上。

    Q:如何调整人脸检测识别距离,以及调节检测的最小人脸?
    A:主要方法有三种,详情如下:

    1. 调整FaceDetector初始化时最小检测人脸大小(FaceEnvironment VALUE_MIN_FACE_SIZE = 100;),可选范围为:50~200(50*50px-200*200px),最小检测人脸越小,能检测到人脸越小。最小检测人脸越小,性能消耗越大。
    2. 调整人脸检测传入的图像分辨率,分辨率越大,能检测越越远。鉴于目前端设备性能,建议选择640*480,1280*720。分辨率越大,性能消耗越大。
    3. 选择更大焦距的摄像头,相当于把人脸拉近。同样距离,大焦距的镜头,图像视觉越小,人脸占比越大。通常USB摄像头为3mm、6mm焦距。对性能影响小,调整人脸检测距离明显。

    Q:人脸检测返回值问题?
    A:一般反馈OK(0)表示检测到合格的人脸,当传入检测数据间隔时间较长上,超过了追踪的时间,会返回DATA_HIT_LAST(9)。所有返回9也是检测到了合格的人脸,如下所示:

    public static enum ErrCode {
        OK,
        PITCH_OUT_OF_DOWN_MAX_RANGE,
        PITCH_OUT_OF_UP_MAX_RANGE,
        YAW_OUT_OF_LEFT_MAX_RANGE,
        YAW_OUT_OF_RIGHT_MAX_RANGE,
        POOR_ILLUMINATION,
        NO_FACE_DETECTED,
        DATA_NOT_READY,
        DATA_HIT_ONE,
        DATA_HIT_LAST,
        IMG_BLURED,
        OCCLUSION_LEFT_EYE,
        OCCLUSION_RIGHT_EYE,
        OCCLUSION_NOSE,
        OCCLUSION_MOUTH,
        OCCLUSION_LEFT_CONTOUR,
        OCCLUSION_RIGHT_CONTOUR,
        OCCLUSION_CHIN_CONTOUR,
        FACE_NOT_COMPLETE,
        UNKNOW_TYPE;
    
        private ErrCode() {
        }
    }

    Q:授权失败?
    A:一个序列号只能对应一台设备,一个设备可以绑定多个序列号,测试期间的序列号有使用时间,会过期,过期后需要到AI平台上进行延期,正式使用的序列号是永久授权的。授权不过,人脸SDK将无法返回正确结果。

    Q:so加载问题?
    A:很多开发者反馈找不到so库,原因是前面只提供了armeabi-v7a的库,但开发者基本加了其他第三方的库arm64-v8aarmeabiarmeabi-v7ax86等都加进去了。so的加载原理是先加载当前CPU对应的so库,比如64位的手机会先加载arm64-v8a,只有在没有arm64-v8a目录才会去其他目录(如armeabi-v7a)下找,所有就算只留个空arm64-v8a目录也不行,因为这样他只会在arm64-v8a目录下找,这就要求每个目录下的so齐全一致。同时也不能把armeabi-v7a里面的so拷到其他目录,不要看名字一样。同时加入arm64-v8aarmeabi-v7a库。这样会导致打出来的包大不少。所以如果觉的包太大,只留armeabi-v7a是可以,他兼容其他cpu架构。注意:aar里面可能包含so,注意检查。

    Win—常见问题

    Q:为什么会报db_operation_error错误?
    A:请检查sdk路径是否带中文,这会导致数据库创建失败然后提示db_operation_error

    Q:编译demo工程时候出现如opencv-win\include\opencv2\flann\logger.h(66): error C4996: 'fopen': This function or variable may be unsafe的错误提示
    A:这种错误一般是因为vs强制要求安全等级提高所致,可以通过右键工程-属性-C/C++ -- 预处理器—预处理器定义中加入:_CRT_SECURE_NO_WARNINGS 后重新编译即可解决问题。

    Q:工程运行过程中,提示face-resource不存在。
    A:人脸sdk,需要一些模型文件,在demo工程的face-resource文件夹中,该文件夹需要放置在exe所在路径的上级目录下。若放置不正确,可能出现找不到模型文件,没法进行人脸识别。

    Q:激活后是否可以把激活文件license.ini和license.key拷贝到其他设备运行?
    A:不能,离线sdk和设备绑定,每个设备对应一个key和一个license文件,换设备无法运行。但对同一台设备,可把win32下的license.inilicense.key拷贝到x64下,则x64环境,该设备也等同于激活,可以使用。

    Q:exe不能运行或崩溃
    A:编译的工程exe,需要和dll等在一个文件夹里面,如示例工程win32和x64就有不少动态库dll文件,这是exe运行所需的库文件,不放在一起的话,可能exe不能运行或者崩溃。

    Q:vs2010或vs2017打开工程编译提示错误不能通过编译?
    A:开发文档官方指定使用vs2015 comunity版本,因vs2010不支持c++11,但sdk使用了c++11的新功能,vs2017若编译提示json库错误,如json::reader的错误,建议更新为v1.1版本的SDK即可解决。

    Q:SDK是否支持多线程?
    A:v1.1版本已经支持多线程,请在后台下载最新版的SDK。

    Q:Windows离线SDK是否支持C#,Java语言?
    A:Windows SDK采用C++语言编写,支持用vs2015版本开发,推荐用vs2015 Comunity版本。SDK提供动态库dll,可用于实现Java调用和C#调用,预计在9-10月份,百度会推出官方版本。

    Q:Windows离线sdk在debug版本报错?
    A:目前仅提供x86和x64的release版本的库,不支持debug版本,需要调试可在release版本下通过添加日志调试。

    Q:SDK中的激活工具licenseTool.exe和sdk的demo TestFaceApi.exe都不能运行,崩溃或提示缺少dll?
    A:此SDK基于C++编写,需要安装对应运行环境(推荐使用vs2015),崩溃或提示缺少dll是因为缺少运行环境。

    Q:证件照等图片检测不到人脸,但实际是有人脸的?
    A:默认可检测最小人脸大小是100,若检测不到,可通过设置最小人脸大小调整,例如调整最小检测人脸为30px,可使用api->set_min_face_size(30),达到调整最小人脸检测大小的目的,然后再调用检测,这样能检测到比较小得图片如证件照等。v1.1版本中已经集成了证件照模型,推荐您升级SDK版本解决此问题。

    上一篇
    Android-SDK
    下一篇
    美颜滤镜SDK