2021最新 阿里云PostgreSQL案例精选2 - 图像识别、人脸识别、相似特征检索、相似人群圈选

本文介绍了阿里云RDS PostgreSQL如何应对图像识别、人脸识别等场景的挑战,提出两种技术方案,包括将计算上移到应用层和使用RDS PG的向量索引插件。方案2利用RDS PG的pase插件实现高效向量搜索,支持高并发查询,适用于多种行业场景。
摘要由CSDN通过智能技术生成

行业:

互联网、新零售、交通、智能楼宇、教育、游戏、医疗、社交、公安、机场等.

应用场景:

image

人脸识别, 人脸支付, 刷脸打卡, 图像识别等
例如,

  • 智能楼宇, 根据人脸识别到是本大楼的员工时, 自动进行打卡, 自动按工作楼层设定电梯.
  • 智能酒店, 根据人脸识别, 自动入住, 根据会员等级自动对接专属服务等等.
  • 电商, 图像识别, 搜索类似商品.
  • 教育, 根据人脸特征, 记录学生的听课状态(打盹, 走神, 小动作, 举手等)
  • 交通, 违规时自动识别驾驶员.
  • 新零售, 根据人脸识别对应后台的会员系统, 做到: 到店提醒, 导购引导, 定制化运营等.
  • 公共交通, 刷脸支付.
  • 游戏, 虚拟现实相关游戏.

场景挑战与痛点:

业务特点:

  • 1、需要高效率、高精度的以图搜图
  • 2、业务不仅有图像搜索的需求, 同时还有其他条件的过滤需求

业务挑战与痛点:

  • 1、通用关系数据库例如MySQL不支持向量检索, 需要遍历查询并全部返回到应用端进行计算, 性能差, 并且需要耗费大量网络带宽.
  • 2、即使关系数据库支持了向量检索的操作符, 但是并不支持向量索引, 所以依然需要遍历计算, 性能差, 无法支撑高并发查询.
  • 3、当图像向量计算上移到应用层实现时, 需要从数据库加载所有数据, 加载速度慢, 而且图像更新后无法实时加载, 效率低
  • 4、当图像向量计算上移到应用层实现时, 无法支撑图像识别以及其他属性检索的联合过滤, 效率低下.

技术方案:

方案1

image

  • 数据库仅存储图像向量, 不进行向量计算
  • 图像向量计算上移到应用层实现

缺陷:

  • 普通数据库不支持向量索引, 无法在数据库中完成向量过滤
  • 应用需要从数据库加载所有数据, 加载速度慢, 而且图像更新后无法被应用实时加载, 效率低.
  • 无法在数据库中实现图像识别条件筛选+其他属性的条件筛选的联合过滤, 需要在业务层过滤图像条件, 网络传输的记录多, 效率低, 无法支持高并发场景

方案2

image

  • 使用RDS PG存储图像向量特征值
  • 在RDS PG的pase插件, 创建图像特征向量的向量索引
  • 应用输入特征向量, 在数据库中通过向量索引, 快速搜索到与之相似的图像, 支持返回向量距离, 以及按向量距离进行排序
  • 当有多个过滤条件时, 数据库可以使用多个索引对多个条件进行合并过滤

优势:

  • RDS PG数据库支持向量索引, 图像搜索可以直接在数据库中高效率过滤, 应用与数据库之间
  • RDS PG支持索引合并过滤, 可以同时过滤图像条件、其他属性条件, 通过索引可以最大化收敛条件结果集, 大幅度提升性能, 降低传输量. 单次查询可以毫秒级完成.
  • 通过RDS PG只读实例, 可以再次提高整体查询吞吐.

注意:

  • 本方案为数据库向量搜索加速方案, 并未涉及图像特征值提取(图像转换为高维向量)的部分, 图像特征值提取可以在应用层完成.

目前阿里云RDS PG pase插件支持两种业界流行的向量索引算法ivfflat和hnsw, 未来将持续集成业界优秀的向量索引算法.

ivfflat算法
image

hnsw算法
image

