基于TUD-brussel数据集训练HOG-linear svm

时间:2016-03-25 02:21:01

标签: opencv svm feature-detection

有没有人试图在TUD-brussel数据集(从本网站引入)上训练HOG-liner svm行人探测器:

https://www.mpi-inf.mpg.de/departments/computer-vision-and-multimodal-computing/research/people-detection-pose-estimation-and-tracking/multi-cue-onboard-pedestrian-detection/

我尝试通过visual studio 2012在opencv上实现它。我根据他们的注释从原始正图像中裁剪出正样本(总共约1777个样本)。从原始负片图像中随机裁剪负样本,每个图像20个样本(总共约3840个样本)。

我还调整了两轮引导(检查hardexamples和重新训练)以改善其性能。然而,这个检测器在TUD-brussel上的测试结果很糟糕,当FPPG(每个图像的假阳性)等于1时,大约97%的未命中率。我发现另一篇论文在用HOG训练TUD-brussel时取得了合理的结果(在图3(a)): https://www1.ethz.ch/igp/photogrammetry/publications/pdf_folder/walk10cvpr.pdf

有人对在TUD-brussel上训练HOG +线性SVM有任何想法吗?

1 个答案:

答案 0 :(得分:0)

我最近不得不面对类似的情况。我使用pycharm在python中开发了一个带有hog和线性svm的图像分类器。我面临的问题是需要花费大量的时间进行训练。

<强>解决方案: 简单的我将每个图像的大小调整为250 * 250.在我的情况下确实增加了性能

  1. 调整每张图片的大小
  2. 转换为灰度
  3. 找到PCA
  4. 将其平放并将其附加到培训列表
  5. 将标签附加到培训标签

    for file in listing1:
     img = cv2.imread(path1 + file)
     res=cv2.resize(img,(250,250))
     gray_image = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY)
     xarr=np.squeeze(np.array(gray_image).astype(np.float32))
     m,v=cv2.PCACompute(xarr)
     arr= np.array(v)
     flat_arr= arr.ravel()
     training_set.append(flat_arr)
     training_labels.append(1)
    

    现在培训

    trainData=np.float32(training_set)
     responses=np.float32(training_labels)
     svm = cv2.SVM()
     svm.train(trainData,responses, params=svm_params)
     svm.save('svm_data.dat')