【发布时间】:2014-12-07 16:43:41
【问题描述】:
您好,我正在尝试使用级联分类器、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;
}
【问题讨论】:
-
使用更多负样本并在训练后将误报添加到负样本并再次训练。
-
@Micka 是否将第二次培训添加到第一次培训中,还是会覆盖第一次培训?与正相关的负数越高,结果越好?
-
不确定 Haar 检测器的训练,但我想你必须完全重新训练。 Afaik 你通常使用比正样本更多的负样本(5 到 10 倍),但我不是机器学习方面的专家......
-
或者也许没有那么戏剧化...看看stackoverflow.com/questions/8935085/…
标签: android opencv object-recognition cascade-classifier