OpenCV 2.3.1:如何判断haartraining是否被卡住或仍在工作(在一个小例子中)

OpenCV 2.3.1:如何判断haartraining是否被卡住或仍在工作(在一个小例子中),opencv,Opencv,我第一次使用opencv_haartraining,在Mac OS X Lion上使用opencv 2.3.1 我正在努力训练一个非常快速的例子。我只举了23个正面例子和45个反面例子。然而,opencv_haartraining已经使用了我2010年Macbook Air的一个核心的100%至少30个小时了 以下是相关文件: 目录 阳性样本的vec文件 bg(否定)示例 到目前为止产生的中间结果 vec文件是根据本教程生成的,使用作者的程序mergevec组合createsamples

我第一次使用opencv_haartraining,在Mac OS X Lion上使用opencv 2.3.1

我正在努力训练一个非常快速的例子。我只举了23个正面例子和45个反面例子。然而,
opencv_haartraining
已经使用了我2010年Macbook Air的一个核心的100%至少30个小时了

以下是相关文件:

  • 目录
  • 阳性样本的vec文件
    • bg(否定)示例
    • 到目前为止产生的中间结果
vec文件是根据本教程生成的,使用作者的程序
mergevec
组合
createsamples
单独生成的vec文件

opencv_haartraining的输出为:

Data dir name: /Users/jon/Tabletop/haartraining_test_1/results
Vec file name: /Users/jon/Tabletop/haartraining_test_1/vec_positive_samples/vec_positive_samples.vec
BG  file name: /var/folders/85/96xv8qxx5ssc7ndg50s5lp480000gn/T/tmpZ2bASi.txt, is a vecfile: no
Num pos: 115
Num neg: 45
Num stages: 20
Num splits: 2 (tree as weak classifier)
Mem: 200 MB
Symmetric: TRUE
Min hit rate: 0.995000
Max false alarm rate: 0.500000
Weight trimming: 0.950000
Equal weights: FALSE
Mode: BASIC
Width: 20
Height: 20
Applied boosting algorithm: GAB
Error (valid only for Discrete and Real AdaBoost): misclass
Max number of splits in tree cascade: 0
Min number of positive samples per cluster: 500
Required leaf false alarm rate: 9.53674e-07

Tree Classifier
Stage
+---+
|  0|
+---+


Number of features used : 41910

Parent node: NULL

*** 1 cluster ***
POS: 115 115 1.000000
NEG: 45 1
BACKGROUND PROCESSING TIME: 0.00
Precalculation time: 0.00
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-| 0.910420| 1.000000| 0.044444| 0.012500|
+----+----+-+---------+---------+---------+---------+
Stage training time: 2.00
Number of used features: 2

Parent node: NULL
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+
|  0|
+---+

   0


Parent node: 0

*** 1 cluster ***
POS: 115 115 1.000000
NEG: 45 0.283019
BACKGROUND PROCESSING TIME: 0.00
Precalculation time: 0.00
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.965048| 1.000000| 1.000000| 0.018750|
+----+----+-+---------+---------+---------+---------+
|   2|100%|+|-0.903213| 1.000000| 0.288889| 0.025000|
+----+----+-+---------+---------+---------+---------+
Stage training time: 3.00
Number of used features: 4

Parent node: 0
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+
|  0|  1|
+---+---+

   0---1


Parent node: 1

*** 1 cluster ***
POS: 115 115 1.000000
NEG: 45 0.338346
BACKGROUND PROCESSING TIME: 0.00
Precalculation time: 0.00
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.961620| 1.000000| 1.000000| 0.043750|
+----+----+-+---------+---------+---------+---------+
|   2|100%|+|-0.660077| 1.000000| 0.622222| 0.043750|
+----+----+-+---------+---------+---------+---------+
|   3| 88%|-| 0.142538| 1.000000| 0.044444| 0.012500|
+----+----+-+---------+---------+---------+---------+
Stage training time: 4.00
Number of used features: 6

Parent node: 1
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+---+
|  0|  1|  2|
+---+---+---+

   0---1---2


Parent node: 2

*** 1 cluster ***
POS: 115 115 1.000000
NEG: 45 0.145631
BACKGROUND PROCESSING TIME: 0.00
Precalculation time: 0.00
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.975839| 1.000000| 0.777778| 0.025000|
+----+----+-+---------+---------+---------+---------+
|   2|100%|+|-0.904803| 1.000000| 0.244444| 0.037500|
+----+----+-+---------+---------+---------+---------+
Stage training time: 3.00
Number of used features: 4

Parent node: 2
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+---+---+
|  0|  1|  2|  3|
+---+---+---+---+

   0---1---2---3


Parent node: 3

