当前位置:首页 > 科技  > 软件

在 Python 中探索图像相似性方法

来源: 责编: 时间:2023-12-01 17:13:24 386观看
导读在一个充斥着图像的世界里,衡量和量化图像之间相似性的能力已经成为一项关键任务。无论是用于图像检索、内容推荐还是视觉搜索,图像相似性方法在现代应用中起着至关重要的作用。幸运的是,Python提供了大量工具和库,使得开

在一个充斥着图像的世界里,衡量和量化图像之间相似性的能力已经成为一项关键任务。无论是用于图像检索、内容推荐还是视觉搜索,图像相似性方法在现代应用中起着至关重要的作用。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

幸运的是,Python提供了大量工具和库,使得开发人员和研究人员能够轻松地探索和实现这些方法。在这篇博客中,我们将深入探讨各种图像相似性技术,并演示如何使用Python实现它们。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

理解图像相似性

qxu28资讯网——每日最新资讯28at.com

图像相似性可以被看作是两幅图像在视觉内容方面相似程度的数值表示。图像可以在颜色、形状、纹理和构图等多个维度上相似。为了量化这些相似性,采用了各种数学和计算方法,使我们能够高效地比较和分类图像。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

流行的图像相似性方法

  • 基于直方图的方法
  • 基于特征的方法
  • 基于深度学习的方法

qxu28资讯网——每日最新资讯28at.com

1.基于直方图的方法

直方图捕捉图像中像素值的分布。通过比较两幅图像的直方图,可以衡量它们的相似性。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

直方图交集和直方图相关性是常用于此目的的度量标准。Python的OpenCV库提供了计算和比较直方图的工具。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

在这里,我们将演示一个简单的示例,使用基于直方图的方法和opencv-python库:qxu28资讯网——每日最新资讯28at.com

import cv2# Load imagesimage1 = cv2.imread(image1)image2 = cv2.imread(image2)hist_img1 = cv2.calcHist([image1], [0, 1, 2], None, [256, 256, 256], [0, 256, 0, 256, 0, 256])hist_img1[255, 255, 255] = 0 #ignore all white pixelscv2.normalize(hist_img1, hist_img1, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX)hist_img2 = cv2.calcHist([image2], [0, 1, 2], None, [256, 256, 256], [0, 256, 0, 256, 0, 256])hist_img2[255, 255, 255] = 0  #ignore all white pixelscv2.normalize(hist_img2, hist_img2, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX)# Find the metric valuemetric_val = cv2.compareHist(hist_img1, hist_img2, cv2.HISTCMP_CORREL)print(f"Similarity Score: ", round(metric_val, 2))# Similarity Score: 0.94

qxu28资讯网——每日最新资讯28at.com

结构相似性指数(SSIM)qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

SSIM是一种广泛使用的指标,评估两幅图像之间的结构相似性。它考虑亮度、对比度和结构,给出一个介于-1(不相似)和1(相同)之间的分数。Python中的scikit-image库提供了SSIM的实现。在这里,我们将演示一个简单的示例,使用SSIM和scikit-image库:qxu28资讯网——每日最新资讯28at.com

import cv2from skimage import metrics# Load imagesimage1 = cv2.imread(image1)image2 = cv2.imread(image2)image2 = cv2.resize(image2, (image1.shape[1], image1.shape[0]), interpolation = cv2.INTER_AREA)print(image1.shape, image2.shape)# Convert images to grayscaleimage1_gray = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)image2_gray = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY)# Calculate SSIMssim_score = metrics.structural_similarity(image1_gray, image2_gray, full=True)print(f"SSIM Score: ", round(ssim_score[0], 2))# SSIM Score: 0.38

与直方图方法相比,SSIM方法的主要缺点是图像必须具有相同的尺寸。即使相似性分数很低,我们可以从图像中去除背景和透明度,以提高相似性分数。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

2.基于特征的方法

这些方法从图像中提取显著特征,如边缘、角点或关键点。诸如尺度不变特征变换(SIFT)和加速稳健特征(SURF)之类的技术可识别图像中的独特点,然后可以在图像之间进行比较。可以使用opencv-python库进行SIFT和SURF。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

3.基于深度学习的方法

深度学习已经彻底改变了图像相似性任务。使用预训练的卷积神经网络(CNNs)如ResNet、VGG和Inception,可以从图像中提取深层特征。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

openAI的CLIP(对比语言-图像预训练)是一个令人印象深刻的多模态零样本图像分类器,它在多个领域取得了令人印象深刻的结果,而无需微调。它将在大规模transformer(如GPT-3)领域的最新进展应用到视觉领域。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

