图片向量相似检索服务(1)——解决方案

概述

  • 当您听到“以图搜图”时,是否首先想到了百度、Google 、阿里等搜索引擎的以图搜图功能呢?事实上,完全可以搭建一个属于自己的以图搜图系统:自己建立图片库;自己选择一张图片到库中进行搜索,并得到与其相似的若干图片。
  • 为了让尝试相似图片检索的场景,基于内积距离计算和图片特征提取模型 VGG16 设计了一个以图搜图系统。 正文分为系统概览、 VGG 模型、数据准备、系统部署、总结五个部分。

系统构建

git clone https://github.com/thirtyonelee/image-retrieval.git && cd image-retrieval
pip install -r requirements.txt
  • 构建基础索引,默认保存索引至:"<ROOT_DIR>/index/train.h5"
python index.py
  • 体验相似检索,默认使用 Numpy 内积计算引擎,默认测试图片:"<ROOT_DIR>/data/test/001_accordion_image_0001.jpg"
python retrieval.py 或 python retrieval.py --engine=numpy --test_data=<ROOT_DIR>/data/test/001_accordion_image_0001.jpg

[{'name': b'001_accordion_image_0002.jpg', 'score': 0.902732}, {'name': b'001_accordion_image_0003.jpg', 'score': 0.872308}, {'name': b'002_anchor_image_0004.jpg', 'score': 0.865453}]
'name' 对应索引库 <ROOT_DIR>/data/train 图片名字

系统架构

  • 系统主要由两部分组成,图片特征提取模型VGG和向量检索引擎。 VGG模型负责将图片转换成向量,向量检索引擎负责存储向量并进行相似向量检索。 具体架构如下图所示:
    在这里插入图片描述

VGG模型

  • VGGNet由牛津大学的视觉几何组( Visual Geometry Group )和 Google DeepMind 公司的研究员共同提出,是 ILSVRC-2014 中定位任务第一名和分类任务第二名。其突出贡献在于证明使用很小的卷积( 3*3 ),增加网络深度可以有效提升模型的效果,而且 VGGNet 对其他数据集具有很好的泛化能力。 VGG模型在多个迁移学习任务中的表现要优于 GoogleNet ,从图像中提取 CNN 特征, VGG 模型是首选算法。因此,在本方案中选择 VGG 作为深度学习模型。
  • VGGNet 探索了 CNN 的深度及其性能之间的关系,通过反复堆叠 33 的小型卷积核和 22的最大池化层, VGGNet 成功地构筑了 16-19 层深的 CNN 。在本方案中使用了 Keras 的应用模块( keras.applications )提供的 VGG16 模型。
  • VGG官方网站:http://www.robots.ox.ac.uk/~vgg/research/very_deep/
  • VGG Github:https://github.com/machrisaa/tensorflow-vgg

数据准备

注:你可以使用其他图片进行测试,这个系统支持 .jpg 和 .png 图片格式

总结

  • 项目支持多种距离计算引擎,如:Numpy、Faiss、ES、Milvus
  • 可定制其他距离计算函数,如:欧氏距离 (L2)、汉明距离、杰卡德距离、谷本距离等

附录

参考1:https://github.com/willard-yuan/flask-keras-cnn-image-retrieval

参考2:https://github.com/zilliz-bootcamp/image_search

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值