#iOSで画像間の類似度を数値化する方法です
どちらが上の画像に似ている?
#にている画像を探したい
#VisionFeaturePrintが使える
VisionFeaturePrintは、たくさんの画像で学習した機械学習モデルによって画像の特徴を数値に抽象化したものです。
その数値を比べることで、画像が似た特徴を持っているかがわかります。
#手順
画像からfeaturePrintを取得します。
do {
let request = VNGenerateImageFeaturePrintRequest()
let requestHandler = VNImageRequestHandler(ciImage: ciImage, options: [:])
try requestHandler.perform([self!.request])
guard let featurePrint = request.results?.first as? VNFeaturePrintObservation else { return }
} catch let error {
print(error)
}
画像それぞれのfeaturePrintの間の差を計算します。
var distance = Float(0)
try featurePrint.computeDistance(&distance, to: baseFeaturePrint)
print(distance)
この画像を基準に、featurePrintの差を出してみます。数値が小さい方が、特徴が似ていると判断されています。
全体の色調は松ぼっくりの画像の方が似ていますが、きちんとリスという特徴を把握していることがわかります。
🐣
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com
Core MLやARKitを使ったアプリを作っています。
機械学習/AR関連の情報を発信しています。