Pythonで画像の類似度を数値にする方法です
source | compare | distance |
---|---|---|
![]() |
![]() |
0.0 |
![]() |
![]() |
20.9 |
![]() |
![]() |
30.8 |
膨大な画像から似た画像を探すのはたいへん
現代は画像があふれる時代ですが、似ている画像を目で探すのは大変です。
類似度を数値化すれば、自動で探せる
画像感の類似度を数値化できれば、その数値を比較して、もっとも似ている画像をかんたんに探せます。
機械学習モデルをつかって画像類似度を数値化してくれるimgsim
手順
imgsimをインストールして、画像を768の数値に埋め込み、埋め込み間の差分を計算する。
import imgsim
img0 = cv2.imread("cake.jpg")
img1 = cv2.imread("pancake.jpg")
vtr = imgsim.Vectorizer()
vec0 = vtr.vectorize(img0)
vec1 = vtr.vectorize(img1)
dist = imgsim.distance(vec0, vec1)
print("distance =", dist)
distance = 20.859903
出てきた数値が小さければ小さいほど、似ていると評価されている。
以下の例で言うと、
いちごケーキといちごケーキは同じ画像なので差分が0。
いちごケーキといちごパンケーキの方が、いちごとライオンよりも似ている、ということになる。
source | compare | distance |
---|---|---|
![]() |
![]() |
0.0 |
![]() |
![]() |
20.9 |
![]() |
![]() |
30.8 |
🐣
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com
Core MLやARKitを使ったアプリを作っています。
機械学習/AR関連の情報を発信しています。