2017-05-16 10 views
3

我正在使用德国交通标志检测基准数据库进行交通标志识别工作。这有43个班级,每个班级至少有400张图片。图像最多可以有3个交通标志。为卷积神经网络选择训练和验证集对测试精度有很大影响

当我随机选择了用于训练和验证集的图像时,我在网络测试精度上获得了巨大的差异。我构建了两个数据集:一个具有75%的训练图像和25%的验证图像;另一个有70%的训练图像和30%的验证图像。

我正在使用GoogLeNet和相同的超参数进行训练,其中包括30个时代。

训练结束后,我测试了一组不同的用于测试的图像。使用第一个数据集,我比第二个数据集准确度低了近10%。有人能解释这一点吗?

难道它是随机选择“更容易”的图像进行训练,这就是为什么我得到较低的结果?

P.S.对于这两个数据集,我使用的是相同的图像,只是按百分比划分。

链接到数据集:http://benchmark.ini.rub.de/?section=gtsrb&subsection=dataset

+0

10%或10%点?您是否多次尝试过两个数据集,或者只尝试过一次? –

+0

请更改您的问题:很难理解您的设置和结果。 – Shai

+0

如果我正确理解你,你使用一个数据集的随机分割和使用**不同的**组图像进行测试的训练和验证? – Shai

回答

2

如何迹象的许多类,你呢?已知GoogLeNet在这个数据集上运行良好?请记住,GoogLeNet专门设计用于在ILSVRC 2012数据集上表现出色:近1.3M的训练图像,1000个类别。它扩展到数百个并行内核,为这个问题提供了很大的灵活性。

如果你有一个小得多的问题 - 比如在少数几个类别中有900个图像 - 那么GoogLeNet的强度可能会过度适合你的应用程序。例如,请注意,1000参数的最终完全连接层比单独识别训练集中的每个图像需要的更多。 128-200 +过滤器的中间层将会发现各种虚假特征,例如六个速度区标志周围的绿化模式。

另外,请记住,GoogLeNet是为识别输入图像中的单个数字而构建的:交通标志数据库可能在图像中具有多达6个标志。这也可能会影响您的训练,具体取决于您如何对多标志图像进行分类。

如果您认为此任务需要GoogLeNet复杂性,我建议您减少图层的宽度。例如,ILSVRC的历史记录显示,您的模型学习识别面部特征,车辆部件和花瓣时,道路标志在视觉元素中受到的限制更为严格。因此,尽管您可能希望第一层(边缘和区域检测)保持完整,但您不需要在中间层中使用如此多的滤镜。不,我不能给你一个可靠的起点:我没有做过几个月的实验来调整模型的问题。如果你想看到一个极端的例子,请按照推荐的迭代次数训练GoogLeNet,但将它提供给MNIST数据库。更好的是,给文本处理器的井字棋位置屏幕截图,仅分类为“胜利”,“绘制”和“丢失”。

+0

我只是想知道为什么它给了我这么大的区别。我正在使用德国交通标志检测基准数据库,该数据库有43个班级,每个班级至少有400个图像,一些班级有超过3000个图像。另外在图像中只有交通标志和一点背景。通过第二组数据(70%的训练数据),我得到了很高的结果,在30次以后没有增加或者其他任何事情,并且有更大的结果(75%用于训练),它的87.55%排名第一。我猜这可能是因为@shai提到的过度拟合。 –

+0

谢谢;您可能会包含一个指向数据库的链接;据我所知,官方发现的只有900张图片 - 显然不是同一张。 – Prune

+0

我只是阐述了过度拟合的基本观点。您设置了一个1000级的设计来处理43级的问题。你发现了一个精度变化斜率变得非​​常陡峭的点。 – Prune