【问题标题】:Training HOG-linear svm base on TUD-brussel data set基于 TUD-brussel 数据集训练 HOG-linear svm
【发布时间】:2016-07-12 19:17:24
【问题描述】:

有没有人尝试过基于 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个样本)。

我还调整了两轮引导(检查硬示例并重新训练)以提高其性能。然而,这个检测器在 TUD-brussel 上的测试结果很糟糕,当 FPPG(false positive per image) 等于 1 时,大约 97% 的漏检率。我发现另一篇论文在使用 HOG 训练 TUD-brussel 时取得了合理的结果( 图 3(a)): https://www1.ethz.ch/igp/photogrammetry/publications/pdf_folder/walk10cvpr.pdf

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

【问题讨论】:

    标签: opencv svm feature-detection


    【解决方案1】:

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

    解决方案: 很简单,我将每个图像的大小调整为 250*250。在我的情况下,它确实提高了性能

    1. 调整每张图片的大小
    2. 转换为灰度
    3. 找到主成分分析
    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')
      

    【讨论】:

    • 您好,我尝试将每张图像的大小调整为 64*128,这是我在训练之前想要的大小。但是,探测器的性能仍然很差,与纸上的结果不符。
    猜你喜欢
    • 2015-08-14
    • 2014-05-18
    • 2015-05-04
    • 2012-02-21
    • 2014-02-21
    • 2015-09-26
    • 1970-01-01
    • 2014-01-29
    • 2014-06-30
    相关资源
    最近更新 更多