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

网友投稿 2127 2022-10-24

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

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

在学习中发现快乐,在应用找到价值。这是我第九期分享图像技术应用的文章。

概述

作者:Anson Wong编译:AI算法与图像处理代码链接:embeddings(将图片数据转换为固定大小的特征表示——矢量)上以余弦相似度作为距离度量使用kNN获取前k个最相似的数据库中的图片。

在接下来的例子中,我们提供了36个食物数据库中的图片(每种食物有6张图:牛排、土豆、 炸薯条、沙拉、汉堡、芦笋),通过查询3张并未在数据库中出现的测试图片执行图片搜索功能。

链接中的代码已提供爬Google图片的代码以及对图片进行预处理的相关操作

将采用以下两种方法执行以图搜图功能:

1)Transfer learning2)Training AutoencodersTrainsfer learning

通过使用例如预训练模型VGG19生成  image embeddings(可以理解为图片的特征向量) 。这是通过移除VGG199模型最后的基层,并对我们的图片进行维度变换,压缩成一维向量。整个过程无需训练,只需利用预训练模型的权重即可。

下图为整个过程的原理图:

Training Autoencoders

我们在数据库图片上同时训练simple autoencoder 和 convolutional  autoencoder ,并使的reconstruction loss 最小。经过充分训练后,我们提取autoencoder的编码器部分,并在推理过程中使用它生成 flattened embeddings。

看了下面这张图也许,能明白一些东西

可视化结果

Transfer Learning

Convolutional Autoencoder

Simple Autoencoder

使用方法

项目结构:再次放一下链接: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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Kitura:一个Swift Web 框架和 HTTP 服务器
下一篇:Spring事务失效场景实例详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~