【问题标题】:Hog detectmultiscale slow猪检测多尺度慢
【发布时间】:2016-07-19 14:07:58
【问题描述】:

我正在使用带有自定义 svm 的 HOG。我用过trainHOG 但是我的特征向量有 2268 个特征并且 get_svm_detector() 给了我 2269 个支持向量,这不会给我错误但是 hog.detectMultiScale 非常慢(~ 6 s),为什么?

使用 svmLight,我得到 2268 个支持向量,而 hog.detectMultiScale 大约需要 64 毫秒。

【问题讨论】:

  • 在你的 opencv 构建中启用了哪种加速?
  • 我觉得有,应该用哪个?
  • 我的意思是是否启用了任何 opencl/cuda/tbb?他们中的任何一个都应该有帮助
  • 不是,但如果我启用它,两种情况下的效果都是一样的。

标签: opencv svm


【解决方案1】:

我添加代码:

Ptr<SVM> svm;
Ptr<TrainData> trainData = TrainData::loadFromCSV("./trainData.csv");    

svm = SVM::create();
svm->setType(SVM::C_SVC);
svm->setKernel(SVM::LINEAR);
svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, (int)1000, 1e-3));

svm->trainAuto(trainData,10,SVM::getDefaultGrid(SVM::C),SVM::getDefaultGrid(SVM::GAMMA),SVM::getDefaultGrid(SVM::P),SVM::getDefaultGrid(SVM::NU),SVM::getDefaultGrid(SVM::COEF),SVM::getDefaultGrid(SVM::DEGREE),true );

svm->save("model.yml");

在其他类:

HOGDescriptor hog;

Ptr<SVM> svm = StatModel::load<SVM>( "model.yml" );

vector< float > hog_detector;

// get the support vectors
Mat sv = svm->getSupportVectors();
const int sv_total = sv.rows;

// get the decision function
Mat alpha, svidx;
double rho = svm->getDecisionFunction(0, alpha, svidx);

CV_Assert( alpha.total() == 1 && svidx.total() == 1 && sv_total == 1 );
CV_Assert( (alpha.type() == CV_64F && alpha.at<double>(0) == 1.) ||
           (alpha.type() == CV_32F && alpha.at<float>(0) == 1.f) );
CV_Assert( sv.type() == CV_32F );

hog_detector.clear();
hog_detector.resize(sv.cols + 1);
memcpy(&hog_detector[0], sv.ptr(), sv.cols*sizeof(hog_detector[0]));
hog_detector[sv.cols] = (float)-rho;

hog.setSVMDetector( hog_detector );


hog.detectMultiScale(img, detections, thresholdDetection, winStride, padding); // it take me about 6 s!!

【讨论】:

  • 我看到,如果我不将 rho 放入 setSVMDetector 中,而我在 hitThreshold 中放入 -3.8 的 detectMultiScale 则需要约 6 秒,例如 4 需要约 64 毫秒... WTF?
猜你喜欢
  • 2014-07-05
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
  • 2013-12-28
  • 2011-04-15
  • 2023-04-03
  • 1970-01-01
相关资源
最近更新 更多