本文从翼支付风控的实际应用场景出发,介绍了图像审核产品“侦图”如何检测虚假营业执照,店内门头照、相似模板照的识别问题,“侦图”产品通过引入 Milvus 来进行特征向量检索,在检索速度上,千万级别向量查询时,单条向量查询时间不高于 1 秒,批量查询的单条平均时间不高于 0.08 秒,极大节省了开发成本,并显著提高了系统的检索性能。
项目背景
近年来,随着电商兴起、线上支付的普及,一些利用互联网漏洞、通过技术手段来“薅羊毛”的黑色产业迅速发展壮大。这群“羊毛党”战斗力惊人,已经形成有组织的产业化运作。他们惯于利用技术手段合成虚假照片通过认证,在平台注册大量虚假账户进行非法牟利。中国裁判文书网公布的判决书显示,2021年12月,某团体通过非法渠道购买用户个人信息,在某银行移动APP注册后骗取积分,兑换礼品并对外销售获利,在不到3个月的时间内,薅走了该行的上万张视频会员卡、700多张星巴克饮品券,还有其余众多礼品。类似黑产案例数不胜数,这些虚假账户一旦注册成功,不但会收割普通消费者的红利,还将对平台造成难以挽回的损失。
黑色产业凭借技术让自己的势力迅速扩张蔓延,一旦平台漏洞修复不及时,分分钟变天坑。面对庞大且迅速更新的数据量,传统的风控手段已经难以有效洞察风险。基于此,翼支付利用深度学习技术和数字图像处理技术,在各个应用场景需求的驱动下,打造了以深度学习技术为核心的图像审核产品——“侦图”。“侦图”涉及图像审核的各种场景,其中一个重要的领域就是对虚假营业执照、店内门头照、相似模板照的识别和检测(如下图)。
(虚假营业执照模板)
传统的相似图像比对算法有 PSNR [1] 和 ORB [2] 等算法,这些算法不仅速度慢,而且准确率较低,一般只能应用于离线任务,不能大规模实时应用。而深度学习能够实时处理大规模的图像数据,是处理相似图像比对任务最合适的方法。通过深度学习模型,图像数据能够转化成海量特征向量,我们采用了 Milvus 向量搜索引擎专门处理这些非结构化数据。凭借 Milvus 向量搜索引擎搭建出的相似风险模板照检测系统能够为万亿级向量数据建立索引,使其能够在数千万级别的图像中,高效地检索出目标风险模板照。
“侦图”产品简介
在翼支付研发团队和 Milvus 社区的共同努力下,我们通过深度学习模型将海量图像数据转化成特征向量导入 Milvus ,研发出一个相似风险模板照检测系统,作为翼支付整体视觉风控产品“侦图”的一部分。“侦图”是翼支付自研多媒体视觉风控产品,具备整套人脸识别解决方案、证照鉴伪和图背景中介聚类等多项行业领先能力,深度融合了机器学习技术、神经网络图像识别技术,产品内置的算法模型,能够对用户认证时存在的虚假风险和中介团伙风险进行精确识别,毫秒级响应,真正做到事前阻断;在产品部署层面,依托大数据平台能力,跨领域打通底层数据壁垒,满足各类高并发业务场景下信息识别调用需求,支持业务功能横向扩容。凭借领先的技术应用和独创的解决方案,“侦图”已经通过了5项专利申请,获得了2项软件著作权。同时,“侦图”已经在多家银行与金融机构业务中获得实际应用,帮助业务提前发现风险。
系统流程
翼支付目前拥有超过千万张商户证件照片,实际的数据量还在随着业务的发展成倍的增长。为了从如此庞大的图片库中快速地检索出最相似可能存在风险的模板照,“侦图”选择了 Milvus 作为特征向量相似度计算引擎。其相似风险模板照检测系统的大致结构如下图所示。
(相似风险模板照检测系统结构图)
该系统的业务流程中大致可以分为四个流程:
- 图像预处理。对输入的图像进行降噪去噪和对比度增强等预处理操作。预处理既能保证原始信息的完整性,又能去除图像信号中无用的信息。
- 特征向量提取。使用专门训练好的深度学习模型提取图片的特征向量。将图像转化为向量再进行相似搜索是常规的操作。
- 归一化处理。对提取的特征向量进行归一化,这有助于提高后续的处理效率。
- Milvus 检索。将归一化后的特征向量嵌入到 Milvus 数据库中进行向量相似度检索。
部署方案
接下来简单介绍一下“侦图”的相似风险模板照检测系统是如何部署的。
(Milvus系统架构图)
上图为 Milvus 的系统架构图,我们使用 Kubernetes 来完成 Milvus 集群部署,确保系统能够拥有高可用性以及享受云服务实时同步的弹性能力。
大致步骤为:
- 查看可用资源,运行指令 kubectl describe nodes 查看整个 Kubernetes 集群可为已创建实例分配的资源。
- 配置资源,运行命令kubect --apply xxx.yaml使用 Helm 为 Milvus 集群组件分配内存与 CPU 资源。
- 应用新配置,运行如下指令。
helm upgrade my-release milvus/milvus --reuse-values -f resources.yaml - 在 Milvus 集群中应用新配置。
使用这种方式部署的集群不仅方便我们根据业务的需求缩扩容,也能够较好地满足该项目对海量向量数据的高性能检索需求。
针对不同的业务场景,我们可以通过调整 Milvus 的系统参数,来确保不同场景下的不同类型的数据,都能够拥有良好的查询性能,下面举两个例子:
在建立向量索引的阶段,我们根据系统应用的实际场景将建立索引的参数为:
index = {"index_type": "IVF_PQ", "params": {"nlist": 2048}, "metric_type": "IP"}
其中,IVF_PQ 是基于 IVF_FLAT 的一种向量数据有损压缩算法( PQ 乘积量化),具有高速查询磁盘、内存占用极低等特点,符合“侦图”产品的应用场景;
同时,我们将最佳的搜索参数设置为:
search_params = {"metric_type": "IP", "params": {"nprobe": 32}}
因为向量在入库之前进行了标准化,所以这里选择内积 (IP)计算两条向量的距离,根据我们实践的结果使用内积 (IP)比欧氏距离(L2)计算向量距离,准确率大约提高了15%左右。
以上的例子表明,我们可以根据不同的业务场景和性能要求,去测试和设定 Milvus 的参数,有助于我们根据业务问题对参数进行设置和调整。
另外,Milvus 不仅集成了不同的索引库,还支持不同的索引类型和相似度计算方式,Milvus 官方也提供多种语言的 SDK 和插入、查询等丰富的 API 可供调用,方便我们的前端事业群利用 SDK 调用我们风控中台的能力。
落地效果
目前相似风险模板照检测系统已在生产上实时稳定运行,每天都能帮助业务方发现风险模板照,2021年全年累积前置识别虚假模板证照超2万张。在检索速度上,千万级别向量查询时单条向量查询时间不高于 1秒,批量查询的单条平均时间不高于 0.08 秒。Milvus 的检索性能满足了业务对准确率和并发的需求。
致谢
“我们团队从2020年就开始关注并使用 Milvus,并将使用过程中的问题同步反馈给社区,也给Milvus 项目提供了不少有建设性意义的 issues;尤其在这个系统的研发过程中,我们一直和社区保持良性互动,每当我们遇到问题,社区和官方都会在24 小时内协助解决,非常感谢 Milvus 非常Nice 的研发团队!”
参考资料 :
[1]https://zh.wikipedia.org/wiki/峰值信噪比
[2]Aglave P, Kolkure V S. Implementation of High Performance Feature Extraction Method Using Oriented Fast and Rotated Brief Algorithm[J]. Int. J. Res. Eng. Technol, 2015, 4: 394-397.
[3]https://wenshu.court.gov.cn/w...
作者介绍:
施炎,翼支付资深算法工程师
汤敏伟,翼支付资深算法工程师
编辑介绍:
熊烨,Zilliz Community Intern
臧芃,Zilliz Community Intern
企业简介:
翼支付是国资委双百改革和发改委第四批混改“双试点”企业,也是“双试点”企业中唯一的金融科技公司。翼支付同时还是中国电信布局金融科技的重要版块,旗下拥有甜橙金融、橙分期、甜橙保险、甜橙信用、甜橙保理、天翼数科等子品牌。翼支付坚持以金融科技赋能业务创新,以大数据、人工智能、云计算等前沿技术为核心,打造出智慧化的产品、风控及服务。
Zilliz 以重新定义数据科学为愿景,致力于打造一家全球领先的开源技术创新公司,并通过开源和云原生解决方案为企业解锁非结构化数据的隐藏价值。
Zilliz 构建了 Milvus 向量数据库,以加快下一代数据平台的发展。Milvus 数据库是 LF AI & Data 基金会的毕业项目,能够管理大量非结构化数据集,在新药发现、推荐系统、聊天机器人等方面具有广泛的应用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。