【问题标题】:caffe - how to properly train alexnet with only 7 classescaffe - 如何正确训练 alexnet 只有 7 个类
【发布时间】:2023-11-18 02:37:01
【问题描述】:

我有一个从 imagenet 收集的小数据集(每个类有 7 个类,有 1000 个训练数据)。我尝试使用 alexnet 模型对其进行训练。但不知何故,准确度不能再高了(最大约 68%)。我删除了 conv4 和 conv5 层以防止模型过度拟合,同时也减少了每层(conv 和 fc)中的神经元数量。这是我的设置。

是不是我做错了什么,导致准确率这么低?

【问题讨论】:

  • 您是使用预训练模型还是从头开始训练?
  • 任何答案在很大程度上取决于您的数据集的特征。类的区别有多大?您是否使用 conv4 和 conv5 尝试过这个?当你像这样展平拓扑时,你放弃了一些特征识别的复杂性,这可能是你的问题。你能发布剩余卷积核的可视化吗?
  • 另外,考虑使用 CONVNET 而不是 AlexNet 派生类。 CONVNET 更接近您正在使用的问题集;它可以处理 10 个类。
  • @Prune 你说的那个 CONVNET 是什么?请告诉我。
  • @Harjatin 在我的情况下,由于某些问题,我必须从头开始训练它。我知道如果我加载在 imagenet 上训练的预训练模型,它会好得多。但是无论如何我可以从头开始提高准确性吗?请帮忙。

标签: deep-learning caffe


【解决方案1】:

我想整理几个名词:

(1) 感知器是神经网络中的单个细胞。

(2)在一个CNN中,我们一般关注内核(filter)为一个单元;这是形成伪视觉单元的感知器方阵。

(3) 关注单个感知器通常唯一有意义的地方是 FC 层。当您谈到移除一些感知器时,我认为您的意思是内核。

训练模型最重要的部分是确保您的模型正确拟合手头的问题。 AlexNet(和 CaffeNet,BVLC 实现)适合完整的 ImageNet 数据集。 Alex Krizhevsky 和他的同事花费了大量研究工作来调整他们的网络以解决问题。您不会通过简单地随机删除层和内核来获得类似的准确性 - 在严重减少的数据集上。

我建议您从 CONVNET(CIFAR-10 网络)开始,因为它更适合这种规模的问题。最重要的是,我强烈建议您经常使用可视化工具,这样您就可以检测到各个内核层何时开始学习它们的模式,并查看拓扑中微小变化的影响。

您需要进行一些实验来调整和了解您的拓扑。在训练期间的选定时间记录内核可视化 - 可能以预期收敛的 10% 的间隔记录 - 并在移除几个内核、删除整个层或您选择的任何其他内容时比较视觉敏锐度。

例如,我希望如果您使用当前截断的 CaffeNet 进行此操作,您会发现深度和广度的严重损失极大地改变了它正在学习的特征识别。当前构建块的深度不足以识别边缘,然后是形状,然后是全身部分。但是,我可能是错的——你确实有剩下的三层。这就是为什么我要求您发布您获得的可视化效果,以便与已发布的 AlexNet 功能进行比较。

编辑:CIFAR 可视化

CIFAR 比 ILSVRC-2012 更好地区分类别。因此,训练每层需要更少的细节和更少的层。训练速度更快,而且过滤器对人眼来说几乎没有那么有趣。这不是 Gabor(不是 Garbor)过滤器的问题;只是模型不用学习那么多细节。

例如,为了让 CONVNET 区分水貂和喷气机,我们只需要在一片白色(花)中加入一片黄色。为了让 AlexNet 从大花蕙兰中分辨出水仙花,网络需要了解花瓣的数量或形状。

【讨论】:

  • 嘿。只是好奇为什么在 conv 层中去除神经元没有意义。因为我认为conv层中的神经元(过滤器)是我们的域数据提取(或学习)的特征。我的想法是,我有我的数据。我训练我的数据并可视化卷积层,看看它通过 deconv 网络学到了什么。所以我真的应该在每一层移除一些神经元以获得更小规模的神经元。考虑一下,如果我在一层中有 384 个神经元(特征)。我如何解释不平衡数据对卷积网络特征学习的影响。这对你有意义吗?请回答,谢谢!
  • 这就是我想澄清术语的原因。我现在看到了问题:您将“神经元”用作“过滤器”的同义词。这是不正确的:神经元是滤波器矩阵中的单个单元。例如,一个 64x64 的过滤器包含 4096 个神经元。移除单个神经元会很困难,而且通常没有功能。
  • 我想我知道你的意思。我在这里指的不是神经元,而是我在谈论过滤器!
  • 嘿,我使用 cifar 默认设置。准确率达到 80%。我认为它好多了。
  • 很高兴听到这个消息。 CIFAR 是为 10 个类构建的,具有良好的分离性。您可以对拓扑进行一些试验,以尝试获得更好的性能。实际 CIFAR 结果明显优于 80%。