caffe / digits:使用带有cv.resize的python层时出现代码-11错误

时间:2016-12-12 15:57:22

标签: opencv deep-learning caffe pycaffe nvidia-digits

我在Digits中使用python图层以随机大小裁剪裁剪每个训练图像,然后使用cv2.resize方法调整大小到预期的顶部尺寸。

在保存的一批图像上离线使用时,调整大小按预期工作,numpy数组可以正确调整大小(128x3x227x227)。

当使用数字中的python层时,我得到代码-11错误。 Caffe输出日志显示:

I1212 12:11:41.999608 14949 solver.cpp:291] Solving
I1212 12:11:41.999610 14949 solver.cpp:292] Learning Rate Policy: fixed
I1212 12:11:42.001058 14949 solver.cpp:349] Iteration 0, Testing net (#0)
I1212 12:11:42.001065 14949 net.cpp:693] Ignoring source layer train-data
*** Aborted at 1481541102 (unix time) try "date -d @1481541102" if you are using GNU date ***
PC: @     0x7f7c46b63acf cv::resize()
*** SIGSEGV (@0x0) received by PID 14949 (TID 0x7f7c564d0ac0) from PID 0; stack trace: ***
@     0x7f7c53b734b0 (unknown)
@     0x7f7c46b63acf cv::resize()
@     0x7f67e132d736 pyopencv_cv_resize()
@     0x7f7c547a8c55 PyEval_EvalFrameEx
@     0x7f7c548d301c PyEval_EvalCodeEx
@     0x7f7c548292e0 (unknown)
@     0x7f7c547fc1e3 PyObject_Call
@     0x7f7c5487031c (unknown)
@     0x7f7c547fc1e3 PyObject_Call
@     0x7f7c548d2447 PyEval_CallObjectWithKeywords
@     0x7f7c54830f17 PyEval_CallFunction
@     0x7f67f34add85 caffe::PythonLayer<>::Forward_cpu()
@     0x7f7c55bc6207 caffe::Net<>::ForwardFromTo()
@     0x7f7c55bc6577 caffe::Net<>::Forward()
@     0x7f7c55be8dda caffe::Solver<>::Test()
@     0x7f7c55be992e caffe::Solver<>::TestAll()
@     0x7f7c55be9a4c caffe::Solver<>::Step()
@     0x7f7c55bea5e9 caffe::Solver<>::Solve()
@           0x40cf6f train()
@           0x4088e8 main
@     0x7f7c53b5e830 __libc_start_main
@           0x4091b9 _start
@                0x0 (unknown)

其他信息:

  • 离线测试调整大小方法的环境(工作时)与我用于Digits / caffe的环境相同
  • 我可以使用scipy misc.imresize方法,它可以按预期工作,但是scipy方法不保留原始的numpy值,将它们转换回0-256范围内的uint8,所以我不能使用它方法。它也比cv2慢(在离线批次上测试)

如果有人可以建议一种替代的插值方法来调整numpy nd-array的大小,那也非常有用

非常感谢

1 个答案:

答案 0 :(得分:1)

解决了,由于cmake标志和virtualenv,这是caffe安装的问题。 我正在运行virtualenv中的数字,其中opencv-python版本是3.1.0 但是,在安装caffe时,cmake检查了系统opencv-python版本,即2.4.9,并相应地构建了caffe。 这就是错误,不正确的python绑定的原因。 为了解决它,使用opencv 2.4.9创建了一个新的virtualenv,并且已经从该环境启动了数字。