我正在使用深度学习caffe框架进行图像分类 我有面孔硬币。其中一些是左派的,其中一些是正确的。
为了对它们进行分类我正在使用常见的方法 - 从已经捕获了很多图像模式的训练后的ImageNet网络中获取权重和结构,并且主要训练最后一层以适合我的训练集。
但是我发现netowork在这个集合上不起作用: 我拿了一些硬币,例如左对齐,为它生成水平翻转图像并将其标记为右侧。
对于这个集合卷积网获得约50%的准确度,它是完全随机的结果。
我还试图在2张图像上训练网(2个翻转版本的“h”字母)。但结果相同--50%。 (如果我选择使用不同的字母和训练网络来训练数据集 - 我会非常快速地获得100%的准确度)。但是翻转的不变性打破了我的分类。
我的问题是:是否存在一些允许我利用预训练图像网的优点但却以某种方式破坏了这种不变性的方法。网上的哪一层使得不变性成为可能。
我正在使用“caffe”来生成基于此示例方法的网络:
https://github.com/BVLC/caffe/blob/master/examples/02-fine-tuning.ipynb
答案 0 :(得分:3)
在图像网上训练的Caffe基本/基线模型主要使用非常简单的图像增强:水平翻转图像。也就是说,水平翻转时,imagenet类确实是相同的。因此,你试图微调的权重是在一个应该忽略水平翻转的环境中进行训练的,我认为你所看到的是一个很好地捕捉到它的网络 - 它对这个特定的转换不再敏感。
告诉网络的这个不变性发生在网络的哪一层并不容易,因此不容易说出应该对哪些层进行微调来克服这种行为。我认为这种不变性对于网络来说是非常重要的,如果它需要重新训练整个网络,我也不会感到惊讶。