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

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

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

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

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

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

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

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

理解图像相似性

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

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

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

流行的图像相似性方法

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

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

1.基于直方图的方法

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

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

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

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

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

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

在这里,我们将演示一个简单的示例,使用基于直方图的方法和opencv-python库:5O728资讯网——每日最新资讯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

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

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

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

SSIM是一种广泛使用的指标,评估两幅图像之间的结构相似性。它考虑亮度、对比度和结构,给出一个介于-1(不相似)和1(相同)之间的分数。Python中的scikit-image库提供了SSIM的实现。在这里,我们将演示一个简单的示例,使用SSIM和scikit-image库:5O728资讯网——每日最新资讯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方法的主要缺点是图像必须具有相同的尺寸。即使相似性分数很低,我们可以从图像中去除背景和透明度,以提高相似性分数。5O728资讯网——每日最新资讯28at.com

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

2.基于特征的方法

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

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

3.基于深度学习的方法

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

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

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

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

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

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

在这里,我们将演示一个简单的示例,使用基于CLIP的预训练模型和torch、open_clip和sentence_transformers库:5O728资讯网——每日最新资讯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

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

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

应用领域

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

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

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

结论

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 6月iOS设备性能榜:M2稳居榜首 A系列只能等一手3nm来救

    没有新品发布,自然iOS设备性能榜的上榜设备就没有什么更替,仅仅只有跑分变化而产生的排名变动,毕竟苹果新品的发布节奏就是这样的,一年下来也就几个移动端新品,不会像安卓厂商,一
  • 5月iOS设备好评榜:iPhone 14仅排第43?

    来到新的一月,安兔兔的各个榜单又重新汇总了数据,像安卓阵营的榜单都有着比较大的变动,不过iOS由于设备的更新换代并没有那么快,所以相对来说变化并不大,特别是iOS好评榜,老款设
  • 三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • 这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • 为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • AMD的AI芯片转单给三星可能性不大 与台积电已合作至2nm制程

    据 DIGITIMES 消息,英伟达 AI GPU 出货逐季飙升,接下来 AMD MI 300 系列将在第 4 季底量产。而半导体业内人士表示,近日传出 AMD 的 AI 芯片将转单给
  • 2299元起!iQOO Pad开启预售:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其搭载了天玑
  • 上海举办人工智能大会活动,建设人工智能新高地

    人工智能大会在上海浦江两岸隆重拉开帷幕,人工智能新技术、新产品、新应用、新理念集中亮相。8月30日晚,作为大会的特色活动之一的上海人工智能发展盛典人工
Top