*** 1 cluster ***
POS: 115 115 1.000000
NEG: 45 0.0293926
BACKGROUND PROCESSING TIME: 0.00
Precalculation time: 0.00
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.981092| 1.000000| 1.000000| 0.031250|
+----+----+-+---------+---------+---------+---------+
|   2| 91%|+|-0.820519| 1.000000| 0.333333| 0.031250|
+----+----+-+---------+---------+---------+---------+
Stage training time: 3.00
Number of used features: 4

Parent node: 3
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+---+---+---+
|  0|  1|  2|  3|  4|
+---+---+---+---+---+

   0---1---2---3---4


Parent node: 4

*** 1 cluster ***
POS: 115 115 1.000000
NEG: 45 0.0244965
BACKGROUND PROCESSING TIME: 0.00
Precalculation time: 0.00
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.964250| 1.000000| 1.000000| 0.025000|
+----+----+-+---------+---------+---------+---------+
|   2|100%|+|-1.801320| 1.000000| 1.000000| 0.025000|
+----+----+-+---------+---------+---------+---------+
|   3| 88%|-|-0.938272| 1.000000| 0.177778| 0.006250|
+----+----+-+---------+---------+---------+---------+
Stage training time: 4.00
Number of used features: 6

Parent node: 4
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+---+---+---+---+
|  0|  1|  2|  3|  4|  5|
+---+---+---+---+---+---+

   0---1---2---3---4---5


Parent node: 5

*** 1 cluster ***
POS: 115 115 1.000000
NEG: 45 0.0100245
BACKGROUND PROCESSING TIME: 0.00
Precalculation time: 0.00
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.975839| 1.000000| 1.000000| 0.037500|
+----+----+-+---------+---------+---------+---------+
|   2|100%|+|-0.109149| 1.000000| 0.133333| 0.037500|
+----+----+-+---------+---------+---------+---------+
Stage training time: 3.00
Number of used features: 4

Parent node: 5
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+---+---+---+---+---+
|  0|  1|  2|  3|  4|  5|  6|
+---+---+---+---+---+---+---+

   0---1---2---3---4---5---6


Parent node: 6

*** 1 cluster ***
POS: 115 115 1.000000
NEG: 45 0.00587774
BACKGROUND PROCESSING TIME: 0.00
Precalculation time: 0.00
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.870814| 1.000000| 0.800000| 0.050000|
+----+----+-+---------+---------+---------+---------+
|   2|100%|+|-0.437010| 1.000000| 0.200000| 0.050000|
+----+----+-+---------+---------+---------+---------+
Stage training time: 3.00
Number of used features: 4

Parent node: 6
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+---+---+---+---+---+---+
|  0|  1|  2|  3|  4|  5|  6|  7|
+---+---+---+---+---+---+---+---+

   0---1---2---3---4---5---6---7


Parent node: 7

*** 1 cluster ***
POS: 115 115 1.000000
NEG: 45 0.00269655
BACKGROUND PROCESSING TIME: 0.00
Precalculation time: 0.00
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.825750| 1.000000| 1.000000| 0.087500|
+----+----+-+---------+---------+---------+---------+
|   2| 89%|+|-1.098274| 1.000000| 0.911111| 0.093750|
+----+----+-+---------+---------+---------+---------+
|   3| 99%|-|-0.387003| 1.000000| 0.222222| 0.050000|
+----+----+-+---------+---------+---------+---------+
Stage training time: 5.00
Number of used features: 6

Parent node: 7
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+---+---+---+---+---+---+---+
|  0|  1|  2|  3|  4|  5|  6|  7|  8|
+---+---+---+---+---+---+---+---+---+

   0---1---2---3---4---5---6---7---8


Parent node: 8

*** 1 cluster ***
POS: 115 115 1.000000
NEG: 45 0.000656714
BACKGROUND PROCESSING TIME: 0.00
Precalculation time: 0.00
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.780975| 1.000000| 1.000000| 0.125000|
+----+----+-+---------+---------+---------+---------+
|   2|100%|+|-1.143491| 1.000000| 0.866667| 0.125000|
+----+----+-+---------+---------+---------+---------+
|   3|100%|-|-1.267461| 1.000000| 0.355556| 0.037500|
+----+----+-+---------+---------+---------+---------+
Stage training time: 5.00
Number of used features: 6

Parent node: 8
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+---+---+---+---+---+---+---+---+
|  0|  1|  2|  3|  4|  5|  6|  7|  8|  9|
+---+---+---+---+---+---+---+---+---+---+

   0---1---2---3---4---5---6---7---8---9


Parent node: 9

*** 1 cluster ***
POS: 115 115 1.000000
NEG: 45 0.000245695
BACKGROUND PROCESSING TIME: 1.00
Precalculation time: 0.00
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.982759| 1.000000| 1.000000| 0.006250|
+----+----+-+---------+---------+---------+---------+
|   2|100%|+| 0.017238| 1.000000| 0.000000| 0.000000|
+----+----+-+---------+---------+---------+---------+
Stage training time: 2.00
Number of used features: 4

