深度學習之——編譯、測試、訓練Faster-rcnn的時候遇到的一些問題
最近要跑一寫關鍵點定位的demo,用到了faster-rcnn,這裡總結下,在編譯、測試、訓練過程中遇到的一些問題
電腦配置:ubutu16.04+GTX1080+CUDA8.0+cudnn7.1+opencv2.4
具體安裝參考:
https://www.linuxidc.com/Linux/2017-01/139319.htm
Ubuntu 16.04+Nvidia GTX 1080+CUDA8.0 深度學習環境配置
Ubuntu 16.04+Nvidia GTX 1080+CUDA8.0 深度學習環境配置
首先,編譯caffe我用的這個happynear/AMSoftmax,因為裡面有一些loss,我會用到,所以就沒用
https://github.com/rbgirshick/py-faster-rcnn裡面自帶的caffe。
但是在編譯好,用的時候,會有一些層不太一樣,比如:smooth-l1-loss,如果出現這個問題,就直接把faster-rcnn的相應的.cpp,.cu和.hpp文件拷貝過去,修改
message SmoothL1LossParameter {
// SmoothL1Loss(x) =
// 0.5 * (sigma * x) ** 2 -- if x < 1.0 / sigma / sigma
// |x| - 0.5 / sigma / sigma -- otherwise
optional float sigma = 1 [default = 1];
}
重新編譯下。
在編譯caffe的時候,我用cmake命令,就是先建一個文件夾build,然後cmake .. 然後make all.
也可以使用faster-rcnn自帶的caffe,直接編譯就好了。參考:
Ubuntu16.4系統下為Python配置caffe環境 - CSDN博客編譯好pycaffe。
然後,安裝編譯py-faster-rcnn
Faster-RCNN+ZF用自己的數據集訓練模型(Python版本) - CSDN博客
在編譯安裝好py-faster-rcnn的時候,運行demo.py的。應該這個時候還會報一些錯,比如:caffe版本帶來的問題,
- rpn/proposal_layer.py
修改:layer_params = yaml.load(self.param_str)
- layer.py
# parse the layer parameter string, which must be valid YAML
layer_params = yaml.load(self.param_str)還有可能會遇到的問題,比如在命令行可以import caffe,但是程序中不行了。
可以這樣修改
import sys
old_path = os.getcwd()caffe_root = "/home/kuan/AM-softmax_caffe"os.chdir(caffe_root + "/python")import caffeos.chdir(old_path)這時候,你可能已經可以跑通test的測試,看到成功的檢測了。
放幾張圖吧,這樣看著好看些。
但是。。。。。。。。。。。。。。。。。。。。。。。。。
你只是跑通了測試!!!還有train!!
你會發現又一堆bug等待著你,比如之前提到的有些層的問題,可能你用的faster-rcnn自帶的caffe,就會沒有這個問題。
然後,
遇到的一些其他的問題,都比較容易解決。
TypeError: numpy.float64 object cannot be interpreted as an index這個問題上。
pvanet訓練遇到的一些問題 - CSDN博客參考這個博客,修改就好了,不要去升級什麼numpy,沒什麼用的,還會有新的問題。
修改以及的訓練集,參考這個博客。
Caffe學習系列--Faster-RCNN訓練自己的數據集 - CSDN博客提醒:中間可能還會遇到一些其他的問題,直接baidu就能解決。
解決error 1:assert (boxes[:, 2] >= boxes[:, 0]).all()和IndexError: list index out of range問題
Faster RCNN 訓練自己的檢測模型如果還有問題,那就加QQ群:745224003
目前群人數較少,希望後面慢慢壯大,想加微信,入群私聊~
推薦閱讀:
TAG:深度學習DeepLearning | 目標檢測 | 計算機視覺 |