Neural network 三重态损耗的高效硬数据采样

Neural network 三重态损耗的高效硬数据采样,neural-network,deep-learning,caffe,conv-neural-network,pycaffe,Neural Network,Deep Learning,Caffe,Conv Neural Network,Pycaffe,我正在尝试在Caffe中实现一个针对三重态丢失的深度网络。 当我随机选择三个样本作为锚定图像、正片图像和负片图像时,几乎不会产生任何损失。因此,我尝试了以下策略: 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.

我正在尝试在Caffe中实现一个针对三重态丢失的深度网络。 当我随机选择三个样本作为锚定图像、正片图像和负片图像时,几乎不会产生任何损失。因此,我尝试了以下策略:

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.
第一步很快,但我认为第二步非常耗时,而且效率很低。因此,我想知道是否还有其他有效的硬数据采样策略


谢谢。

实际上,如果您的数据集很大,那么从整个数据集中采样硬三元组是不可行的。事实上,您可以为训练数据集的一小部分选择硬三元组,这将节省更多的时间。训练网络后,使用为K次迭代生成的硬三元组。向网络提供数据集中的下一批图像,并生成新的硬三元组

这样,计算成本是可以接受的,并且随着训练过程的进行,网络正在逐步改进


更多参考请参见(第5.1节)

如果我没记错的话,描述三重态损耗的论文有一个负面的挖掘方法-你应该检查一下。你考虑过使用吗?