画像同士の類似度の値を取得する方法
Q&A
Closed
解決したいこと
現在pythonを用いてQiitaを参考にしながらArcFaceを実装しています.
最終的にArcFaceから画像同士の類似度の値を取得できないかと考えております.
発生している問題・エラー
参考サイトでは,推論用のモデルは次のようにベースネットの最終出力を取り出すようなモデルとなっていました.
# predict用のmodel. ArcFaceLayerを除き,重みはloadして使用する
def create_predict_model(n_categories, file_path):
arcface_model = create_mobilenet_with_arcface(n_categories, file_path) #学習と同じlayer数
predict_model = Model(arcface_model.get_layer(index=0).input, arcface_model.get_layer(index=-4).output) # MobileNetV2の出力までにして再構築
predict_model.summary()
return predict_model
そこで疑問に思ったことは,このモデルから画像同士の類似度を評価したいときは,このモデルの出力ベクトル同士でcos類似度やユークリッド距離などを計算し評価する必要があるのでしょうか.
自分で試したこと
自分なりに考えてみたのですが,ArcFaceの内部でcos類似度を計算しているため出力ベクトル同士での計算もcos類似度がいいのかなと(大変浅はかですが)思ったり,この場合ベクトルの大きさも考慮するためにユークリッド距離にした方がいいとも思ったり…どうなのでしょうか.
つまりこのモデルを用いた場合,どのような方法で画像同士の類似度を算出することができるのかをアドバイスいただきたいです.