2017-12-26 9 views
0

lfwデータセットでモデルを評価できるスクリプトを作成しようとしています。プロセスとして、(LFWアノテーションリストを使用して)イメージのペアを読み込み、顔を追跡してトリミングし、それを整列させ、事前にトレーニングされたfacenetモデル(テンソルフローを使用して.pb)に渡し、フィーチャを抽出します。特徴ベクトルサイズ=(1,128)であり、入力画像は(160,160)である。LFWでFaceNet埋め込みを評価するにはどうすればよいですか?

検証タスクを評価するには、私はSiameseアーキテクチャを使用しています。つまり、2つの同一モデル([2 x facetet]、これは1つのネットワークからサイズ2の画像のバッチを渡すのと同じです)からイメージのペア(同じまたは別の人)を渡して、そのユークリッド距離を計算します。埋め込み。最後に、埋め込み距離が小さいときに0を抽出するための線形SVM分類器を訓練しています。そうでなければペアラベルを使用します。このようにして、テスト中に使用するしきい値を知ろうとしています。

このアーキテクチャを使用すると、最大60%のスコアが得られます。一方、フィーチャが4096 [fc7:0](埋め込みではない)の他のモデル(たとえばvgg-face)で同じアーキテクチャを使用すると、私は90%を得ています。私は確かに私がオンライン(99.x%)で見るスコアを複製することはできませんが、埋め込みを使用するとスコアは非常に低いです。一般的にパイプラインに何か問題はありますか?検証のために埋め込みを評価するにはどうすればよいですか?

答えて

0

問題が解決しない場合は、オンラインで入手できるfacenetモデルが貧弱なトレーニングを受けているため、スコアが悪い理由です。このモデルは別のデータセットで訓練されているため、本書に記載されているオリジナルのモデルではありません(明らかに)、検証スコアは予想よりも低くなります。しかし、一定のスレッショルドを希望の値に設定すると、本当のポジティブを増やすことはできますが、f1スコアを犠牲にすることによって可能になります。

関連する問題