Faste R-CNNのインストールとテスト

10712 ワード

一、ソースコードを引き出す
fast-rcnnのダウンロード
ダウンロード解凍後caffe-fast-rcnnは空のフォルダであるため、caffe-fast-rcnn-bcd 9 b 4 eadc 7 d 8 fbc 433 aeefd 564 e 82 ec 63 af 69 cを単独で降りる必要がある.zip
unzip caffe-fast-rcnn-bcd9b4eadc7d8fbc433aeefd564e82ec63aaf69c.zip
cp ./caffe-fast-rcnn-bcd9b4eadc7d8fbc433aeefd564e82ec63aaf69c/ /home/cmwang/fast-rcnn-master/caffe-fast-rcnn/

二、copy欠落フォルダ
コンパイル中にlayerが欠落している問題が発生したため、copy欠落フォルダlayers(caffe-fast-rcnn/include/caffe/layersフォルダなし)が必要です.
直接caffe-masterからcopyまたは
cp /home/cmwang/caffe-master/include/caffe/layers/ /home/cmwang/fast-rcnn-master/caffe-fast-rcnn/include/caffe/layers/

 
cp /home/cmwang/py-faster-rcnn/caffe-fast-rcnn/include/caffe/layers/ /home/cmwang/fast-rcnn-master/caffe-fast-rcnn/include/caffe/layers/

三、Makefileファイルの修正
たんまつにゅうりょく
cd /home/cmwang/fast-rcnn-master/caffe-fast-rcnn/ 
cp Makefile.config.example Makefile.config # Makefile 
gedit Makefile.config

Pythonレイヤを使用して#WITH_PYTHON_LAYER:=1をWITH_に変更PYTHON_LAYER := 1
matlabを呼び出しMATLAB_DIR:=/usr/local/MATLAB/R 2015 bの#を削除します.
cudnn加速を使用して#USE_CUDNN:=1をUSEに変更CUDNN := 1
保持#CPU_ONLY:=1は変わらずGPUでfaster-cnnを実行
四、Cythonモジュールのコンパイル
たんまつにゅうりょく
cd ~/caffe-fast-rcnn/lib/
make

五、caffeとpycaffe&matcaffeをコンパイルする
たんまつにゅうりょく
cd ~/caffe-fast-rcnn/caffe-fast-rcnn/ 
make -j8 && make pycaffe && make matcaffe

六、モデルのダウンロード
たんまつにゅうりょく
cd ~/caffe-fast-rcnn/

./data/scripts/fetch_faste_rcnn_models.sh 

七、Demoテスト
たんまつにゅうりょく
cd ~/caffe-fast-rcnn/

./tools/demo.py

問題1
caffe-lhdf 5が見つかりませんでした.hlとlhdf 5のエラー
解決方法:
cd 
gedit Makefile.config

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

次のように変更
INCLUDE_DIRS :=  $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

なぜならubuntu 16.04のファイルには、場所が変更されています.特にhdf 5の場所が必要なので、このパスを変更する必要があります.
ソフト接続の確立
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libhdf5_serial.so.8 libhdf5.so
sudo ln -s libhdf5_serial_hl.so.8.0.2 libhdf5_hl.so

問題2
When use fast R-CNN, got error like this:
I0310 08:26:43.672577 144950 net.cpp:340] Input 0 -> data
I0310 08:26:43.672601 144950 net.cpp:340] Input 1 -> rois
I0310 08:26:43.672621 144950 layer_factory.hpp:74] Creating layer conv1
I0310 08:26:43.672639 144950 net.cpp:84] Creating Layer conv1
I0310 08:26:43.672650 144950 net.cpp:380] conv1 <- data
I0310 08:26:43.672664 144950 net.cpp:338] conv1 -> conv1
I0310 08:26:43.672680 144950 net.cpp:113] Setting up conv1
Floating point exception(core dumped).

ソリューション
gedit lib/fast_rcnn/train.py

filter_を追加roidb範囲は、以下のように例示される.
def filter_roidb(roidb):
    """Remove roidb entries that have no usable RoIs."""

    def is_valid(entry):
        # Valid images have:
        # (1) At least one foreground RoI OR
        # (2) At least one background RoI
        overlaps = entry['max_overlaps']
        # find boxes with sufficient overlap
        fg_inds = np.where(overlaps >= cfg.TRAIN.FG_THRESH)[0]
        # Select background RoIs as those within [BG_THRESH_LO, BG_THRESH_HI)
        bg_inds = np.where((overlaps < cfg.TRAIN.BG_THRESH_HI) &
                           (overlaps >= cfg.TRAIN.BG_THRESH_LO))[0]
        # image is only valid if such boxes exist
        valid = len(fg_inds) > 0 or len(bg_inds) > 0
        return valid

    num = len(roidb)
    filtered_roidb = [entry for entry in roidb if is_valid(entry)]
    num_after = len(filtered_roidb)
    print 'Filtered {} roidb entries: {} -> {}'.format(num - num_after,
                                                       num, num_after)
    return filtered_roidb

It’s like something about box size. the solution is add filter_roidb function in lib/fast_rcnn/train.py file, like here. Reference: https://github.com/rbgirshick/py-faster-rcnn/issues/159
その他の問題については、Faster R-CNNのインストールおよびテストでよく問題が発生する部分を参照してください.
参考文献
caffe-lhdf 5が見つかりませんでした.hlとlhdf 5のエラー
fast-rcnn github
fast-rcnn caffe-fast-rcnn
Fast R-CNNのデモのインストールと実行
caffe compilation troubleshooting