Ben*_*hen 2 python computer-vision neural-network deep-learning caffe
我对caffe有点新鲜,而且我有一些奇怪的行为.我正在尝试使用bvlc_reference_caffenet上的微调来完成OCR任务.
我已经采用了他们的预训练网,将最后一个FC层更改为我拥有的输出类数,并重新训练.经过几千次迭代后,我的损失率为〜.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()
Run Code Online (Sandbox Code Playgroud)
有关为什么这种表现可能如此糟糕的想法?
谢谢!
PS:一些可能使用或不使用的附加信息.当如下所示进行分类时,分类器似乎真的偏爱某些类.即使我有一个101类问题,它似乎只分配了最多15个不同的类
PPS:我也很确定我不会过度拟合.我一直在用快照测试这个,它们都表现出同样糟糕的结果.
您测试所发布模型的代码似乎错过了一些组件:
查看类似的实例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))
Run Code Online (Sandbox Code Playgroud)
这是至关重要的,以在测试相同的输入转化为培训.