【问题标题】:Caffe network getting very low loss but very bad accuracy in testingCaffe 网络的损失非常低,但测试的准确性非常差
【发布时间】:2015-06-08 16:33:50
【问题描述】:

我对 caffe 有点陌生,我遇到了一些奇怪的行为。我正在尝试在 bvlc_reference_caffenet 上使用微调来完成 OCR 任务。

我采用了他们的预训练网络,将最后一个 FC 层更改为我拥有的输出类的数量,然后重新训练。经过几千次迭代后,我的损失率约为 0.001,并且在网络测试时准确率超过 90%。也就是说,当我尝试自己在数据上运行我的网络时,我得到的结果很糟糕,不超过 7% 或 8%。

我用来运行网络的代码是:

[imports]

net = caffe.Classifier('bvlc_reference_caffenet/deploy.prototxt', 'bvlc_reference_caffenet/caffenet_train_iter_28000.caffemodel',  
                       image_dims=(227, 227, 1))

input_image = caffe.io.load_image('/Training_Processed/6/0.png')    
prediction = net.predict([input_image])  # predict takes any number of images, and formats them for the Caffe net automatically    
cls = prediction[0].argmax()

有什么想法为什么这个性能会这么差?

谢谢!

PS:一些额外的信息可能有用也可能没用。如下所示进行分类时,分类器似乎确实偏爱某些类。即使我有一个 101 类问题,它似乎最多只能分配 15 个不同的类

PPS:我也相当确定我没有过度拟合。我一直在使用快照对此进行测试,它们都表现出同样糟糕的结果。

【问题讨论】:

    标签: python neural-network computer-vision deep-learning caffe


    【解决方案1】:

    您发布的用于测试模型的代码似乎遗漏了一些组件:

    1. 您似乎没有减去图像的平均值。
    2. 您没有将通道从 RGB 切换到 BGR。
    3. 您没有将输入缩放到 [0..255] 范围。

    查看caffe.Classifier 的类似实例,您可能会看到如下内容:

    net = caffe.Classifier('bvlc_reference_caffenet/deploy.prototxt',
                           'bvlc_reference_caffenet/caffenet_train_iter_28000.caffemodel', 
                           mean = NP.load( 'ilsvrc_2012_mean.npy' ),
                           input_scale=1.0, raw_scale=255,
                           channel_swap=(2,1,0),
                           image_dims=(227, 227, 1))
    

    在测试中和在训练中使用相同的输入转换是至关重要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多