【发布时间】:2016-07-14 15:19:23
【问题描述】:
我正在尝试使用 OpenCV 3.1.0 为 MNIST 数据集训练 NB 分类器。我使用来自http://pjreddie.com/projects/mnist-in-csv/ 的准备好的 CSV 训练和数据文件来训练 NB 分类器。我使用剪切和粘贴稍微修改了这个 CSV 文件以适应 OpenCV 的要求。训练完分类器后,我尝试用它对训练数据集进行分类,但它是将所有样本分类为 0 类。训练数据集有 784 个维度、10 个类和 60000 个样本。我的训练代码如下:
#include <iostream>
#include <opencv2/ml.hpp>
using namespace cv;
using namespace cv::ml;
int main(int argc, char* argv[])
{
String trainingDataFile(argv[1]);
Ptr<TrainData> trainingData = TrainData::loadFromCSV(trainingDataFile,0);
Ptr<NormalBayesClassifier> nbClassifier = NormalBayesClassifier::create();
nbClassifier->train(trainingData);
nbClassifier->save(trainingDataFile+"_trainedNBParams.dat");
return 0;
}
测试代码只是从文件中重新加载 NB 分类器并对所有样本进行分类。我成功地将此代码用于另一个具有 128 个维度、10 个类和 10000 个样本的较小数据集。我不确定这是否是我的代码、培训方法或 OpenCV 本身的问题。请指教。
谢谢。
【问题讨论】:
标签: c++ opencv machine-learning computer-vision opencv3.0