前提
現在pythonを用いてArcFaceを実装しています.
実現したいこと
ArcFaceから画像データ同士の類似度の値を取得したい.
発生している問題
ArcFaceの実装自体はQiitaを参考にしましたが,推論用のモデルは次のようにベースネットの最終出力を取り出すようなモデルとなっていました.
python
1# predict用のmodel. ArcFaceLayerを除き,重みはloadして使用する 2predict_model = Model(arcface_model.get_layer(index=0).input, arcface_model.get_layer(index=-4).output) # MobileNetV2の出力までにして再構築
そこで,画像同士の類似度を評価したいときは,このモデルの出力ベクトル同士でcos類似度などを計算し評価する必要があるのでしょうか.
ArcFaceの内部でcos類似度を計算しているため,出力ベクトル同士での計算もcos類似度がいいのかなと思ったのですが,この場合ベクトルの大きさも考慮するためにユークリッド距離にした方がいいとも思ったり…どうなのでしょうか.
つまりこのモデルを用いた場合,どのような方法で画像同士の類似度を算出することができるのかをアドバイスいただきたいです.
補足情報(FW/ツールのバージョンなど)
ubuntu 20.04
Python 3.8.10
tensorflow-gpu 2.5.3
keras 2.8.0
numpy 1.19.5
jupyter lab 2.3.2
あなたの回答
tips
プレビュー