实现了一个简单的以图搜图功能(带代码)

不用训练,直接用在ImageNet上训练的RestNet网络就可以做一个简单的以图搜图功能

1、RestNet网络

在这里插入图片描述
上面是resnet网络的结构图,ImageNet是一个有1000类的数据集,我们可以把在该数据集上训练过的Resnet网络当成特征提取器,用来提取图片的特征,然后比对特征的欧式距离,判定两种图片的相似性。
average pool的输出是512x1x1,将其reshape为512x1当作该图片的特征。

2、生成RestNet网络

arch_name = “resnet18"
pretrained = True,加载预训练模型

self.retriever_net = torchvision.models.__dict__[arch_name](pretrained = pretrained)

3、提取average pool层的输出

feature_layer_name = ‘avgpool’
feature_index_in_module = 0
register_forward_hook函数,forward时负责保存某个模块的输出

self.feature_layer_name = feature_layer_name
self.feature_index_in_module = feature_index_in_module   self.retriever_net._modules.get(self.feature_layer_name).register_forward_hook(self.hook_feature)

4、比对两个特征

使用欧式距离

dist = F.pairwise_distance(contrast_features, retrieved_features, p=2)

5、贴一张我简陋的gui界面,要捂脸啦

在这里插入图片描述左边的load是加载一张对比图片,右边的load是加载一个文件夹,点Retriever,开始在加载的文件夹中查找和对比图片top1相似的图片,然后显示出来。

两天里面挤时间写的,所以功能很简单,gui很简陋,自己倒是觉得挺有意思的,给大家抛砖引玉吧,全部代码在这里。
image_retrieval_with_gui

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用百度AI开放平台的图像搜索API实现以图搜图的Python代码示例: ```python import requests import base64 # 百度AI开放平台图像搜索API接口地址 url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/search" # 百度AI开放平台API Key和Secret Key api_key = "your_api_key" secret_key = "your_secret_key" # 读取待搜索的图片文件 with open("image.jpg", "rb") as f: image_data = f.read() # 将图片数据转换为base64编码格式 image_base64 = base64.b64encode(image_data).decode() # 构造API请求的参数 params = { "image": image_base64, "quality_control": "HIGH", "detect_direction": "true" } # 使用API Key和Secret Key进行身份验证,获取Access Token auth_url = "https://aip.baidubce.com/oauth/2.0/token" auth_params = { "grant_type": "client_credentials", "client_id": api_key, "client_secret": secret_key } auth_response = requests.post(auth_url, data=auth_params) access_token = auth_response.json()["access_token"] # 发送API请求,获取搜索结果 headers = {"Content-Type": "application/x-www-form-urlencoded"} params["access_token"] = access_token response = requests.post(url, headers=headers, data=params) result = response.json() # 输出搜索结果 print(result) ``` 在代码中,需要替换以下部分: - `your_api_key`和`your_secret_key`为在百度AI开放平台注册并创建的应用所对应的API Key和Secret Key。 - `"image.jpg"`为待搜索的图片文件路径,可以根据实际情况进行修改。 注意:使用百度AI开放平台的API需要进行身份验证,因此需要在代码中调用Access Token接口获取Access Token,并将Access Token作为请求参数发送给图像搜索API。Access Token的有效期为30天,过期后需要重新获取。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值