如何使用级联分类器减少错误识别

时间:2014-12-07 16:43:41

标签: android opencv object-recognition cascade-classifier

您好我想要使用级联分类器,android和opencv库来识别汽车。我的问题是我的手机正在标记汽车的一切。

我基于以下方式创建了我的代码: https://www.youtube.com/watch?v=WEzm7L5zoZE 和面部检测样本。我的应用程序表现得很奇怪,因为标记看起来像随机。我甚至不知道标记车是否正确或者可能只是一些随机行为。目前它甚至将我的键盘标记为汽车。我不确定我能改进什么。我认为培训达到5或14个阶段之间没有任何进展

我已将我的文件训练达14个阶段

我的代码如下:

@Override
public Mat onCameraFrame(Mat aInputFrame) {
    // return FrameAnalyzer.analyzeFrame(aInputFrame);
    // Create a grayscale image
    Imgproc.cvtColor(aInputFrame, grayscaleImage, Imgproc.COLOR_RGBA2RGB);

    MatOfRect objects = new MatOfRect();

    // Use the classifier to detect faces
    if (cascadeClassifier != null) {
        cascadeClassifier.detectMultiScale(grayscaleImage, objects, 1.1, 1,
                2, new Size(absoluteObjectSize, absoluteObjectSize),
                new Size());
    }

    Rect[] dataArray = objects.toArray();
    for (int i = 0; i < dataArray.length; i++) {
        Core.rectangle(aInputFrame, dataArray[i].tl(), dataArray[i].br(),
                new Scalar(0, 255, 0, 255), 3);
    }

    return aInputFrame;
}

1 个答案:

答案 0 :(得分:2)

尝试更改以下内容。

  1. 在示例代码中使用COLOR_RGBA2RGBcvtColor不会产生灰度图像。试试RGBA2GRAY
  2. 增加detectMultiScale邻居的数量。现在是2.更多的邻居意味着对结果更有信心。
  3. 希望有足够的样本来训练。快速搜索和阅读书籍,给人的印象是培训需要成千上万的图像。对于例如大约10000张图像用于OCR训练。对于面部训练,使用3000到5000个样本。
  4. 更重要的是,决定你是否真的想要通过haar培训识别汽车。可能有更好的车辆识别方法。对于例如对于移动车辆,我们可以使用基于光流技术。