本当に情報が少ないので

opencv_traincascade.exeで学習を進める際、またも意味がわかりにくいエラーがたくさん出ます。

Train dataset for temp stage can not be filled. Branch training terminated.

直訳すれば、「一時的なステージに対する訓練データセットを完成できませんでした。枝分かれしたトレーニングは中断しました。」になりますが、抽象的過ぎて意味がわかりません。
このエラーはいろいろな時にでます。

私の場合、不正解画像リストを指定したが、リスト内のパスが全部間違っていて画像を一切読み込むことができない時、「Cascade classifier can’t be trained. Check the used training parameters.」というメッセージとともに、このエラーが発生しました。
このケースの場合、学習ステージ0で即座に失敗します。

ところが、不正解画像が正解画像に比べて極端に少なかったりすると、ステージの途中でエラーになって終了します。
数時間かけた学習が無に帰す瞬間です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
END>
Training until now has taken 0 days 3 hours 54 minutes 53 seconds.

===== TRAINING 9-stage =====
<BEGIN
POS count : consumed 3600 : 3648
NEG count : acceptanceRatio 254 : 6.50276e-006
Precalculation time: 5.756
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1| 0.998889| 0.279528|
+----+---------+---------+
END>
Training until now has taken 0 days 9 hours 57 minutes 22 seconds.

===== TRAINING 10-stage =====
<BEGIN
POS count : consumed 3600 : 3652
Train dataset for temp stage can not be filled. Branch training terminated.

また、上のケースの場合、acceptanseRatio末尾の数字が浮動小数点のような状態になっています。
こうなっている場合は、過学習に陥っている可能性があるとのこと。

もっと、わかりやすいエラーを出して欲しいです。

Conclusion

OpenCVの解説書籍を読もうと思いましたが、O’Reillyの詳解 OpenCVはかなり古くなってしました。しかし、2016年11月に最新バージョン3に対応した版が発売されるようです。英語ですが。機械学習部分だけでも読めないでしょうかね?