LoginSignup
0
0

More than 5 years have passed since last update.

Windowsでもカスケードトレーニング時には、TBBを有効にしてビルドしたバイナリを使うとはかどる。

Last updated at Posted at 2017-08-06

メモです。
チラシの裏です。

表題の通りです。
opencv_traincascade.exeのソースコードを見たらTBBを生で使ってマルチスレッド処理をしてましたので、これだけのためにTBB込みのビルドをしたら、とてもはかどりました。

-precalcValBufSize と -precalcIdxBufSize もデフォルトですと1024なのですが、これを4096とかにすると、さらにはかどりました。

OpenCV3では、パラレルフレームワークはラップされており、特にWindowsでは、TBBはあんまり早くないということで、この頃はCMAKEオプションに入れませんし、デフォルトでOFFですが、こういうコードも残っているのですね。
しかしながら、コード修正したり、PRしたりする実力はないので、場当たり的にTBBを有効にして対処しました。

世の中3.3なのに、HAVE_TBBとかおくれてますねえ。

私が試した感じでは、正解1000枚、不正解230枚くらいで15ステージだと、メモリのサイズを大きくすると時間が半分くらいになり、さらにTBBを使うとその3/4くらいになります。

さらに場当たり的なことを思いつきました。opencv_traincascade.exeだけTBBを有効にしてコンパイルしたら良いかも!(ソースコードは触りたくない男!)

さらにJPEGをTurboJPEGに差し替えたり、ZLIBをアセンブラつかっているバージョンに差し替えればさらに幸せになれそう!

ということで、ZLIBとJPEGを差し替え、opencv_traincascade.exeだけTBBを有効にしてチャレンジしたら、また少し早くなりました。20ステージで32分だったのが24分になりました。
しかし、こんな場当たり的なやり方では、
・ZLIBを差し替えたからPNGの展開が早くなった
・LIBJPEGを差し替えたからJPEGの展開が早くなった
・OPENCVのライブラリは標準のパラレルが効いていて、かつopencv_traincascade.exeではTBBが効いているので早くなった
どれが効いたのか全くわかりませんね。。場当たり的で、なんとなく早くなったという、インドの究極奥義バータリーと言えます。
思いつきでなんとなくウマくいったという話です。

ご参考まで。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0