商务服务
搭建自己的以图搜图系统 (一):10 行代码搞定以图搜图
2024-12-27 11:10

目前市面上有很多以图搜图的服务,如 Google 识图,百度图片搜索,淘宝拍立淘等。本文将介绍如何快速搭建自己的图片搜索引擎,只要 10 行 Python 代码就能轻松搞定!

图 1 为查询图像时的展示结果,左侧为搜索的图片,右侧是得到的相似图片。

图 1 查询图像的展示结果

在介绍如何搭建系统之前,我们先简单了解下以图搜图的基本原理。

以图搜图,顾名思义就是用图片搜索图片。它的应用场景包括查找原始图片、搜索相似的图片、商品搜索和推荐(根据图片在商品库中搜索同款,或者推荐相似商品)等。

传统图像搜索¹是利用增加元数据的方法,例如:根据图片添加字幕、关键词或是文段说明,通过打标签的方式来完成检索。而以图搜图是一种基于内容的图像检索 (CBIR) 技术²,它的特点是无需关键字就能理解图像的相关内容,主要依赖于 AI 算法,目前一些排名较好的图像分类算法可以到达 99% 准确率(TOP5)³。本文将利用 AI 模型提取图像特征向量,通过特征向量计算来完成以图搜图。

ImageNet⁴数据集是深度学习领域中图像分类和检测最常用数据集之一,本文的图像数据就是从中随机抽取的。我们所使用的数据集中包括训练集(train)和测试集(test)两部分,训练集有 100 个分类,每个分类有 10 张图片,测试集则是 100 个分类,每个分类 1 张图片。

我们先下载数据并解压:

解压后会发现有一个 CSV 格式的文件,它包含了训练集中 1000 张图片的基础信息,如图像的 id、所在路径、以及类别。

让我们以表格方式查看下文件的内容(图 2 所示):

图 2 reverse_image_search.csv 文件的部分内容

为了记录数据集中每个对应的图片路径,接下来我们将读取的转换为字典。同时定义函数,该函数根据搜索结果的返回图片列表,便于最终的图片展示。

至此我们完成了数据准备过程,接下来是关于图像处理的准备工作,需要用到两个重要组件 Towhee 和 Milvus。

