小白玩转Python | 图像相似度比较之 CLIP or DINOv2(推荐阅读 ! )

本文来源公众号“小白玩转Python”,仅用于学术分享,侵权删,干货满满。

原文链接:图像相似度比较之 CLIP or DINOv2

在人工智能领域,计算机视觉的两大巨头是CLIP和DINOv2。CLIP改变了图像理解的方式,而DINOv2为自监督学习带来了新的方法。在本文中,我们将探索定义CLIP和DINOv2的强项和微妙之处的旅程。我们旨在发现这些模型中哪一个在图像相似度任务的世界中真正出色。让我们见证这两位巨头的较量,看看哪个模型胜出。

1 CLIP中的图像相似度

使用CLIP计算两个图像之间的相似度是一个简单的过程,只需要两个步骤:首先提取两个图像的特征,然后计算它们的余弦相似度。

首先,确保已安装所需的软件包。建议设置和使用虚拟环境:‍

#Start by setting up a virtual environment
virtualenv venv-similarity
source venv-similarity/bin/activate
#Install required packages
pip install transformers Pillow torch

接下来,继续计算图像相似度:


import torch
from PIL import Image
from transformers import AutoProcessor, CLIPModel
import torch.nn as nn

device = torch.device('cuda' if torch.cuda.is可用 else "cpu")
processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32")
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32").to(device)

#Extract features from image1
image1 = Image.open('img1.jpg')
with torch.no_grad():
    inputs1 = processor(images=image1, return_tensors="pt").to(device)
    image_features1 = model.get_image_features(**inputs1)

#Extract features from image2
image2 = Image.open('img2.jpg')
with torch.no_grad():
    inputs2 = processor(images=image2, return_tensors="pt").to(device)
    image_features2 = model.get_image_features(**inputs2)

#Compute their cosine similarity and convert it into a score between 0 and 1
cos = nn.CosineSimilarity(dim=0)
sim = cos(image_features1[0],image_features2[0]).item()
sim = (sim+1)/2
print('Similarity:', sim)

使用两张相似图像的示例,获得的相似度得分为令人印象深刻的96.4%。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值