TensorFlow-similarity 学习笔记13

本文档介绍了使用TensorFlow-Similarity构建一个图像搜索系统,该系统根据相似度返回最匹配的图片。系统采用VGG16模型进行特征提取,并利用L2范数计算图像之间的距离。在预处理阶段,使用PIL处理图片以确保一致性。通过对比不同神经网络的特征数量,选择VGG16是因为其高效且易于使用。
摘要由CSDN通过智能技术生成

2021SC@SDUSC

本篇博客为项目汇报:应用本学期对Tensorflow.Similarity的学习认识,实现相似图片搜索系统。

摘要

传统图像搜索引擎是一个图像数据库,一般可以通过使用关键字进行搜索,以便用户可以找到有价值的图像。 创建于 2001 年 7 月 12 日的谷歌图片搜索引擎是当今最全面、最著名的图片搜索引擎,2001 年,Google 注意到对其常规搜索无法满足的特定查询的巨大搜索需求。 对于特定的搜索,谷歌注意到图像结果会比同样情况下的文本结果好得多。但是限制与图片的特定标注以及不同用户对同一事物描述的差异,当用户根据一个图片搜索其他相关图片时,结果往往不理想。
[1] [2] 介绍了如何利用PyTorch训练和评估CNN以进行图像搜索,包括:用于图像检索的训练(微调)CNN;Supervised Whitening,作为后处理,用于全局图像描述符;在Oxford和Paris数据集上测试 CNN 图像检索。
综上,结合学习相似开源项目代码[3][4],我使用Tensorflow.Keras(目前流行的开源人工神经网络库)+ Flask,编写完成一个简单但易于使用的Image Reverse Retrieval Engine。

1 总体设计

1.1 需求规定及运行环境

使用者上传需要搜索的图片,根据相似度的高低排序反馈前30个最相似的图片。

在这里插入图片描述
如图,输入图片为人和一只宠物狗,系统反馈30张同种类宠物狗的图片,并更具相似度高低排序输出。

1.2 基本设计概念和处理流程

代码部分分为三大主体:feature_extractor.py, offline.py, server.py。

feature_extractor.py:调用深度学习模型,定义方法extract(self, img)进行图像预处理并
利用ImageNet预训练模型VGG-16进行特征提取,最后对提取的特征矩阵正则处理。
Offline.py:对数据库里的每个图片进行一个特征提取,每个4096D特征存入./static/feature以便后期搜索。
server.py:此文件运行网络服务器。 我们可以通过 Flask 网络界面将我们的查询图像发送到服务器。 服务器通过简单的线性搜索找到与查询相似的图像。

在这里插入图片描述

2 图像预处理

在框架飞速发展的今天,每个框架都有自己处理图片的方式,每个框架都有自己的规范。 因此,在一个框架中开发的 CV 解决方案在另一个框架中可能无法按预期工作。[5] “Tensorflow 的 tf.image.resize 如何偷走了我生命中的 60 天” 是这种情况的一个例子。 找出问题所在可能需要数天时间,并且可能会大大延迟项目进度。

2.1读取和预处理

因为计算机视觉实验均使用opencv完成,当最初使用OpenCV读取图片时,会出现部分图片颜色不正常情况,如下图1:

通常,图像具有红、绿和蓝 (RGB) 三种颜色通道,它们在像素中产生颜色。 这些通道的顺序会改变像素的颜色,因为像素总是将第一个通道解释为红色,第二个通道解释为绿色,第三个通道解释为蓝色。当我们使用 OpenCV 打开图像时,默认情况下 OpenCV 在蓝色、绿色和红色通道 (BGR) 中打开图像。但是当我们显示图像时,像素会误解通道(即像素会混淆并将蓝色解释为红色,反之亦然)。 这就是我们在图像中得到上述错误颜色的原因。另外当使用TensorFlow读取图片时,其默认的Discrete Cosine Transform会时图片像素点数值出现偏差,影响后续特征提取过程。所以经过尝试,使用PIL(python image libraries)读取图片,并统一到(224,224)大小以便后续训练,可以通过简单步骤完成同时避免上述问题:

from PIL import Image
from tensorflow.keras.preprocessing imp
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值