2

Caffeでトリプレット損失の深いネットワークを実装しようとしています。 アンカー、ポジティブ、ネガティブ画像のサンプルをランダムに3つ選択すると、ゼロ損失がほとんど発生します。だから私は、次の戦略を試してみました:トリプレット損失のための効率的なハードデータサンプリング

If I have 15,000 training images, 
1. extract features of 15,000 images with the current weights. 
2. calculate the triplet losses with all possible triplet combinations. 
3. use the hard samples with n largest losses, and update the network n times. 
4. iterate the above steps every k iterations to get new hard samples. 

ステップ1は高速ですが、私は、ステップ2は非常に時間がかかり、本当に非効率的だと思います。だから、私はハードデータサンプリングのための他の効率的な戦略があるのだろうかと思います。

ありがとうございました。

+0

、トリプレット損失についての論文は、負の採掘方法を持っていた - あなたはそれをチェックアウトする必要があります。あなたは[Wexler at al。マルチパッチ損失](https://arxiv.org/abs/1605.07270)? – Shai

答えて

0

実際には、データセットが大きい場合、データセット全体からハードトリプレットをサンプリングすることは不可能です。事実、トレーニングデータセットのうち、ごくわずかな部分だけハードトリプレットを選択することができます。これにより、時間を大幅に節約できます。 K回の反復に対して生成されたハードトリプレットを使用してネットワークをトレーニングした後。データセットの次のイメージバッチをネットワークに送り、新しいハードトリプレットを生成します。

このようにして、計算コストが許容され、トレーニングプロセスが進むにつれてネットワークが徐々に改善されています。 。私の記憶が正しければ

は、より多くの参照用article hereを参照してください(セクション5.1)

関連する問題