【问题标题】:Emgu Train SVM for people detection - C#用于人员检测的 Emgu 训练 SVM - C#
【发布时间】:2016-08-29 22:22:45
【问题描述】:

我在网上搜索了很多,找不到任何简单的解决方案。

我正在尝试创建一个人员检测器,对于这个项目,我选择了 Emgu 库。

目前我能够检测到人,但成功率不高。

我正在尝试训练我的 SVM,我在这篇文章中看到:SVM classifier based on HOG features for “object detection” in OpenCV 我需要训练的过程:

第 1 步)准备一些您要检测的对象的训练图像(正样本)。此外,您还需要准备一些没有感兴趣对象的图像(负样本)。

第 2 步)检测训练样本的 HOG 特征,并使用该特征训练 SVM 分类器(OpenCV 中也提供)。

步骤 3) 在 HOGDescriptor::setSVMDetector() 方法中使用训练好的 SVM 分类器的系数。

我有一些训练图像,我正在使用这行代码来提取 HOG 特征:

public static Image<Bgr, Byte> Resize(Image<Bgr, Byte> im)
    {
        return im.Resize(64, 128,   Inter.Linear);
    }
    public static float[] GetVector(Image<Bgr, Byte> im)
    {
        HOGDescriptor hog = new HOGDescriptor();    // with defaults values
        Image<Bgr, Byte> imageOfInterest = Resize(im);
        Point[] p = new Point[imageOfInterest.Width * imageOfInterest.Height];
        int k = 0;
        for (int i = 0; i < imageOfInterest.Width; i++)
        {
            for (int j = 0; j < imageOfInterest.Height; j++)
            {
                Point p1 = new Point(i, j);
                p[k++] = p1;
            }
        }

        return hog.Compute(imageOfInterest, new Size(8, 8), new Size(0, 0), p);
    }

但我找不到如何训练我的 SVM(上述步骤的第 2 步)。

【问题讨论】:

    标签: c# opencv image-processing svm emgucv


    【解决方案1】:

    我已经做到了。 注意:它有一些我还没有解决的问题,因为它有太多的 HoG 功能。

    代码是:

    //GetVector - function from people detection file 
    float[] hog = GetVector(new Image<Bgr, byte>(image));
    
     svm.TrainAuto(new TrainData(training_mat, Emgu.CV.ML.MlEnum.DataLayoutType.RowSample, lables));
    

    【讨论】:

      【解决方案2】:

      使用 OpenCV 进行人员检测并不简单(EmguCV 只是它的 C# 包装器)。人们可以采取不同的姿势:正面、侧面、手上/下等。这比使用 HAAR Cascade (http://docs.opencv.org/3.1.0/d7/d8b/tutorial_py_face_detection.html#gsc.tab=0) 检测人脸更加复杂。

      您需要重新考虑您的方法,因为您使用 XBox Kinect 的机会要大得多。 Kinect SDK 具有检测人的必要功能。看看这个答案:https://stackoverflow.com/a/10584231/1786034

      【讨论】:

      • 谢谢你的回答,有没有办法用我的数据训练SVM?正如我所看到的,它会根据我的火车数据以最佳百分比识别不是吗?因此,如果 openCV 提供的 DefaultPeopleDetector 可以很好地处理与训练数据相似的图像,它不会识别出与我的训练数据看起来相同的人的相似图像吗?
      • 我看到了这些问题。实际上在那之后我决定问我自己一个问题。他们没有确切解释如何训练我的 SVM。这是我的主要问题
      猜你喜欢
      • 1970-01-01
      • 2017-06-27
      • 2020-08-16
      • 2015-04-18
      • 2016-05-13
      • 2016-05-03
      • 2012-11-16
      • 2015-05-04
      • 2015-07-25
      相关资源
      最近更新 更多