问题描述

最近使用dlib提取的人脸做人脸搜索功能,将人脸比对功能通过数据库实现。

解决方法1:mysql实现

系统使用的数据库为mysql数据库,由于mysql不支持数组,直接将128维的向量空间转换为字符串后保存到数据库,搜索时通过自定义计算欧式距离方法完成比较。
经过测试,查询1万条数据需要60多秒,速度过慢不符合实际使用情况

解决方法2:使用postgresql的cube插件

选用postgresql数据库参考了文章图像识别、人脸识别、相似特征检索、相似人群圈选经过测试,如果只有几十万条数据已经不能感觉到明显的延时了。
cue中直接定义了欧式距离计算操作符(a <-> b)可以直接计算欧式距离

注意:dlib提取的人脸向量为128纬向量,cube默认最大为100,所以需要修改cubedata.h,将100修改为128以上 。psotgresql说明:To make it harder for people to break things, there is a limit of 100 on the number of dimensions of cubes. This is set in cubedata.h if you need something bigger.

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