为什么DIGITS和OpenCV 3.1的结果不同?

时间:2016-10-07 01:45:55

标签: opencv classification deep-learning caffe nvidia-digits

我使用DIGIT进行分类(我使用自适应梯度,随机梯度下降和Nesterov加速梯度测试GoogLeNet)。图像是彩色和256 * 256。训练结束后,我使用"测试单个图像"选项并测试一个图像。结果显示完美匹配并正确分类图像。然后我使用下载的模型在OpenCV 3.1(windows 64bit,visual studio 2013,Nvidia GPU)中应用基于" http://docs.opencv.org/trunk/d5/de7/tutorial_dnn_googlenet.html"。但是,我总是得到不同的阶级和错误的答案 编辑:
我尝试cvtColor(img, img, COLOR_BGR2RGB)并且问题没有解决。我的结果还是错了。 我尝试了data transformationsnoneimage之类的pixel。也是不同的solver type

2 个答案:

答案 0 :(得分:2)

如果OpenCV 3 vs 2导致此问题,我会感到惊讶。相反,我预计差异是由于数据预处理的差异造成的。

以下是如何对在DIGITS中训练过的Caffe模型进行数据预处理的示例: https://github.com/NVIDIA/DIGITS/blob/v4.0.0/examples/classification/example.py#L40-L85

另外请务必阅读这些"陷阱":https://github.com/NVIDIA/DIGITS/blob/v4.0.0/examples/classification/README.md#limitations

答案 1 :(得分:1)

OpenCV默认使用颜色通道现在非常罕见的BGR(蓝色,绿色,红色)排序。正常是RGB。

Why OpenCV Using BGR Colour Space Instead of RGB

这可以解释模型的糟糕表现。