症状
2016/12/25現在, Faster R-CNNをコンパイルし,動かす際に,以下の問題が生じる.
-
caffe-fast-rcnnのコンパイル時に下記のエラーがでてコンパイルできない
type "int" is incompatible with parameter of type "cudnnNanPropagation_t"
-
上記エラーになんとか対処しても、実行時に下記のエラーがでて停止する
File "/mnt/mqs02/home/ahashimoto/py-faster-rcnn/tools/../lib/rpn/proposal_target_layer.py", line 167, in _sample_rois fg_inds = npr.choice(fg_inds, size=fg_rois_per_this_image, replace=False) File "mtrand.pyx", line 1070, in mtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:8044) TypeError: 'numpy.float64' object cannot be interpreted as an index
症状1の原因
- おそらく,まだfast-rcnnが最新のcudnn (cudnn5.1.5)に対応していないため,型の不一致によるエラーが起きている.
症状1への対処方法
- 最新のcaffeは対応しているので,それをマージする.
参考にしたページ: https://github.com/rbgirshick/py-faster-rcnn/issues/237
-
手順(faster-rcnnのルートディレクトリで実行)
1. 最新のpy-faster-rcnnのリポジトリで以下を実行し,最新のcaffeとfast-rcnnをマージする.cd caffe-fast-rcnn git remote add caffe https://github.com/BVLC/caffe.git git fetch caffe git merge caffe/master
2. include/caffe/layers/python_layer.hppを開き,下記の記述を消去
self_.attr("phase") = static_cast<int>(this->phase_)
3. caffe-fast-rcnnをコンパイルする.
症状2の原因
同じタイミングでnumpyのバージョンアップにも対応が必要になっている??
症状2への対処方法
- エラーを起こしているpythonのコードを手動で修正する
参考にしたページ:https://github.com/rbgirshick/py-faster-rcnn/issues/13
-
手順(faster-rcnnのルートディレクトリで実行)
- 該当ファイルを開く
vim lib/rpn/proposal_target_layer.py
-
1箇所目(167行目付近)の修正する.
-
変更前
if fg_inds.size > 0: fg_inds = npr.choice(fg_inds, size=fg_rois_per_this_image, replace=False)
-
変更後
if fg_inds.size > 0: fg_inds = [int(v) for v in fg_inds] fg_inds = npr.choice(fg_inds, size=int(fg_rois_per_this_image), replace=False)
-
-
2箇所目(178行目付近)の修正する.
-
変更前
if bg_inds.size > 0: bg_inds = npr.choice(bg_inds, size=bg_rois_per_this_image, replace=False)
-
変更後
if bg_inds.size > 0: bg_inds = [int(v) for v in bg_inds] bg_inds = npr.choice(bg_inds, size=int(bg_rois_per_this_image), replace=False)
-
- 該当ファイルを開く