【问题标题】:Handwritten Signature Verification手写签名验证
【发布时间】:2019-06-14 13:03:59
【问题描述】:

我正在做一个签名验证项目。我使用了ICDAR 2011 Signature Dataset。目前,我正在将原始图像的编码和伪造文件配对以获得训练样本(标记为0)。编码是从预训练的 VGG-16 卷积神经网络(去除全连接层)获得的。然后我修改了具有以下架构的全连接层:

  • 输入大小:50177
  • 第一个隐藏层:1000 个单位(激活:“sigmoid”,Dropout:0.5)
  • 第二个隐藏层:500 个单位(激活:“sigmoid”,Dropout:0.2)
  • 输出层:1 个单位(激活:“sigmoid”)

问题是,虽然训练集准确率提高了,但验证准确率随机波动。它在测试集上表现非常糟糕

我尝试了不同的架构,但似乎没有任何效果 那么有没有其他方法来准备数据或者我应该继续尝试不同的架构?

【问题讨论】:

  • 训练、验证、测试比例是多少?你也尝试过《盗梦空间》吗?
  • 训练:95%,验证:2.5%,测试:2.5%。为了进一步测试,一个用户的迹象不包括在整个数据集中。 Inception 在计算上是不可能的,尝试过。
  • 您的训练/测试/验证行为表明您可能过度拟合 - 该模型基本上是在死记硬背。它不是在所有集合上随机猜测,因此它可以了解有关特征的一些东西,该模型现在在区分它们方面很差。可能值得尝试使用更多、更小的层。
  • 尝试 75:15:10 或 80:10:10
  • @user8407600 过度拟合是训练和验证准确度之间的差异,但在这里验证集比训练集具有更高的准确度。也尝试了一些较小的架构,导致欠拟合。我认为我应该使用不同的网络用于生成嵌入

标签: python keras deep-learning computer-vision


【解决方案1】:

我不认为使用 VGG16 模型为您的任务提取特征是正确的方法。您使用的是在相对复杂的 RGB 图像上训练的模型,而不是尝试将其用于基本上由边缘灰度图像(签名)组成的数据集。您正在使用最后一个嵌入层,其中包含 ImageNet 数据集(VGG 模型的原始训练数据集)最复杂和最专业的表示。

你得到的特征没有真正的意义,这可能就是为什么当你尝试微调模型时训练准确度和验证准确度完全不相关的原因。

我的建议是使用 VGG16 的较早层进行特征提取(我说的是第 5-6 层附近的某处),或者更好的是,使用经过训练的更简单模型类似的数据集,例如 MNIST 数据集。

MNIST 数据集由手写数字组成,因此它与您的任务非常相似,并且在此基础上训练的任何模型都可以作为您任务的更好的特征提取器。 您可以从以下 MNIST 基准测试结果列表中选择任何模型,并将其用作特征提取器:

MNIST Benchmark Results

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 2021-01-02
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    相关资源
    最近更新 更多