前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实战 | 多种方法实现以图搜图

实战 | 多种方法实现以图搜图

作者头像
AI算法与图像处理
发布2019-09-25 15:17:35
2.4K0
发布2019-09-25 15:17:35
举报

作者:Anson Wong 编译:AI算法与图像处理 代码链接:https://github.com/ankonzoid/artificio/tree/master/image_retrieval 以图搜图技术是日常生活中常用的功能,当你看到某张图片某件衣服甚至是某个明星,可能都无须舔着脸问你身边的小伙伴了,因为目前的搜图技术能基本满足你的日常需求。那么这么有趣又实用的技术,到底如何去实现它呢?之前有分享过两篇相关的文章《是时候展示一波花里胡哨了——以图搜图》 《以图搜图技术演进和架构优化【优质文章】预期目标

之前分享的相对比较麻烦,需要多个操作步骤,最终的显示效果也并不是非常美观。因此今天,我们膨胀了,希望一步到位并让结果更加漂亮哦~ 定个小目标: 希望输出下面的结果,最上面一行是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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI算法与图像处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 之前分享的相对比较麻烦,需要多个操作步骤,最终的显示效果也并不是非常美观。因此今天,我们膨胀了,希望一步到位并让结果更加漂亮哦~ 定个小目标: 希望输出下面的结果,最上面一行是query图片(需要查询图片),下面一行输出五个与查询图片最接近的结果。
    • Simple Autoencoder
      • 使用方法
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档