我正在尝试实现一个深层网络,以解决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.
步骤1很快,但是我认为步骤2非常耗时,而且效率很低。因此,我想知道是否还有其他有效的硬数据采样策略。
谢谢。
在实践中,如果您的数据集很大,则从整个数据集中采样硬三重序是不可行的。实际上,您只能为培训数据集中的一小部分选择硬三重奏,这将花费更多的时间。在训练网络之后,使用用于K迭代的硬质三胞胎。您可以使用数据集中的下一批图像来馈送网络,并生成新的硬三重序列。
以这种方式,计算成本是可以接受的,并且随着培训过程的进行,网络正在逐渐改善。
请参阅此处的文章以获取更多参考。(第5.1节)