关键词:
with torch.no_grad()
https://blog.csdn.net/CRDarwin/article/details/119943128
# coding: utf-8
from PIL import Image
from torch.utils.data import Dataset,DataLoader
import torch.nn as nn
import torch
import torchvision
import torchvision.transforms as transforms
import numpy as np
import os
def cos_sim(a, b):
"""
计算两个向量之间的余弦相似度
"""
a = np.mat(a)
b = np.mat(b)
return float(a * b.T) / (np.linalg.norm(a) * np.linalg.norm(b))
class MyDataset(Dataset):
def __init__(self, file_path,transform = None):
file_name=os.listdir(file_path)
imgs = []
img_names = []
for file in file_name:
image_path=os.path.join(file_path,file)
imgs.append(image_path)
img_names.append(file)
self.imgs = imgs
self.img_names = img_names
self.transform = transform
def __getitem__(self, index):
fn= self.imgs[index]
img_name=self.img_names[index]
img = Image.open(fn).convert('RGB')
if self.transform is not None:
img = self.transform(img)
return img,img_name
def __len__(self):
return len(self.imgs)
file_path="F:/my_code/2021/sf/data/ICR_EXT/"
save_path="F:/my_code/2021/sf/data/s/"
preprocess = transforms.Compose([
transforms.ToTensor(),
transforms.Resize((512,640)),
])
mydata=MyDataset(file_path,transform=preprocess)
l=mydata.__len__()
mydata_loader=DataLoader(mydata,batch_size=32,shuffle=True)
device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')
model = torchvision.models.shufflenet_v2_x0_5(pretrained=True)
model.fc = nn.Sequential()
model.to(device)
model.eval()
img_names=[]
img_features = []
for image,img_name in mydata_loader:
image = image.to(device, torch.float)
img_names.append(img_name)
with torch.no_grad():
predictions = model(image)
predictions.unsqueeze_(1)
for t in predictions:
img_features.append(t)
print(len(img_features))
b = str(img_names)
b = b.replace('(', '')
b = b.replace(')', '')
img_names = list(eval(b))
torch.cat(img_features,dim=0)
dictionary = dict(zip( img_features,img_names))
result=[]
while len(dictionary)>0:
imgf=list(dictionary.keys())[0]
result.append(dictionary.get(imgf))
dictionary.pop(imgf)
for img_feature in list(dictionary.keys()):
if cos_sim(imgf.tolist(),img_feature.tolist())>0.93:
dictionary.pop(img_feature)
for image_name in result:
image_path = os.path.join(file_path,image_name)
image = Image.open(image_path)
save_img_path= os.path.join(save_path,image_name)
image.save(save_img_path)
print(result.__len__())
如何测量预训练模型(例如 vgg、resnet...)提取的图像特征之间的语义相似度?
】如何测量预训练模型(例如vgg、resnet...)提取的图像特征之间的语义相似度?【英文标题】:Howtomeasurethesemanticsimilaritiesamongimagefeaturesextractedbypre-trainedmodels(e.g.vgg,resnet...)?【发布时间】:2021-11-0522:47:18【问题描述】:据我所知... 查看详情
计算两个数组之间余弦相似度的正确方法?
...,该项目检测两个输入图像(手写签名)的一些特征,并使用余弦相似度比较这两个特征。这里当我指的是两个输入图像时,一个是原始图像,另一个是复制图像。假设我正在提取一张图像(原始图像)的15个这样的特征并将其... 查看详情
深度图像检测算法总结与对比
...dsemanticsegmentation技术路线:selectivesearch+CNN+SVMsStep1:候选框提取(selective search)训练:给定一张图片,利用seletivesearch方法从中提取出2000个候选框。由于候选框大小不一,考虑到后续CNN要求输入的图片大小统一,将2000个候选框全... 查看详情
基于特征点匹配的图像相似度算法之sift特征(代码片段)
...SSIM以及UQI等指标来计算图像之间的相似度。但是,在使用这些算法计算图像相似的时候两张图像的size必须一致,而且这些算法对于图像的旋转、缩放、平移、仿射变换以及光照强度等都是不鲁棒的。这篇文章我们来介绍... 查看详情
数据挖掘视觉模式挖掘:hog特征+余弦相似度/k-means聚类(代码片段)
1.实验概述本次实验使用的是VOC2012数据集,首先从图像中随机采样图像块,然后利用Hog方法提取图像块特征,最后采用余弦相似度和k-means聚类两种方法来挖掘视觉模式。2.数据集说明本次实验使用VOC2012数据集。VOC2012... 查看详情
基于特征点匹配的图像相似度算法之sift特征(代码片段)
...SSIM以及UQI等指标来计算图像之间的相似度。但是,在使用这些算法计算图像相似的时候两张图像的size必须一致,而且这些算法对于图像的旋转、缩放、平移、仿射变换以及光照强度等都是不鲁棒的。这篇文章我们来介绍... 查看详情
基于特征点匹配的图像相似度算法之sift特征(代码片段)
...SSIM以及UQI等指标来计算图像之间的相似度。但是,在使用这些算法计算图像相似的时候两张图像的size必须一致,而且这些算法对于图像的旋转、缩放、平移、仿射变换以及光照强度等都是不鲁棒的。这篇文章我们来介绍... 查看详情
有啥可以对比两张图片得出相似度的软件。
...照搜商品等。图片相似度对比,每种算法都会经过“特征提取”和“特征比对”两个步骤进行。第一步,缩小尺寸为8×8,以去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。第二步,简化... 查看详情
原来cnn是这样提取图像特征的。。。
...算——卷积操作开始。1.卷积操作假设有一个55的图像,使用一个33的卷积核(filter)进行卷积,得到一个3*3的矩阵(其实是FeatureMap,后面会讲),如下所示:下面的动图清楚地展示了如何进行卷积操作(其实就是简单的点乘运... 查看详情
cnn----卷积为何能提取图像特征
一、曲线过滤器二、过滤器作用于图像对于过滤器识别的特征,将计算得到很大的值不符合过滤器的特征,将得到很小的值三、高层特征对原图进行的第一次卷积,经过池化以后得到的特征图,是特征激活图。第二层的卷积,就... 查看详情
文本、语音相似度算法
...它的原理和视频图像相似度算法类似,将一系列的向量,特征,权重,进行合并,然后降维降到一维,其实这个算法也就是采用降维技术,将所有的特征都用一个唯一标识来表示.然后这个标识是经过这个算法内部的计算,再利用海明距离... 查看详情
opencv进行图像相似度对比的几种办法
1、直方图方法方法描述:有两幅图像patch(当然也可是整幅图像),分别计算两幅图像的直方图,并将直方图进行归一化,然后按照某种距离度量的标准进行相似度的测量。方法的思想:基于简单的向量相似度来对图像相似度进行... 查看详情
图像相似度计算【python】
...图片的图像颜色分布直方图,N为颜色空间样点数。这里使用分块的方法计算相似度,用以提高各部分的特征,防止图片颜色相似导致计算的相似度高。—————————————————————————————————... 查看详情
在 CNN 提取特征之上使用 SVM - 如何进行多类分类?
】在CNN提取特征之上使用SVM-如何进行多类分类?【英文标题】:UsingSVMontopofCNNextractedfeatures-HowtodoMulti-Classclassification?【发布时间】:2019-06-0906:37:03【问题描述】:在MNIST数据集中,有10个分类输出。现在,我喜欢使用SVM作为分类... 查看详情
基于pytorch使用实现cnn如何使用pytorch构建cnn卷积神经网络(代码片段)
基于pytorch使用实现CNN如何使用pytorch构建CNN卷积神经网络本文是一个基于pytorch使用CNN在生物信息学上进行位点预测的例子基于pytorch实现CNN,基于CNN进行位点预测,将CNN代码进行封装,可以非常简单的使用代码,基... 查看详情
cnn:
(1)卷积:对图像元素的矩阵变换,是提取图像特征的方法,多种卷积核可以提取多种特征。一个卷积核覆盖的原始图像的范围叫做感受野(权值共享)。一次卷积运算提取的特征往往是局部的,难以提取出比较全局的特征,... 查看详情
如何存储 CNN 提取的特征来训练 SVM 分类器
...naSVMclassifier【发布时间】:2018-10-2519:26:28【问题描述】:使用如下所示的2DCNN从图像中提取特征,我如何存储提取的特征以训练SVM对特征进行分类?型号:model=Sequential()model.add(Conv2D(32,(3,3),input_shape=(3,1 查看详情
图像特征点提取方法对比及特征点匹配方法
特征点提取方法官网的文档对特征的理解 UnderstandingFeaturesharris特征点 HarrisCornerDetectionShi-Tomasi特征点 Shi-TomasiCornerDetector&GoodFeaturestoTrackFAST特征点 FASTAlgorithmforCornerDetectionSIFT特征点& 查看详情