图片搜索需要用特征向量来表征图像,我们通常利用 AI 模型提取特征向量,但面对业界的诸多模型我们该如何快速上手?"X2Vec, Towhee is all you need!",Towhee (http://github.com/towhee-io/towhee)提供开箱即用的 Embedding 流水线可以将任何非结构化数据(图像,视频,音频等)转为特征向量,通过 Towhee 我们运行一条流水线就能轻松得到特征向量。

解决了如何提取特征向量的问题,接下来要解决的是向量搜索问题。

想要快速简单的实现向量检索功能,选择使用 Milvus 是一个不错的技术方案。Milvus(http://github.com/milvus-io/milvus) 是一个开源的向量数据库项目,它支持丰富的向量索引算法和向量计算方式,轻松实现对数百万、数十亿甚至数万亿向量的相似性搜索,具有高度灵活、稳定可靠以及高速查询等特点。

完整的系统架构如图 3 所示,通过 Towhee + Milvus 就可以实现端到端的图像等非结构化数据分析。我们先使用 Towhee 完成非结构化数据的特征向量提取,然后 Milvus 负责存储并搜索向量,最终获取与查询数据最相似的结果并展示。

图 3 Towhee 与 Milvus 处理图像等非结构化数据的系统架构

理解了基于 Tohwhee 和 Milvus 的以图搜图架构,接下来我们要先完成 Towhee 和 Milvus 的安装:



Towhee 支持图像 Embedding,音频 Embedding,视频 Embedding 等非结构化数据特征提取的方法,这些都被称为 Towhee 的算子(Operator),算子是流水线(Pipeline)中的单个节点,一个图像特征提取流水线就可以通过连接 image_decode(http://towhee.io/image-decode/cv2) 算子和 image_embedding.timm(http://towhee.io/image-embedding/timm) 算子实现,其中 Embedding 算子可以通过指定利用 ResNet50 模型生成特征向量(结果如图 4 所示):

图 4 ResNet50 特征向量提取


接下来在 Milvus 数据库中创建集合(Collection),集合中的 Fields 包含两列:id 和 embedding,其中 id 是集合的主键。另外我们可以为 embedding 创建 IVF_FLAT (http://milvus.io/docs/v2.0.x/index.md#IVF_FLAT) 基于量化的索引,其中索引的参数是 nlist=2048,计算方式是 "L2" 欧式距离:

如图 5 所示,我们将以图搜图服务分为插入和查询两步:首先在 Towhee hub 上选择所需的图像 Embedding 流水线,用来提取图像数据集的特征向量,再将特征向量存入 Milvus 中;查询的时候利用同样的流水线提取查询图像的特征向量,然后在 Milvus 中检索得出相似的结果,最终展示出图片。

图5 以图搜图流程图

Towhee 不光拥有丰富的算子来处理非结构化数据,还提供了简单好用的接口来处理各种数据,当然也集成了 Milvus 的一些基本用法,通过在“流水线”中连接这些算子或接口,图像入库操作将变得十分简单。


查询图像时需要的图像处理算子与前面类似,包括,和,而在最后分析检索结果时,需用到数据准备部分定义好的函数,通过指定中的将该函数加入到 Towhee 流水线中。


当代码执行完毕之后,我们将得到类似下面的结果。

图 6 查询图像的展示结果

Gradio⁵为机器学习模型提供 Web 演示界面,我们所熟知的 Huggingface 的 Demo 界面也是利用它实现的。Gradio 支持上传和展示图片,如图 7 所示,我们可以利用它实现一个以图搜图可交互的服务,可以在它生成的 Web 界面中上传一张图片,来查询与其相似的其他图片。

图 7 基于 Gradio 的以图搜图服务

Gradio 的使用十分简单,我们只需要定义查询图片的函数,确定其输入和输出,在创建 Gradio 服务的时候绑定函数与对应的输入输出,最后启动服务就搞定了!

当你成功启动了 Gradio,前端页面会嵌入到当前 notebook 中,如图 7 所示,你也可以点击 Gradio 提供的链接(http://127.0.0.1:7860)打开前端,用于查询图片并查看结果。

如果你想要把以图搜图服务和朋友分享,也可以尝试在函数中设置参数,这时会得到一个公共网址,诸如http://xxxx.gradio.app,我们就可以把自己搭建的以图搜图服务分享给小伙伴啦。

其实 Towhee 不仅仅能处理图片这种非结构化数据,对于音频、视频等数据也能进行分析处理,参考本文的实现,同样我们也可以 10 行代码来实现音频处理、视频处理等相关业务的 AI 服务,感兴趣的话大家可以自行尝试。

在下一篇内容中,我将介绍如何对这个系统进行调优处理,敬请期待。

[1]http://zh.wikipedia.org/wiki/%E5%9C%96%E5%83%8F%E6%AA%A2%E7%B4%A2

[2]http://en.wikipedia.org/wiki/Reverse_image_search

[3]http://paperswithcode.com/sota/image-classification-on-imagenet?metric=Top%205%20Accuracy

[4]http://www.image-net.org/

[5]http://gradio.app/



更多项目更新及详细内容请关注我们的项目( http://github.com/towhee-io/towhee/blob/main/towhee/models/README_CN.md) ,您的关注是我们用爱发电的强大动力,欢迎 star, fork, slack 三连 :)

    以上就是本篇文章【搭建自己的以图搜图系统 (一):10 行代码搞定以图搜图】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/11080.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
手机贴膜硬核科普,一分钟搞懂8种手机膜的区别手机钢化膜「手机贴膜硬核科普,一分钟搞懂8种手机膜的区别」
创作立场声明:文中列举商品仅为示范作用,与品牌无关。说起手机贴膜,想必大家并不陌生,很多人拿到手机后的第一件事,就是贴膜
你以为它死了,其实它复活了,诺基亚手机回归带来十个疑问高颜值手机「你以为它死了,其实它复活了,诺基亚手机回归带来十个疑问」
  2008年1月16日,德国波鸿,在一次员工示威期间,一位诺基亚公司的女员工落泪。你以为它死了,其实它复活了,是的,说的就是
华为折叠手机2023新款价格 华为最新款手机折叠华为新款手机「华为折叠手机2023新款价格 华为最新款手机折叠」
折叠手机是智能手机的一种造型,柔性AMOLED屏幕是折叠手机的突破关键。寰宇舷窗,探索未来独创寰宇舷窗设计,以探索之姿洞见未⁠
139手机邮箱注册(139手机号邮箱注册)
  关于《139手机邮箱注册》的文章  在当今信息化社会,电子邮件已成为人们日常生活和工作中不可或缺的一部分。而手机邮箱因
信息门户手机信息「信息门户」
我校信息门户于2019年1月上线,与南京大学APP互为移动端服务补充,为师生提供在线服务、消息提醒、推文宣传等服务功能。 微信搜
手机能一直开着录音吗 手机一直开着录音行吗【详解】手机录音「手机能一直开着录音吗 手机一直开着录音行吗【详解】」
  能一直开着录音,但是要保证电量和储存空间的充足。一旦录音的储存空间被占满,录音就会停止,保证电量充足,可以边充边录音
张蔷属于昨天,更属于“明天”(音乐节)v i v o 手机「张蔷属于昨天,更属于“明天”(音乐节)」
张蔷,中国内地流行音乐代表人物,传奇天才女歌手,80年代中国流行文化偶像符号,21世纪迪斯科回潮的新女皇。 从小深受从事音乐
2k14手机(2k14手机版中文版下载)
  《2K14手机》:超越视觉的极致体验  在当今科技飞速发展的时代,手机已经成为了我们生活中不可或缺的一部分。而《2K14手机
适合情侣玩的手机游戏前五名 有适合两个人玩的游戏吗情侣手机「适合情侣玩的手机游戏前五名 有适合两个人玩的游戏吗」
游戏还是两个人一起玩有意思,特别是情侣之间,不但能娱乐,还能增进俩人之间的亲密感情。还有异地恋的情侣们,每天只能依靠煲电
创新之城,非凡园区!星海红领巾访园区展示中心v i v o 手机「创新之城,非凡园区!星海红领巾访园区展示中心」
创新之城 非凡园区红领巾寻访苏州工业园区展示中心 这里的街道宽敞整洁,很少见到密如蛛网的电线和凌乱的街边小店; 这里的马路