前書き#
SW の効果があまり良くないと感じたので、EdgeBoxes を試してみました。速度はわずかに向上しましたが、明らかではありません。平均 1.1 フレームです。ただし、オブジェクトの枠の安定性と正確さが非常に高くなり、誤検出も相対的に少なくなりました。
** 最新のコードの GitHub リンク: ** https://github.com/HansRen1024/SVM-classification-localization
EdgeBoxes の設定#
元の作者は Matlab のコードしか公開していませんが、GitHub で.so ライブラリファイルを生成して呼び出すオープンソースプロジェクトを見つけました。
リンク: https://github.com/samarth-robo/edges
EdgeBoxes のインストール手順:
まず、numpy-opencv-converter をインストールします。
git clone https://github.com/samarth-robo/numpy-opencv-converter.git
cd numpy-opencv-converter/build
cmake ..
make
次に、cvmatio をインストールします。
git clone https://github.com/samarth-robo/cvmatio.git
cd cvmatio/build
cmake ..
make
make install
ここで、numpy/ndarrayobject.h ヘッダーファイルが見つからないとコンパイルエラーが発生する場合があります。
/usr/local/lib/python2.7/side-packages/numpy/core/include/ ディレクトリ内の numpy ディレクトリを /usr/local/include にコピーしてください。
sudo cp -r /usr/local/lib/python2.7/side-packages/numpy/core/include/numpy /usr/local/include
最後に、edge をインストールします。
git clone https://github.com/samarth-robo/edges.git
cd edges/cpp
CMakeList.txtを編集します。
CVMATIO_PATHとNUMPY_OPENCV_CONVERTER_PATHのパスを先ほどインストールしたパスに変更します。
cd build
cmake ..
make -j6
コンパイルが完了したら、build ディレクトリ内の edge_boxes_python.so を、このライブラリファイルを呼び出す.py ファイルのディレクトリにコピーします。
同時に、../cpp/external/gop_1.3/data/ ディレクトリ内の sf.dat ファイルも一緒にコピーします。
これで、.py ファイルから EdgeBoxes アルゴリズムを正常に呼び出すことができます。