android - 我所有关于 opencv_traincascade 的问题

标签 android opencv object-detection object-recognition cascade-classifier

<分区>

我花了几周的时间尝试创建一个好的级联分类器,但这个过程似乎充满了神秘色彩。我有很多问题:

1) 为什么 opencv 给我们的信息这么少?

2)它需要更多的正面形象还是负面形象?

3) 什么尺寸应该有正面图像?和负面形象?它们必须具有相同的尺寸吗?

4) 如果我想为单个路标创建分类器就足够了,像 this 这样的单个正面图像使用 opencv_createsamples 创建样本?

5) 创建一个用于 Android 应用程序的分类器是 Haar 还是 LBP 更好?

6) 正确的阶段数是多少?

7) minHitRate 和 maxFalseAlarmRate 的正确值是多少?

最佳答案

  1. 提供信息,就是读起来有点无聊http://docs.opencv.org/doc/user_guide/ug_traincascade.html
  2. 出于多种原因,您需要更多负面图片。首先,当正面图像多于负面图像时,它有时会崩溃,其次 - 大多数时候训练的重点是在负面图像中寻找被检测为您的对象的东西并修复错误。
  3. 据我所知,这并不重要,重要的是他们自己的负面形象。它们应该接近你对象的真实背景,我的意思是如果它是一个交通标志,不要把在你办公室点击的照片作为背景,拍摄在外面点击的照片。
  4. 对我来说,有一张我的对象的图片就足够了,可以用 opencv_createsamples 生成 1500 个样本,但更好的是有几张图像 10、20,每张图像生成 100、200 个样本,然后将它们全部组合成一个训练集.
  5. Haar 的训练和运行时间较慢,但有时它更精确,所以我的选择是 LBP。
  6. 可以逐阶段训练cascade,一开始做10 -15个stage,然后逐个相加,记录所有stage,不用每次都从stage one开始。

7.我没有玩这个参数,我总是用默认值,但你可以在这里查看 about traincascade paremeters, samples, and other...用于解释。

同时检查这个问题和答案 How to train cascade properlyFAQ - HAARTraining

关于android - 我所有关于 opencv_traincascade 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20728611/

相关文章:

opencv - OpenCV来自对象的独特计数

AndroidManifest.xml 不存在或具有不正确的 React Native 根标记

ubuntu - 一个 USB 集线器上的两个网络摄像头 - 带宽问题

android - 每个像素的强度 0..255?

c++ - 将 Mat 对象推回 vector 的安全方法

android - 使用opencv比较android中的两个图像

machine-learning - 任何用于对象检测/识别的图像注释/标记工具(在Windows平台上)

python - TensorFlow 对象检测 API 错误

java - 升级 android 版本后得到 "Duplicate class android.support.v4.app.INotificationSideChannel"

java - 在android中安排mediaplayer的执行