[英]Caffe predicts same class regardless of image
我修改了MNIST示例 ,当我使用我的3个图像类训练它时,它返回91%的准确度。 但是,当我使用部署原型文件和标签文件修改C ++示例 ,并尝试在某些图像上测试它时,无论我给出的是什么图像,它都会返回第二类(1个圆圈)的预测,概率为1.0。即使它是在训练集中使用的图像。 我已经尝试了十几张图片,它始终只是预测了一个类。
为了澄清事情,在我修改的C ++示例中,我确实将图像缩放为预测,就像在训练阶段缩放图像一样:
img.convertTo(img, CV_32FC1);
img = img * 0.00390625;
如果这是正确的事情,那么我想知道我是否在我的deploy_arch.prototxt文件中计算概率的输出层做错了。
我认为您忘记了在分类时间内缩放输入图像,如train_test.prototxt文件的第11行所示。 您可能应该在C ++代码中的某个位置乘以该因子,或者使用Caffe图层来缩放输入(请查看ELTWISE或POWER图层)。
编辑:
在评论中进行了一次对话之后,结果发现在classification.cpp文件中错误地删除了图像均值,而在原始训练/测试管道中没有减去图像均值。
你的火车课程平衡吗? 您可以通过预测一个主要类别的堆叠网络。 为了找到问题,我建议在训练期间输出火车预测,与来自不同级别的相同火车图像的前向示例的预测相比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.