日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2023-12-01 17:13:24 258觀看
導讀在一個充斥著圖像的世界里,衡量和量化圖像之間相似性的能力已經成為一項關鍵任務。無論是用于圖像檢索、內容推薦還是視覺搜索,圖像相似性方法在現代應用中起著至關重要的作用。幸運的是,Python提供了大量工具和庫,使得開

在一個充斥著圖像的世界里,衡量和量化圖像之間相似性的能力已經成為一項關鍵任務。無論是用于圖像檢索、內容推薦還是視覺搜索,圖像相似性方法在現代應用中起著至關重要的作用。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

幸運的是,Python提供了大量工具和庫,使得開發人員和研究人員能夠輕松地探索和實現這些方法。在這篇博客中,我們將深入探討各種圖像相似性技術,并演示如何使用Python實現它們。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

理解圖像相似性

1Xa28資訊網——每日最新資訊28at.com

圖像相似性可以被看作是兩幅圖像在視覺內容方面相似程度的數值表示。圖像可以在顏色、形狀、紋理和構圖等多個維度上相似。為了量化這些相似性,采用了各種數學和計算方法,使我們能夠高效地比較和分類圖像。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

流行的圖像相似性方法

  • 基于直方圖的方法
  • 基于特征的方法
  • 基于深度學習的方法

1Xa28資訊網——每日最新資訊28at.com

1.基于直方圖的方法

直方圖捕捉圖像中像素值的分布。通過比較兩幅圖像的直方圖,可以衡量它們的相似性。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

直方圖交集和直方圖相關性是常用于此目的的度量標準。Python的OpenCV庫提供了計算和比較直方圖的工具。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

在這里,我們將演示一個簡單的示例,使用基于直方圖的方法和opencv-python庫:1Xa28資訊網——每日最新資訊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

1Xa28資訊網——每日最新資訊28at.com

結構相似性指數(SSIM)1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

SSIM是一種廣泛使用的指標,評估兩幅圖像之間的結構相似性。它考慮亮度、對比度和結構,給出一個介于-1(不相似)和1(相同)之間的分數。Python中的scikit-image庫提供了SSIM的實現。在這里,我們將演示一個簡單的示例,使用SSIM和scikit-image庫:1Xa28資訊網——每日最新資訊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方法的主要缺點是圖像必須具有相同的尺寸。即使相似性分數很低,我們可以從圖像中去除背景和透明度,以提高相似性分數。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

2.基于特征的方法

這些方法從圖像中提取顯著特征,如邊緣、角點或關鍵點。諸如尺度不變特征變換(SIFT)和加速穩健特征(SURF)之類的技術可識別圖像中的獨特點,然后可以在圖像之間進行比較。可以使用opencv-python庫進行SIFT和SURF。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

3.基于深度學習的方法

深度學習已經徹底改變了圖像相似性任務。使用預訓練的卷積神經網絡(CNNs)如ResNet、VGG和Inception,可以從圖像中提取深層特征。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

openAI的CLIP(對比語言-圖像預訓練)是一個令人印象深刻的多模態零樣本圖像分類器,它在多個領域取得了令人印象深刻的結果,而無需微調。它將在大規模transformer(如GPT-3)領域的最新進展應用到視覺領域。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

我們可以使用torch、open_clip和sentence_transformers庫對這些模型進行微調,用我們自己的圖像和文本數據進行訓練。ScrapeHero可以幫助準備自己的圖像數據集以訓練這些模型。其網絡爬蟲服務可以爬取復雜的網站并提供高質量的數據。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

在這里,我們將演示一個簡單的示例,使用基于CLIP的預訓練模型和torch、open_clip和sentence_transformers庫:1Xa28資訊網——每日最新資訊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

然后,可以基于這些特征向量的余弦相似度或歐氏距離計算圖像之間的相似性。為了提高準確性,我們可以預處理圖像。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

應用領域

1Xa28資訊網——每日最新資訊28at.com

圖像相似性技術的主要應用包括電子商務產品匹配、圖像檢索、物體識別和人臉識別。例如,在圖像檢索中,可以使用圖像相似性找到與查詢圖像相似的圖像。圖像相似性可以在物體識別中使用,將給定對象與已知數據庫進行匹配。圖像相似性算法可用于通過將人臉與數據庫進行比較來識別個人。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

結論

1Xa28資訊網——每日最新資訊28at.com

在今天以視覺為驅動的世界中,衡量圖像相似性的能力是許多應用的重要組成部分。本博客向您介紹了從簡單的基于直方圖的方法到復雜的深度學習技術的各種圖像相似性方法。您還可以探索Siamese網絡,這是一類專為一次學習和圖像相似性任務而設計的神經網絡。1Xa28資訊網——每日最新資訊28at.com

1Xa28資訊網——每日最新資訊28at.com

Python憑借其豐富的庫生態系統,如scikit-image、opencv-python、TensorFlow和PyTorch,使開發人員和研究人員能夠有效地實現這些方法。通過嘗試這些技術,將打開創造運用圖像相似性的強大力量的創新應用的大門。1Xa28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-35866-0.html在 Python 中探索圖像相似性方法

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 七個強大的無代碼數據科學工具

下一篇: 14個基于Node.js的開源免費CMS,接單賺錢拿去改一改

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 裕民县| 溧水县| 台中市| 大冶市| 云龙县| 淳化县| 霞浦县| 土默特左旗| 台前县| 玛纳斯县| 元谋县| 木兰县| 庄浪县| 三明市| 女性| 喀喇沁旗| 湖北省| 修武县| 绵阳市| 于田县| 阿瓦提县| 宁海县| 鱼台县| 宜良县| 绵阳市| 漳浦县| 翁牛特旗| 日土县| 通海县| 漳平市| 桓仁| 怀化市| 瑞昌市| 晴隆县| 临澧县| 兰考县| 武功县| 新营市| 阳泉市| 申扎县| 上栗县|