详细使用方法请参考阿里云RDS PG官方手册pase插件说明文档.
(https://help.aliyun.com/document_detail/147837.html)

RDS PG方案价值:

1、RDS PG支持了高维向量索引检索功能(pase插件), 可以非常高效率的实现图像向量的相似匹配搜索, 单次请求仅需毫秒级.
2、高维向量检索不仅能应用在图像搜索, 同时还能应用在任意可以数字化的特征搜索, 例如用户画像特征搜索, 营销系统中的相似人群扩选等场景.
3、RDS PG支持索引合并搜索, 从而在数据库中可以一次性完成向量搜索、普通查询条件过滤的联合过滤, 大幅度提升性能.

使用RDS PG数据库, 满足了在互联网、新零售、交通、智能楼宇、教育、游戏、医疗、社交、公安、机场等行业中的人脸识别、图像搜索、营销系统的相似人群扩选等高并发需求.
对比MySQL的通用方案, RDS PG 的pase向量索引插件加速方案优势非常明显, 是一个低成本, 高效率的人脸识别、图像搜索、相似人群扩选解决方案.

  • 平均性能提升 2457900%, 达到毫秒级响应.
    以上数据来自4核8G RDS数据库实例, 100万图片的实操对比数据.

目前支持该功能的RDS PG版本:

  • RDS PG V11
  • 未来将在V10以上的所有版本支持.

本功能产品手册:
https://help.aliyun.com/document_detail/147837.html

客户案例:

蚂蚁金服

DEMO介绍:

通用操作

1、购买RDS PG 11
2、配置白名单
3、创建用户
4、创建数据库

方案 DEMO

方案1 demo

1、创建测试表

create table if not exists t_vec_80(    
    id serial PRIMARY KEY,  -- 主键  
    c1 int,   -- 其他属性字段  
    c2 int,  
    c3 text,  
    c4 timestamp,  
    vec float4[]    -- 图像特征值向量  
);    

2、创建生成随机向量的函数(用于模拟图像特征值, 实际场景请使用实际图片特征值存入)

create or replace function gen_float4_arr(int,int) returns float4[] as $$    
  select array_agg(trunc(random()*$1)::float4) from generate_series(1,$2);    
$$ language sql strict volatile;    

3、写入100万随机向量

insert into t_vec_80 (c1,c2,c3,c4,vec)  
select random()*100, random()*100000, md5(random()::text), clock_timestamp(),   
gen_float4_arr(10000, 80)  
from generate_series(1,1000000);  

结果样例:

select * from t_vec_80 limit 3;  
-[ RECORD 1 ]------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
id  | 1  
c1  | 99  
c2  | 7428  
c3  | 9b74e40ab38ed4f41b5d50b8eedf8b72  
c4  | 2020-02-27 15:36:56.895773  
vec | {6469,3787,5852,1642,2798,7728,1527,6990,7399,3460,7802,7682,8102,6499,3428,7687,567,8894,8144,1685,6139,9549,3613,1714,721,9099,4218,1930,9031,4961,3966,5501,8748,9818,7143,1546,7547,8671,8536,4946,2132,6338,2629,234,2838,6057,7922,3405,4951,6066,5091,1091,5615,8704,2805,6336,7804,7024,8266,6836,1985,2233,2337,733,2051,9481,2280,9598,8152,816,4545,285,7155,7174,519,9993,3232,8441,3399,8183}  
-[ RECORD 2 ]------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
id  | 2  
c1  | 45  
c2  | 84908  
c3  | a48d421b772486121ef520eb3e285f95  
c4  | 2020-02-27 15:36:56.896329  
vec | {123,7195,2080,6460,5000,9104,4727,1836,1089,6960,4174,1823,9012,3656,4103,8611,1808,4920,3157,2094,2076,332,2613,2070,3564,1055,5469,1748,5563,3960,1023,5686,1156,3103,2147,6156,2208,6874,7993,3298,3834,2167,5121,2847,5823,9225,1458,7632,4145,4615,9726,6222,4947,2340,8292,8511,3395,3762,259,8958,7722,1282,4644,8878,4386,6792,5035,6594,3666,3028,9892,7501,5196,5014,348,1019,4239,1806,8652,8384}  
-[ RECORD 3 ]-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值