利用Faster-RCNN_TF訓練自己的數據

因爲之前工作的原因用到了faster-rcnn,所以去GitHub上找了一個tensorflow版本的Faster-RCNN。但是在編譯和訓練階段都遇到了一些問題,也參考了很多博客的幫助。現在將問題記錄下來方便下次查閱。
需要的軟件:

Requirements for Tensorflow  
Python packages you might not have: cython, python-opencv, easydict

這裏使用的Python版本是2.7,tensorflow版本也是比較老的,因此我重新安裝了tensorflow1.5.0-gpu。1.5.0是支持CUDA9.0的最低版本,如果再高的話就不知道能不能兼容這個faster-rcnn了。

遇到的問題

  1. g++: error: roi_pooling_op.cu.o: No such file or directory
    解決:按如下步驟設置
    (1) export PATH=PATH:/usr/local/cuda8.0/bin/(CUDA)foryourterminal(2)PATH:/usr/local/cuda-8.0/bin/ (你的CUDA路徑) for your terminal (2) 在FRCN_ROOT/lib/ make.sh文件中,將 CXXFLAGS+=’-undefined dynamic_lookup’改爲 CXXFLAGS=’-D_MWAITXINTRIN_H_INCLUDED’
  2. undefined symbol: _ZTIN10tensorflow8OpKernelE
    make.sh文件中缺少了TF_LIB 編譯參數,還需要添加 -D_GLIBCXX_USE_CXX11_ABI=0
    解決
    (1)修改make.sh添加TF_LIB,並修改相應的編譯參數
    TF_LIB=$(python -c ‘import tensorflow as tf; print(tf.sysconfig.get_lib())’)
      …
    g++ -std=c++11 -shared -o roi_pooling.so roi_pooling_op.cc -D_GLIBCXX_USE_CXX11_ABI=0
    roi_pooling_op.cu.o -I $TF_INC -L $TF_LIB -ltensorflow_framework -D GOOGLE_CUDA=1
    -fPIC $CXXFLAGS -lcudart -L $CUDA_PATH/lib64
      …
    (2)重新make,然後運行
    可以參考這裏

利用自己的數據進行訓練

這裏主要有兩個部分。1)準備自己的數據集,要按照VOC數據集的格式來。2)修改訓練代碼。這部分主要參考一片博文 https://blog.csdn.net/zcy0xy/article/details/79614862
數據集之前已經準備好,不過在main文件夾下缺少幾個文件(test.txt, val.txt, train.txt, trainval.txt)需要補上。。訓練時程序也報過錯,後來經過修改正常了(具體的錯誤及修改忘記了。。。看起來要及時記錄啊)。
訓練了大約20000步,訓練的結果還不錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章