实战 | 多种方法实现以图搜图
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本文转自:AI 算法与图像处理
概述
以图搜图技术是日常生活中常用的功能,当你看到某张图片某件衣服甚至是某个明星,可能都无须舔着脸问你身边的小伙伴了,因为目前的搜图技术能基本满足你的日常需求。
那么这么有趣又实用的技术,到底如何去实现它呢?
预期目标
之前分享的相对比较麻烦,需要多个操作步骤,最终的显示效果也并不是非常美观。因此今天,我们膨胀了,希望一步到位并让结果更加漂亮哦~
定个小目标:
希望输出下面的结果,最上面一行是query图片(需要查询图片),下面一行输出五个与查询图片最接近的结果。
实施方案
给定一组查询图片和数据库图片。我们对数据库图片执行以图搜图操作,在image embeddings(将图片数据转换为固定大小的特征表示——矢量)上以余弦相似度作为距离度量使用kNN获取前k个最相似的数据库中的图片。
在接下来的例子中,我们提供了36个食物数据库中的图片(每种食物有6张图:牛排、土豆、炸薯条、沙拉、汉堡、芦笋),通过查询3张并未在数据库中出现的测试图片执行图片搜索功能。
链接中的代码已提供爬Google图片的代码以及对图片进行预处理的相关操作
将采用以下两种方法执行以图搜图功能:
1)Transfer learning
2)Training Autoencoders、
Trainsfer learning
通过使用例如预训练模型VGG19生成 image embeddings(可以理解为图片的特征向量) 。这是通过移除VGG199模型最后的基层,并对我们的图片进行维度变换,压缩成一维向量。整个过程无需训练,只需利用预训练模型的权重即可。
下图为整个过程的原理图:
Training Autoencoders
我们在数据库图片上同时训练simple autoencoder 和 convolutional autoencoder ,并使的reconstruction loss 最小。经过充分训练后,我们提取autoencoder的编码器部分,并在推理过程中使用它生成 flattened embeddings。
看了下面这张图也许,能明白一些东西
可视化结果
Transfer Learning
Convolutional Autoencoder
Simple Autoencoder
使用方法
项目结构:再次放一下链接:https://github.com/ankonzoid/artificio/tree/master/image_retrieval
运行程序 image_retrieval.py即可实现我们的上图效果,最终的结果会保存到 新建的output文件中。
我们通过对 image_retrieval.py 中的modelName进行调整,以选择你需要的方法:
这里提供了三种可选模型
modelName = "convAE" # try: "simpleAE", "convAE", "vgg19"
三种模型的含义:
"simpleAE"
= simple fully-connected autoencoder"convAE"
= multi-layer convolutional autoencoder"vgg19"
= pre-trained VGG19 for transfer learning
原文代码中注释的非常清晰了这里就过多解释了
最后注意一下需要的库:
tensorflow, skimage, sklearn, multiprocessing, numpy, matplotlib
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
实战 | 多种方法实现以图搜图相关推荐
- 零基础实战行人重识别ReID项目-基于Milvus的以图搜图
目录 第一阶段,ReID的基本概念 1.1 ReID定义 1.2 技术难点 1.3 常用数据集 1.4 评价指标 1.5 实现思路 1.6 具体方案 第二阶段:复现算法 2.1 PCB的骨干网络 2. ...
- 拍立淘创始人潘攀博士为你揭开“以图搜图”的神秘面纱!
当你无意中看到一件心仪的衣服,却不知道它的品牌.条码等信息,也不知道怎么在淘宝中搜同款时,有没有尝试用过淘宝中拍照搜商品的功能呢? 通过拍照来搜索商品(简称"以图搜图"),在淘宝中 ...
- 【Milvus的以图搜图】
0. 介绍 Milvus官方在bootcamp项目中给开发者提供多种解决方案,包含常见的以图搜图.人脸检索.DNA相似性检索.视频检索等等,具体可以参考bootcamp项目. 本文主要就bootcam ...
- 搭建自己的以图搜图系统(二):深入优化搭建生产级别的图搜系统
概述 本文是"搭建自己的以图搜图系统"系列的第二篇,在第一篇内容中我们了解了如何利用"机器学习框架 Towhee ¹"和"向量数据库 Milvus ² ...
- “以图搜图”引擎及网站合集(转)
转载---http://blog.csdn.net/forthcriminson/article/details/8698175 1.QBIC http://www.research.ibm.com/ ...
- 图像匹配,基于深度学习DenseNet实现以图搜图功能
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx 度学习的发展使得在此之前以机器学习为主流算法的相关实现变得简单,而且准确率更高,效果更好,在图 ...
- 拍立淘-以图搜图中的图像搜索算法
摘要:移动端的以图搜图是一代又一代的图像人,搜索人的梦想.从90年代开始,学术界,工业界做了很多的努力和尝 试.拍立淘-以图搜图,从14年正式立项开始,通过算法/工程/产品的不断打磨,以及兄弟部门的紧 ...
- python以图搜图_以图搜图(一):Python实现dHash算法(转)
近期研究了一下以图搜图这个炫酷的东西.百度和谷歌都有提供以图搜图的功能,有兴趣可以找一下.当然,不是很深入.深入的话,得运用到深度学习这货.Python深度学习当然不在话下. 这个功能最核心的东西就是 ...
- 推荐系统工程篇之搭建以图搜图服务
基于内容的召回在推荐系统中是比较常见的召回策略,常见有基于用户或物品的标签召回或者基于用户的年龄,地域等召回,一般该策略的实现是基于开源软件 Elasticseach 实现的.虽然召回的结果都比较合理 ...
最新文章
- Sqoop2入门之导入关系型数据库数据到HDFS上(sqoop2-1.99.4版本)
- Kafka:分布式消息队列的抽象模型
- python读取连接数据库文件_python 读取配置文件 pandas连接数据库
- MySQL条件运算符的使用
- Angular NgReflectProperty的设置位置 - 只有在调试模式下才设置该属性
- no amd graphics driver怎么解决_《英雄联盟手游》卡顿怎么解决 游戏设置优化教程...
- .NET Core跨平台的奥秘[下篇]:全新的布局
- js和python哪个好_Python与Node.JS:哪一个比较适合您的项目?
- Windows系统利用5次shift维权漏洞复现
- ACM做题过程中的一些小技巧
- win7下开启telnet命令
- 东北大学金工实习考试题库
- sox处理mp3_音频处理利器--SoX
- C++模板偏特化和全特化
- 荣耀linux电脑开机后黑屏,开机黑屏进不了系统,教您解决电脑开机黑屏进不了系统...
- MATLAB教程二:MATLAB矩阵处理
- Vue3.x使用富文本tinymce-vue
- 对计算机专业学生的忠告
- 我的2021秋招 | 互联网、银行、选调 经验分享
- 计算机水平熟悉情况,计算机水平如何填
热门文章
- 百度自动驾驶新突破:获首批T4牌照,升级Apollo 5.0,将进行复杂城市场景路测...
- Github免费中文书《Go入门指南》,带你从零学Go | 极客头条
- 一分钟AI | 特斯拉发布电动卡车,扫地机器人被曝窥探个人隐私
- Stack Overflow被收购了,以后要付费“抄代码”?
- 图解 SQL 中 JOIN 的各种用法
- 面试被问烂的 Spring IOC(求求你别再问了)
- 邀请了阿里的学长学姐分享
- 关于计算机读研的小建议
- DeepMind一键三连,强推「地鼠」语言模型!只要2800亿参数就能刷SOTA
- 又一位!26岁当上985博导,读博期间也曾两次想要退学......