人工智能图搜索算法,python抓图

  人工智能图搜索算法,python抓图

  这篇文章主要为大家详细介绍了如何基于利用光彩造型修护发膏网络和克拉斯深度学习框架实现以图搜图功能。文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下

  

目录
前言一、实验要求二、环境配置三、代码文件1、vgg.py2、index.py3、test.py四、演示1、项目文件夹2、相似度排序输出3、保存结果五、尾声

  

前言

  基于利用光彩造型修护发膏网络和克拉斯深度学习框架的以图搜图功能实现。

  

一、实验要求

  给出一张图像后,在整个数据集中(至少100个样本)找到与这张图像相似的图像(至少5张),并把图像有顺序的展示。

  

二、环境配置

  解释器:python3.10

  编译器:Pycharm

  必用配置包:

  numpy、h5py、matplotlib、keras、pillow

  

三、代码文件

  

1、vgg.py

  # -*-编码: utf-8 -*-

  将数组作为铭牌导入

  从数组进口利纳尔格as LA

  从keras.applications.vgg16导入vgg16

  预处理导入图像

  从keras.applications.vgg16导入预处理输入作为预处理输入利用光彩造型修护发膏

  VGGNet:级

  def __init__(self):

  self.input_shape=(224,224,3)

  self.weight=imagenet

  self.pooling=max

  自我。model _ vgg=vgg 16(权重=自身。权重,input _ shape=(自身。input _ shape[0],self.input_shape[1],self.input_shape[2]),pooling=self.pooling,include_top=False)

  自我。型号_ vgg。预测(NP。零((1,224,224,3)))

  #提取vgg16最后一层卷积特征

  def vgg_extract_feat(self,img_path):

  img=image.load_img(img_path,target _ size=(self。input _ shape[0],self.input_shape[1])

  img=image.img_to_array

  img=np.expand_dims(img,axis=0)

  img=预处理_输入_vgg(img)

  壮举=自我。型号_ vgg。预测(img)

  # print(feat.shape)

  norm _ feat=feat[0]/la。范数(专长[0])

  返回定额_专长

  

2、index.py

  # -*-编码: utf-8 -*-

  导入操作系统

  导入h5py

  将数组作为铭牌导入

  导入命令行解析模块

  从利用光彩造型修护发膏导入VGGNet

  def get_imlist(路径):

  在os.listdir(路径)中为f返回[os.path.join(path,f)如果f .以(.jpg)]

  if __name__==__main__:

  database = rD:\pythonProject5\flower_roses

   index = vgg_featureCNN.h5

   img_list = get_imlist(database)

   print(" feature extraction starts")

   feats = []

   names = []

   model = VGGNet()

   for i, img_path in enumerate(img_list):

   norm_feat = model.vgg_extract_feat(img_path) # 修改此处改变提取特征的网络

   img_name = os.path.split(img_path)[1]

   feats.append(norm_feat)

   names.append(img_name)

   print("extracting feature from image No. %d , %d images in total" % ((i + 1), len(img_list)))

   feats = np.array(feats)

   output = index

   print(" writing feature extraction results ...")

   h5f = h5py.File(output, w)

   h5f.create_dataset(dataset_1, data=feats)

   # h5f.create_dataset(dataset_2, data = names)

   h5f.create_dataset(dataset_2, data=np.string_(names))

   h5f.close()

  

  

3、test.py

  

# -*- coding: utf-8 -*-

  from vgg import VGGNet

  import numpy as np

  import h5py

  import matplotlib.pyplot as plt

  import matplotlib.image as mpimg

  import argparse

  query = rD:\pythonProject5\rose\red_rose.jpg

  index = vgg_featureCNN.h5

  result = rD:\pythonProject5\flower_roses

  # read in indexed images feature vectors and corresponding image names

  h5f = h5py.File(index, r)

  # feats = h5f[dataset_1][:]

  feats = h5f[dataset_1][:]

  print(feats)

  imgNames = h5f[dataset_2][:]

  print(imgNames)

  h5f.close()

  print(" searching starts")

  queryImg = mpimg.imread(query)

  plt.title("Query Image")

  plt.imshow(queryImg)

  plt.show()

  # init VGGNet16 model

  model = VGGNet()

  # extract query images feature, compute simlarity score and sort

  queryVec = model.vgg_extract_feat(query) # 修改此处改变提取特征的网络

  print(queryVec.shape)

  print(feats.shape)

  scores = np.dot(queryVec, feats.T)

  rank_ID = np.argsort(scores)[::-1]

  rank_score = scores[rank_ID]

  # print (rank_ID)

  print(rank_score)

  # number of top retrieved images to show

  maxres = 6 # 检索出6张相似度最高的图片

  imlist = []

  for i, index in enumerate(rank_ID[0:maxres]):

   imlist.append(imgNames[index])

   print(type(imgNames[index]))

   print("image names: " + str(imgNames[index]) + " scores: %f" % rank_score[i])

  print("top %d images in order are: " % maxres, imlist)

  # show top #maxres retrieved result one by one

  for i, im in enumerate(imlist):

   image = mpimg.imread(result + "/" + str(im, utf-8))

   plt.title("search output %d" % (i + 1))

   plt.imshow(np.uint8(image))

   f = plt.gcf() # 获取当前图像

   f.savefig(rD:\pythonProject5\result\{}.jpg.format(i),dpi=100)

   #f.clear() # 释放内存

   plt.show()

  

  

四、演示

  

  

  

  

  

  

1、项目文件夹

  

  数据集

  

  结果(运行前)

  

  原图

  

  

  

2、相似度排序输出

  

  

  

3、保存结果

  

  

  

五、尾声

  分享一个实用又简单的爬虫代码,搜图顶呱呱!

  

import os

  import time

  import requests

  import re

  def imgdata_set(save_path,word,epoch):

   q=0 #停止爬取图片条件

   a=0 #图片名称

   while(True):

   time.sleep(1)

   url="https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word={}&pn={}&ct=&ic=0&lm=-1&width=0&height=0".format(word,q)

   #word=需要搜索的名字

   headers={

   User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56

   }

   response=requests.get(url,headers=headers)

   # print(response.request.headers)

   html=response.text

   # print(html)

   urls=re.findall("objURL":"(.*?)",html)

   # print(urls)

   for url in urls:

   print(a) #图片的名字

   response = requests.get(url, headers=headers)

   image=response.content

   with open(os.path.join(save_path,"{}.jpg".format(a)),wb) as f:

   f.write(image)

   a=a+1

   q=q+20

   if (q/20)>=int(epoch):

   break

  if __name__=="__main__":

   save_path = input(你想保存的路径:)

   word = input(你想要下载什么图片?请输入:)

   epoch = input(你想要下载几轮图片?请输入(一轮为60张左右图片):) # 需要迭代几次图片

   imgdata_set(save_path, word, epoch)

  到此这篇关于Python人工智能实战之以图搜图的实现的文章就介绍到这了,更多相关Python以图搜图内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

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

相关文章阅读

  • chatgpt是什么?为什么这么火?
  • 如何看待马斯克等全球千名科技人士联名呼吁暂停更强大的AI开发?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • Tiamat人工智能绘画网站,Tiamat自动作图生成器,网址是多少?
  • 盗梦师人工智能绘画网站,盗梦师自动作图生成器,网址是多少?
  • 无界版图人工智能绘画网站,无界版图自动作图生成器,网址是多少?
  • 滴墨社区人工智能绘画网站,滴墨社区自动作图生成器,网址是多少?
  • draft.art官网网址是多少?Draft人工智能绘画网站,Draft art自动作图生成器
  • 6pen.art人工智能绘画网站,6pen.art自动作图生成器,网址是多少?
  • 文心一格人工智能绘画网站,文心一格自动作图生成器,网址是多少?
  • NovelAI人工智能绘画网站,NovelAI自动作图生成器,网址是多少?
  • Parti人工智能绘画网站,Parti自动作图生成器,网址是多少?
  • Disco Diffusion 人工智能绘画网站,Disco Diffusion 自动作图生成器,网址是多少?
  • 留言与评论(共有 条评论)
       
    验证码: