以圖搜圖的原理:將圖片轉成向量,然後透過歐式距離等等比較向量的距離,獲取兩個圖片的相似度
那最關鍵的一步:『將圖片轉成向量』,如何使用 python 實現呢?
可以使用 image2vector
安裝方式很簡單
pip install image2vector
用起來就更簡單了,你不用關心任何深度學習的東西,只要指定 image 就能無腦生成圖片的向量
from pathlib import Path
from typing import List
from iv import ResNet, l2
# Initialize a residual neural network
resnet: ResNet = ResNet(
weight_file='weight/gl18-tl-resnet50-gem-w-83fdc30.pth'
)
# Generate a vector of specified images
# The generated vector is a List[float] data structure,
# the length of the list is 512, which means the vector is of 512 dimensions
vector_1: List[float] = resnet.gen_vector('example-1.jpg')
vector_2: List[float] = resnet.gen_vector('example-2.jpg')
# Compare the Euclidean distance of two vectors
distance: float = l2(vector_1, vector_2)
print('Euclidean Distance is ', distance)
參考: