python写搜索程序,哪里可以搜python的题

  python写搜索程序,哪里可以搜python的题

  随着深度学习的兴起,极大地推动了图像领域的发展。在特征提取方面,神经网络目前具有不可替代的优势。在上一篇文章中我们也介绍过,图像检索往往是基于图像的特征比较,看特征匹配程度如何,从而检索出相似度高的图像。VGG16在检测图像特征方面有独特的优势。

  接下来,本文将通过一个简单的案例实现一个基于深度学习的图像检索小工具。

  准备工作/即将开始工作

  像往常一样,先准备好我们这次需要用到的工具:

  IDE:Pycharm

  Python:3.7

  包装:Keras TensorFlow枕头Numpy

  深度学习

  Keras是一个高级神经网络API。Keras是纯Python编写的,基于Tensorflow、Theano和[CNTK backend]。简单来说,keras是对TF等框架的另一种封装,使用起来更加方便。

  基于vgg16网络的图像特征提取

  众所周知,vgg网络广泛应用于图像领域。后续很多层次更深、网络更广的模型都是基于这种扩展。vgg网络可以很好地提取图像的有用特征。该实现基于Keras,提取最后一层的卷积特征。

  思考

  主要思想是在海量数据下,基于CVPR2015论文《Deep Learning of Binary Hash Codes for Fast Image Retrieval》的基于内容的图像检索系统。简单来说就是从图片数据库中的每张图片中提取特征(通常是特征向量)并存储到数据库中。对于要检索的图片,提取相同的特征向量,然后计算这个向量与数据库中的向量的距离(相似度),找出一些最接近的特征向量,对应的图片就是检索结果。如下图所示:

  用户的请求和预处理部分主要是Web服务器要做的,这里就不讨论了。接下来主要实现红线标注部分。

  实际操作

  提取图像特征

  Keras在其中文文档中提供了使用VGG16进行特征提取的演示。

  学习过程中有什么不知道的可以加我。

  学习python交流扣群,784758214

  群里有不错的学习视频教程,开发工具,电子书。

  和大家分享一下当前python企业的人才需求,如何从零开始学好python,学什么。

  从keras.applications.vgg16导入vgg16

  预处理导入图像

  从keras.applications.vgg16导入预处理_输入

  将numpy作为np导入

  model=VGG16(weights=imagenet ,include_top=False)

  img_path=elephant.jpg

  img=image.load_img(img_path,target_size=(224,224))

  x=image.img_to_array(img)

  x=np.expand_dims(x,轴=0)

  x=预处理输入(x)

  特征=模型.预测(x)

  这里我们只需要简单的修改一下,封装成一个类,供以后调用。如下图所示:

  将特征和相应的文件名保存为h5文件。

  什么是h5文档?

  H5文件是层次数据格式(HDF5)的第五代版本,用于存储和组织大规模数据。

  H5文件结构简化为两种主要的对象类型:

  数据集是同一类型数据的多维数组。

  组是一个容器结构,可以包含数据集和其他组。如果一个文件包含不同种类的数据集,这些数据集的管理将使用组。

  直观的理解,可以参考我们的文件系统,不同的文件存放在不同的目录下:

  是目录hdf5文件中的组,描述了数据集的分类信息,通过组对各种数据集进行有效的管理和划分。是文件hdf5中的数据集,表示特定的数据。

  下图显示了数据集和组之间的关系:

  在Python中,我们通常使用h5py库来操作。h5文件。具体的读写方法都是百度的,这里就不演示了。

  数据集中提取的图像特征保存在h5文件中。

  我们将一个数据库文件夹命名为项目根目录下的数据集,然后编写了一个方法来获取文件夹中的图片:

  def get_imlist(路径):

  在os.listdir(path)中为f返回[os.path.join(path,f)if f . ends with(。jpg)]

  然后我们可以依次读取数据,然后逐个提取它们的特征保存在文件中。如下图:

  至此,我们已经完成了模型的训练。

  选择一张测试图片来测试检索效果。

  经过以上操作,我们已经将数据集中所有图片的特征保存到模型中,剩下的就是提取待测图片的特征,然后将向量之间的相似度(余弦相似度)逐一与特征集中的特征进行比较,然后按照相似度的顺序返回给用户。

  以某款包包为测试图片,输出结果如下:

  在PyCharm中,您可以轻松查看matplotlib生成的图像。第一个是测试图像,后三个是搜索图像。可见效果还是挺好的。

  如果你还在编程的世界里迷茫,可以加入我们的Python学习扣扣群:784758214,看看花生是怎么快乐学习的。从基本的python脚本到web开发、爬虫、django、数据挖掘等。整理了从0基础到实际项目的资料。送给每一个python朋友!每天分享学习方法和有趣的实用教程和技术经验!点击加入我们python学习者的聚集地。

  最后

  到目前为止,我们已经实现了一个利用深度学习进行图像检索的小工具,如何将其与web/app结合不在本文讨论范围内。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: