2016-12-12 2 views
1

Ich benutze eine Python-Ebene in Ziffern, um jedes Trainingsbild mit Zufallsgrößen zu beschneiden und dann die cv2.resize-Methode zu verwenden, um die Größe zu ändern .caffe/digits: code -11 fehler bei der python-schicht mit cv.resize

Die Größenänderung funktioniert wie erwartet, wenn offline auf einem gespeicherten Stapel von Bildern verwendet wird, wird das numpy Array richtig an Form angepasst (128x3x227x227).

Bei der Verwendung der Python-Layer in Ziffern bekomme ich jedoch Code -11 Error. Caffe Ausgabeprotokoll zeigt dies:

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) 

Zusätzliche Informationen:

  • die Umgebung, in der ich die Resize-Methode offline testen (wenn es funktioniert) ist die gleiche Umgebung, die ich für Digits/caffe verwenden
  • Ich kann stattdessen die Methode scipy misc.imresize verwenden, und es funktioniert wie erwartet, jedoch behält die scipy-Methode die ursprünglichen numpy-Werte nicht bei und konvertiert sie zurück in uint8 im Bereich 0-256, sodass ich diese Methode nicht verwenden kann. Es ist auch viel langsamer als cv2 (auf Offline-Chargen getestet)

Wenn jemand eine alternative Interpolationsmethode schlagen die numpy nd-Array, um die Größe, die zu sehr nützlich

Vielen Dank

Antwort

1

gelöst werden würde Es war ein Problem mit der Installation von Caffe wegen cmake flags und virtualenv. Ich lief Ziffern von einem virtualenv, wo die Opencv-Python-Version war 3.1.0 Bei der Installation von Caffe, jedoch Cmake überprüft das System Opencv-Python-Version, die 2.4.9 war, und baute Caffe entsprechend. Dies war der Grund für den Fehler, unkorrekte Python-Bindungen. Um es zu lösen, wurde ein neues virtualenv mit opencv 2.4.9 erstellt, und Ziffern wurden von dieser Umgebung gestartet.

Verwandte Themen