在Web2.0的时代下,图像、视频等各类异构数据每天都在以惊人的速度增长。如何在茫茫图库中方便、快速、准确地找到所需图像?你是否还在为如何检索到真正想要获取的图像的关键字而苦苦烦恼?你是否发现目前基于文本描述的图像搜索结果在大规模图像中结果往往差强人意?
追根溯源,这是由于基于文本的图像检索在外来的图像入库时离不开人工的干预。文本描述的特征依赖于人工标注的介入,导致图库受到标注者的认知水平、言语使用以及主观判断等的影响,造成图像的文字描述存在差异。同时,标注费时费力,这类方法并不适用于海量图像库的检索。
背景介绍
针对这一系列问题,基于内容的图像检索(CBIR,Content Based Image Retrieval)充分发挥了计算机擅长于处理重复任务的优势。它能够根据用户给定的查询图像,提取有效图像视觉特征,衡量图像之间的相似性,并从一个大规模数据库中快速找到与给定图像内容相关或相似的图像,并按相关的排序返回给用户,将人们从耗费大量人力、物力和财力的人工标注中解放出来。
目前,基于内容的图像检索技术已经深入到了许许多多的领域,在电子商务、皮革布料、版权保护、医疗诊断、公共安全、街景地图等工业领域得以成功应用,为人们的生活生产提供了极大的便利。
本文从图像检索流程出发,结合网易易盾团队在数字风控“内容安全”中的实践经验,介绍构建基于内容的图像检索系统所涉及的一些典型算法。
检索系统的搭建
一个典型的基于内容的图像检索基本框架如图1所示,整个框架分为2大部分:offline离线部分以及online在线部分。
offline部分主要包括了检索图像库、特征提取、特征库以及检索结构。
检索图像库:一个用于存放待查询的图像数据库。在实际项目中,这个检索图像库是一个动态变化的图像数据库。
特征提取:图像特征的表达能力即利用计算机提取图像中属于特征性的信息的方法及过程。图像的任何统计量都可以作为图像的特征,哪怕是图像本身的像素信息。在实际项目中,我们通常使用如颜色、结构等传统视觉特征和基于深度学习的底层/中层/高层语义特征作为图像特征。
特征库:用于存放需要查询的图像库中提取的图像特征。
构建索引结构:这一步骤的目的就是对高维度特征的检索性能进行优化。虽然直接采用暴力检索一一比对这样的方法检索的精度是最高的,但代价是检索的时间也是最长的,为了在检索精度和检索速度之间找到一个平衡点,因此常见的方法有查找优化以及向量优化。在实际业务中,也常常采用两种方式相结合的方法。
online部分主要是完成对query图像的特征提取操作,在这一步操作中,值得注意的是,特征提取方法需要和offline中相保持一致。
图1 | 基于内容的图像检索基本框架
从上图可以看出,图像特征提取是整个检索系统的基础,检索结构的设置是整个检索系统性能的关键。下面就对这两部分进行详细介绍。
01 特征提取
从图1可以清晰地看出,检索系统的性能在很大程度上依赖于特征提取