人脸查找SDK

菜菜鸟的问题~
我用的是虹软的SDK,现在要做一个人脸库查找的功能,问题如下:
1.得到的人脸特征是字节数据类型,存到mysql数据库用什么类型好,
2.这个是java基础问题。2000人的人脸库,查找高级很费系统资源吧,估计要耗时不少吧,php的话就会有脚本超时问题(我本来是php开发的),java是用什么做呢,队列?还是什么?

阅读 1.6k
1 个回答

2000+ 人使用 JAVA 开发在资源和查询效率上应该都不是问题,可在虹软SDK论坛查找到对应版本Demo

下面是我用 C++ 开发桌面的一些情况,仅供参考

C++ 虹软SDK客户端 Demo

  1. sqlite使用的 blob 类型;
  2. 为了已有的人脸特征值检索快速,于是将其保存在了运存中

    1. 任务管理器中查看, 2000+ 人脸占用 950M (其中包含了人名信息,和特征值,尤其UI页面每一张头像都有缩略图占用了较多资源),当只有特征值时会小很多很多
    2. 2000+ 人脸特征识别可以感受到一点点延迟,在UI图中,进行了人脸位置框图绘制,特征值匹配的人名检索都是很耗时的操作。当只进行特征值比对时应该会快速很多,2000+应该仍然会很流畅
    3. 在特征值对比时,对已有的数据做的是遍历操作居多,而进行特征值随机删除很少,因此推荐使用 vector(O)N 这种遍历快速的容器
2000+ 时内存占用情况 (绝大多数内存被人脸缩略图占用)

image.png

2000+ 时数据库大小(仅有三个字段)

image.png

0 时内存占用情况

image.png

关于一个人脸特征值的内存占用源码部分 [一个特征值]
typedef unsigned char            MByte;

// ......
// ......

typedef struct {
    MByte*        feature;    
    MInt32        featureSize;    
}ASF_FaceFeature, *LPASF_FaceFeature;

// ......
// ......

faceFeature.featureSize = 1032;
faceFeature.feature = (MByte *)malloc(faceFeature.featureSize * sizeof(MByte));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