图像检索简介
图像检索简介
主要分为两类,一类是基于文本的图像检索(Text Based Image Retrieval),另一类是基于内容的图像检索(Content Based Image Retrieval)
基于文本
通过对图像进行文本描述(对内容分析进行自动标注和人工标注),提炼关键词等标签信息。
后续在进行检索时,可以通过检索关键词的方式查找对应的图片。
基于内容
以图搜图。涉及图像特征提取、相似度计算、特征数据库存储和搜索。
图像特征提取
提取图片中局部特征,转化为特征向量
图像特征分类
- 点线面:点如关键点,SIFT算子提取
- 纹理形状
- 颜色特征:如颜色直方图
- 统计特征:如图形均值、方差
提取基础:特征值和特征向量
理解参考
常将某一类对象的多个或多种特性组合在一起,形成一个特征向量来代表该类对象,如果只有单个数值特征,则特征向量为一个一维向量,如果是n个特性的组合,则为一个n维特征向量。
提取方法
传统图像特征提取方法有HOG、Haar、LBP、SIFT、ORB等。后来出现深度学习特征提取方法,相当于一个黑盒
应用例:PCA主成分分析
principal component analysis主成分分析,找数据的主成分,将数据降维同时将信息的损失尽量降低。
是一种无监督算法,不需要依靠任何类别标签的信息,选取特征值最高的k个特征向量来表示一个矩阵,从而达到降维分析和特征显示。
图像特征存储
特征值和特征向量存入数据库
存储模型
提取的局部特征通常有很高的维度(如sift是128维),有很多的冗余信息,直接利用局部特征进行检索,效率和准确度上都不是很好。需要重新对提取到的局部特征进行编码,以便于匹配检索
VLAD编码
BOW词袋模型
Bag of words,信息检索领域常用的文档表示方法。也可用在视觉,将图像看作文档,使用SIFT(也可用cnn等)从图像中提取视觉词汇,使用K-Means聚类选取最具有代表性的词,最终构造词典,统计词汇出现次数构造直方图。
图像特征搜索
- 数据库读取:读取数据库中已存储的图片特征向量
- 相似度计算:计算待搜索图片与数据库中图片的相似度,如余弦相似度、欧氏距离等
- 相似度排序:根据相似度对搜索结果进行排序,如KNN算法等,并输出最相似的图片
搜索加速技术
每次都1v全表搜索,内存占用大响应时间长
多线程和分布式计算
策略优化
把空间分成很多区域,先排除掉一些区域,可以极大减少计算量;把数据做聚类,新数据进来先计算分类,然后再计算。
建立索引
为特征建立索引,或者构造特征到图像的倒排表。
近似最近邻搜索
Approximate Nearest Neighbor,用于在大规模数据集中寻找最近邻居的算法。
可以将图像搜索最相似的查找转换成ANN问题。相比于线性查找方法每次检索都会遍历整个检索库。ANN目标是在尽可能短的时间内找到与给定查询点最近的数据点,而不一定是确切的最近邻。是效果与性能的折衷。
向量数据库
向量是新的JSON。在机器学习和深度学习中,数据通常以向量形式表示。数据库提供专门索引来提供向量相似性搜索。如Elasticsearch 8.0+版本,PostgreSQL扩展,Faiss等。 Ele实验室【上集】向量数据库技术鉴赏
Ele实验室【下集】向量数据库技术鉴赏