我们可以使用torch、open_clip和sentence_transformers库对这些模型进行微调,用我们自己的图像和文本数据进行训练。ScrapeHero可以帮助准备自己的图像数据集以训练这些模型。其网络爬虫服务可以爬取复杂的网站并提供高质量的数据。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

在这里,我们将演示一个简单的示例,使用基于CLIP的预训练模型和torch、open_clip和sentence_transformers库:qxu28资讯网——每日最新资讯28at.com

!pip install git+https://github.com/openai/CLIP.git!pip install open_clip_torch!pip install sentence_transformersimport torchimport open_clipimport cv2from sentence_transformers import utilfrom PIL import Image# image processing modeldevice = "cuda" if torch.cuda.is_available() else "cpu"model, _, preprocess = open_clip.create_model_and_transforms('ViT-B-16-plus-240', pretrained="laion400m_e32")model.to(device)def imageEncoder(img):    img1 = Image.fromarray(img).convert('RGB')    img1 = preprocess(img1).unsqueeze(0).to(device)    img1 = model.encode_image(img1)    return img1def generateScore(image1, image2):    test_img = cv2.imread(image1, cv2.IMREAD_UNCHANGED)    data_img = cv2.imread(image2, cv2.IMREAD_UNCHANGED)    img1 = imageEncoder(test_img)    img2 = imageEncoder(data_img)    cos_scores = util.pytorch_cos_sim(img1, img2)    score = round(float(cos_scores[0][0])*100, 2)    return scoreprint(f"similarity Score: ", round(generateScore(image1, image2), 2))#similarity Score: 76.77

然后,可以基于这些特征向量的余弦相似度或欧氏距离计算图像之间的相似性。为了提高准确性,我们可以预处理图像。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

应用领域

qxu28资讯网——每日最新资讯28at.com

图像相似性技术的主要应用包括电子商务产品匹配、图像检索、物体识别和人脸识别。例如,在图像检索中,可以使用图像相似性找到与查询图像相似的图像。图像相似性可以在物体识别中使用,将给定对象与已知数据库进行匹配。图像相似性算法可用于通过将人脸与数据库进行比较来识别个人。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

结论

qxu28资讯网——每日最新资讯28at.com

在今天以视觉为驱动的世界中,衡量图像相似性的能力是许多应用的重要组成部分。本博客向您介绍了从简单的基于直方图的方法到复杂的深度学习技术的各种图像相似性方法。您还可以探索Siamese网络,这是一类专为一次学习和图像相似性任务而设计的神经网络。qxu28资讯网——每日最新资讯28at.com

qxu28资讯网——每日最新资讯28at.com

Python凭借其丰富的库生态系统,如scikit-image、opencv-python、TensorFlow和PyTorch,使开发人员和研究人员能够有效地实现这些方法。通过尝试这些技术,将打开创造运用图像相似性的强大力量的创新应用的大门。qxu28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-35866-0.html在 Python 中探索图像相似性方法

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 七个强大的无代码数据科学工具

下一篇: 14个基于Node.js的开源免费CMS,接单赚钱拿去改一改

标签:
  • 热门焦点
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 7月安卓手机性价比榜:努比亚+红魔两款新机入榜

    7月登场的新机有努比亚Z50S Pro和红魔8S Pro,除了三星之外目前唯二的两款搭载超频版骁龙8Gen2处理器的产品,而且努比亚和红魔也一贯有着不错的性价比,所以在本次的性价比榜单
  • 0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    旭日森林无糖仙草乌龙茶510ml*15瓶平时要卖为79.9元,今日下单领取50元优惠券,到手价为29.9元。产品规格:0糖0卡0脂,添加草本仙草汁,清凉爽口,富含茶多酚,保留
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • 签约井川里予、何丹彤,单视频点赞近千万,MCN黑马永恒文希快速崛起!

    来源:视听观察永恒文希传媒作为一家MCN公司,说起它的名字来,可能大家会觉得有点儿陌生,但是说出来下面一串的名字之后,或许大家就会感到震惊,原来这么多网红,都签约这家公司了。根
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • 网传小米汽车开始筛选交付中心 建筑面积不低于3000平方米

    7月7日消息,近日有微博网友@长三角行健者爆料称,据经销商集团反馈,小米汽车目前已经开始了交付中心的筛选工作,要求候选场地至少有120个车位,建筑不能低
Top