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

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

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

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

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

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

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

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

理解图像相似性

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

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

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

流行的图像相似性方法

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

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

1.基于直方图的方法

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

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

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

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

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

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

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

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

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

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

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

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

2.基于特征的方法

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

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

3.基于深度学习的方法

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

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

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

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

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

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

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

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

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

应用领域

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

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

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

结论

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • Automa-通过连接块来自动化你的浏览器

    1、前言通过浏览器插件可实现自动化脚本的录制与编写,具有代表性的工具就是:Selenium IDE、Katalon Recorder,对于简单的业务来说可快速实现自动化的上手工作。Selenium IDEKat
  • 企业采用CRM系统的11个好处

    客户关系管理(CRM)软件可以为企业提供很多的好处,从客户保留到提高生产力。  CRM软件用于企业收集客户互动,以改善客户体验和满意度。  CRM软件市场规模如今超过580
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • iQOO 11S新品发布会

    iQOO将在7月4日19:00举行新品发布会,推出杭州亚运会电竞赛事官方用机iQOO 11S。
  • 上海举办人工智能大会活动,建设人工智能新高地

    人工智能大会在上海浦江两岸隆重拉开帷幕,人工智能新技术、新产品、新应用、新理念集中亮相。8月30日晚,作为大会的特色活动之一的上海人工智能发展盛典人工
  • 三翼鸟智能家居亮相电博会,让用户体验更真实

    2021电博会在青岛国际会展中心开幕中,三翼鸟直接把“家”搬到了现场,成为了展会的一大看点。这也是三翼鸟继9月9日发布了行业首个一站式定制智慧家平台后的
  • 外交部:美方应停止在网络安全问题上不负责任地指责他国

      中国外交部今天(16日)举行例行记者会。会上,有记者问,美国情报官员称,他们正在阻拦来自中国以及其他国家的黑客获取相关科研成果。 中方对此有何评论?对此
Top