Parent node: 9
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+---+---+---+---+---+---+---+---+---+
|  0|  1|  2|  3|  4|  5|  6|  7|  8|  9| 10|
+---+---+---+---+---+---+---+---+---+---+---+

   0---1---2---3---4---5---6---7---8---9--10


Parent node: 10

*** 1 cluster ***
POS: 115 115 1.000000
所有这些输出都是在运行的前5分钟产生的。在产生这一输出后,它继续以一个核心的100%运行30小时(到目前为止),没有进一步的输出

我的问题是:我如何判断haartraining在这种特殊情况下是否崩溃,更一般地说,是否有人知道如何修改
cvhaartraining.cpp
,以便它定期输出其状态?
非常感谢

(相关问题,均无答案:


)

查看
haartraining/cvhaartraining.cpp
,您的流程似乎在取消之前就在这一行:

negcount = icvGetHaarTrainingDataFromBG( training_data, poscount, nneg,
    (CvIntHaarClassifier*) tcc, &false_alarm, bg_vecfile ? bgfilename : NULL );
您可以深入到由
icvGetHaarTrainingDataFromBG
调用的函数中,添加
printf
语句,然后重新编译。我也一直在暂停我的训练跑步(我使用的是
opencv\u traincascade
),我想看看哪里出了问题。我可以尝试在
printf
语句中加入
traincascade/traincascade.cpp
来查看我的运行挂起的原因


Max

问题在于您的positive.txt和positive.vec文件。(不是负数)

确保positive.txt/positive.dat文件包含115个阳性样本

i、 e.数量位置:115

注:

非营利组织!=正面图像的数量

npos=所有正面图像中的样本数量

如果在单个图像中有多个对象,则其positive.txt说明文件必须包含多个条目


如果您在此处发布positive.txt和createsamples.exe输出,这将非常有用。

查看HaartTraining的描述,您会发现

-minpos <min_number_of_positive_samples_per_cluster = 500>
-minpos
因为你只有115个阳性样本,这可能是你的问题。。。可能您没有指定此参数,这导致培训永远不会结束。尝试将其设置为75

haartraining <your params> -minpos 75
haartraining-minpos 75

只是我的想法,没有得到证实。根据我的经验,现在请告诉我您的发现

,我总结道:

如果它冻结在表头或这样的表中

*** 1 cluster ***
POS: 11342 11342 1.000000
NEG: 1102 1
BACKGROUND PROCESSING TIME: 0.03
Precalculation time: 1.92
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
*** 1 cluster ***
POS: 11342 11342 1.000000
它还在运行 但是如果它冻结在像这样的“集群”文本中

*** 1 cluster ***
POS: 11342 11342 1.000000
NEG: 1102 1
BACKGROUND PROCESSING TIME: 0.03
Precalculation time: 1.92
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
*** 1 cluster ***
POS: 11342 11342 1.000000
它可能会挂起来

它挂起的来源可能是您的正面图像与其他图像不同,或者您的负面图像具有相似的特征,因此很难对它们进行分类


在培训之前先对正面图像进行预处理

OpenCV Yahoo tech group上也有类似的线索,其中有一条由michael_p_horton编写的代码,用于提供一些额外的反馈,以确定代码是否进入了无止境的循环:

总而言之,有两个地方可以让haartraining变得疯狂

第一个是通过检查输出很容易捕捉到的–您需要HR(命中率)增加,FA(虚警)减少。如果不发生这种情况,训练将进入无限循环

然而,根据maxenglander的回答,您遇到的问题是
icvGetHaarTrainingDataFromBG
中的无限循环。要检查这一点,您需要深入了解
cvhaartraining.cpp
代码并添加一些调试输出

要引用Yahoo Group的答案,您需要以以下方式修改icvGetHaarTrainingDataFromBG实现(查找cascade-eval()行,然后添加CV\u详细代码):

如果开始显示类似“0”的消息,则972的0个负片 需要,10000000张图片测试“你已经进入了一个无休止的循环


最后一点需要注意的是,在OpenCV 2.4中,相关代码位于
icvGetHaarTrainingData
函数中。

看起来像是挂起了。我使用opencv_haartraining对~1000个正片、~1000个负片进行训练,只需一天左右。但不要只是杀了它,我会在我的Linux机器上做一些测试,然后再给你回复。已经杀了它,对不起(我也担心我的Macbook电池的温度,以及风扇的磨损)。但我将在相同或类似的数据上重新运行它,以便我们可以附加一个进程。您的第二次跑步运气好吗?还没有时间进行第二次跑步,但当我这样做的时候,我将开始第二次悬赏。OpenCV雅虎技术集团也有类似的线索,其中有一个代码提供一些额外的反馈,以确定代码是否进入了一个无休止的循环:你有什么进展吗?我的跑步也很慢。