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

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

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

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

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

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

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

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

理解图像相似性

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

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

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

流行的图像相似性方法

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

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

1.基于直方图的方法

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

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

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

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

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

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

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

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

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

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

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

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

2.基于特征的方法

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

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

3.基于深度学习的方法

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

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

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

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

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

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

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

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

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

应用领域

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

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

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

结论

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • 一个注解实现接口幂等,这样才优雅!

    场景码猿慢病云管理系统中其实高并发的场景不是很多,没有必要每个接口都去考虑并发高的场景,比如添加住院患者的这个接口,具体的业务代码就不贴了,业务伪代码如下:图片上述代码有
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对“势”的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • 阿里瓴羊One推出背后,零售企业迎数字化新解

    作者:刘旷近年来随着数字经济的高速发展,各式各样的SaaS应用服务更是层出不穷,但本质上SaaS大多局限于单一业务流层面,对用户核心关切的增长问题等则没有提供更好的解法。在Saa
  • 疑似小米14外观设计图曝光:后置相机模组变化不大

    下半年的大幕已经开启,而谁将成为下半年手机圈的主角就成为了大家关注的焦点,其中被传有望拿下新一代骁龙8 Gen3旗舰芯片的小米14系列更是备受大家瞩
  • 三星折叠屏手机去年销售近1000万台 今年目标定为1500万

    7月29日消息,三星率先发力可折叠手机市场,在全球市场已经取得了非常亮眼的成绩,接下来会进一步巩固和扩大这一优势。三星在推出Galaxy Z Flip5和Galax
  • 超闭合精工铰链 彻底消灭缝隙 三星Galaxy Z Flip5与Galaxy Z Fold5发布

    2023年7月26日,三星电子正式发布了Galaxy Z Flip5与Galaxy Z Fold5。三星新一代折叠屏手机采用超闭合精工铰链,让折叠后的缝隙不再可见。同时,配合处
  • 北京:科技教育体验基地开始登记

      北京“科技馆之城”科技教育体验基地登记和认证工作日前启动。首批北京科技教育体验基地拟于2023年全国科普日期间挂牌,后续还将开展常态化登记。  北京科技教育体验基
Top