使用TensorFlow查询类似图片

本文探讨了如何利用深度学习算法解决图像相似性查询问题。比较了两种方法:自动编码器和图像特征提取。通过训练自动编码器和利用预训练的VGG16模型,提取图像特征并计算欧氏距离来寻找最相似的图像。实验证明,两种方法都能提供相似的结果。
摘要由CSDN通过智能技术生成

介绍

假设你要搜索与任何图片相似的图像。想象一下在网上搜索与我们用手机拍摄的图像相似的图像。在本文中,我们将开发和比较两种不同的方式,这些方式可以使用深度学习算法解决在数千张图像(最相似的图像)之间进行查询的问题。

我们将比较两种不同的方法:

  • 自动编码器

  • 图像特征提取

数据

我们将使用Flipkart图像数据集来解决这个问题。因此,我们将从这种庞大的印度电子商务产品中找到相似的图片。

从数据上的可用URL下载图像后,我们获得了18322张不同产品的图像。

可以在此Github存储库中找到用于下载图像和开发两种方法的代码。

  • Github存储库:https://github.com/luchonaveiro/image-search-engine

自动编码器

让我们尝试通过使用自动编码器模型获得相似的图像。这种类型的模型包括三个主要部分:

  • 编码器

  • 潜在空间

  • 解码器

该模型背后的思想是重构我们为算法提供的输入,因此输入和输出大小相同。因此,如果我们可以输入,则可以将图像的尺寸减小到非常小的向量,而该向量就是潜在空间。如果模型是健壮的,我们可以将图像的所有复杂性降低到较小的尺寸。

为了训练自动编码器,我们将使用Tensorflow 2.0库中的Keras模块。

下载图像后,我们可以定义训练和验证集。在这里,我们将使用ImageDataGenerator API。

from tensorflow.keras.preprocessing.image import ImageDataGenerator, load_img, img_to_array, array_to_img
from tensorflow.keras.models import Model, load_model
from tensorflow.keras.layers import Flatten, Conv2D, Conv2DTranspose, LeakyReLU, BatchNormalization, Input, Dense, Reshape, Activation
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.callbacks import ModelCheckpoint
import tensorflow.keras.backend as K
import numpy as np
import matplotlib.pyplot as plt
from tqdm import tqdm_notebook as tqdm
import pickle
import pandas as pd

# Load images
img_height = 256
img_width = 256
channels = 3
batch_size = 16

train_datagen = ImageDataGenerator(rescale=1./255,
                                   validation_split=0.2)

training_set = train_datagen.flow_from_directory(
    './flipkart/images',
     target_size = (img_height, img_width),
     batch_size = batch_size,
     class_mode = 'input',
     subset = &
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值