2014年12月9日火曜日

OpenCV 3.0.0でLatentSVMを使用してみた

OpenCV3.0.0betaでは、LatentSVMは、Contribに移動した。モジュール一式は、opencv_contrib-master/modules/latentsvm/にある。

2.4.10との差異

2.4.10では、samples/c++にlatentsvm_multidetect.cppがあったが、3.0.0ではみつからない。
また、2.4.10のマニュアルは、ここにあるが、3.0.0betaでは、ドキュメントのWebページでの検索ではみつからない。一応、ドキュメントは、
opencv_contrib-master/modules/latentsvm/doc/latent_svm_cascade.rst
に準備されているので、概要を知ることができる。

辞書データの差異

2.4.10では、辞書を自分でダウンロードしないと行けない。ブラウザで
https://github.com/Itseez/opencv_extra/tree/master/testdata/cv/latentsvmdetector/models_VOC2007
を開き、対象の辞書をクリックし、右側のRAWのボタンを押すとxmlファイルがダウンロードされる。
3.0.0では、
opencv_contrib-master/modules/latentsvm/testdata/latentsvm/models_VOC2007_cascade/に
予めxmlファイルが準備されている。

試しに3.0.0の辞書データ(xmlファイル)を、2.4.10で読み込んでみると、コンストラクターのところでSegmentation faultになる。

LatentSVMのxmlファイルは、バイナリーデータが埋め込まれているので、エディタやブラウザーではうまく開けないが、それぞれ無理やりcat.xmlデータを開いて比較してみた。

2.4.10版
<Model>
    <!-- Number of components -->
    <NumComponents>2</NumComponents>
    <!-- Number of features -->
    <P>31</P>
    <!-- Score threshold -->
    <ScoreThreshold>-0.9846930000000000</ScoreThreshold>
    <Component>
        <!-- Root filter description -->
        <RootFilter>
            <!-- Dimensions -->
            <sizeX>11</sizeX>
            <sizeY>7</sizeY>
            <!-- Weights (binary representation) -->
            <Weights>

3.0.0版

<Model>
    <!-- Number of components -->
    <NumComponents>6</NumComponents>
    <!-- Number of features -->
    <P>32</P>
<PCAcoeff>

やはりデータフォーマットが異っている。3.0.0では、コンポーネントの数が増えているので性能が上がっているかもしれない。

0 件のコメント:

コメントを投稿