针对三重态丢失的高效硬数据采样

时间:2017-03-05 06:59:07

标签: 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.
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步非常耗时且效率非常低。所以,我想知道是否还有其他有效的硬数据采样策略。

感谢。

1 个答案:

答案 0 :(得分:0)

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

通过这种方式,计算成本是可以接受的,并且随着培训过程的进行,网络正在逐步改进。

请参阅article here以获取更多参考资料。(第5.1节)