I upgraded from 2.08 to 2.10 and now, a conv network that was working ok, now doesn't work anymore.
See the output below.
It seems that the input queue size is wrong now. The image i'm using is 640x320 with 3 channels, so the fifo element size should be 3686400 but it seems now only 2/3 of this is allocated per fifo element. I think this is a regression compared to 2.08.
ps: The ssd_mobilenet with tensorflow however works ok it seems(and which is why I upgraded), and the ssd_mobilenet with caffe also keeps working.
Checking movidius device and loading graph and fifos D: [ 0] ncDeviceCreate:308 ncDeviceCreate index 0 D: [ 0] ncDeviceCreate:308 ncDeviceCreate index 1 D: [ 0] ncDeviceOpen:524 File path /usr/local/lib/mvnc/MvNCAPI-ma2450.mvcmd I: [ 0] ncDeviceOpen:530 ncDeviceOpen() XLinkBootRemote returned success 0 I: [ 0] ncDeviceOpen:568 XLinkConnect done - link Id 0 D: [ 0] ncDeviceOpen:582 done I: [ 0] ncDeviceOpen:584 Booted 3-ma2450 -> VSC I: [ 0] getDevAttributes:383 Device attributes I: [ 0] getDevAttributes:386 Device FW version: 2.a.2450.8a I: [ 0] getDevAttributes:388 mvTensorVersion 2.10 I: [ 0] getDevAttributes:389 Maximum graphs: 10 I: [ 0] getDevAttributes:390 Maximum fifos: 20 I: [ 0] getDevAttributes:392 Maximum graph option class: 1 I: [ 0] getDevAttributes:394 Maximum device option class: 1 I: [ 0] getDevAttributes:395 Device memory capacity: 522047856 I: [ 0] ncGraphAllocate:960 Starting Graph allocation sequence I: [ 0] ncGraphAllocate:1026 Sent graph D: [ 0] ncGraphAllocate:1051 Graph Status 0 rc 0 D: [ 0] ncGraphAllocate:1097 Input tensor w 640 h 320 c 3 n 1 totalSize 1228800 wstide 6 hstride 3840 cstride 2 layout 0 D: [ 0] ncGraphAllocate:1110 output tensor w 1 h 1 c 6912 n 1 totalSize 432 wstide 6 hstride 432 cstride 2 layout 0 I: [ 0] ncGraphAllocate:1164 Graph allocation completed successfully I: [ 0] ncFifoCreate:2164 Init fifo I: [ 0] ncFifoAllocate:2359 Creating fifo I: [ 0] ncFifoCreate:2164 Init fifo I: [ 0] ncFifoAllocate:2359 Creating fifo Preprocessing image in samples dir E: [ 0] ncFifoWriteElem:2608 input tensor length (3686400) doesnt match expected value (2457600) I: [ 0] ncDeviceClose:776 closing device E: [ 0] dispatcherEventReceive:247 dispatcherEventReceive() Read failed -2 E: [ 0] eventReader:268 Failed to receive event, the device may have reset All closed now Traceback (most recent call last): File "desktop_movidius_stick_sm.py", line 122, in <module> graph.queue_inference_with_fifo_elem(fifoIn, fifoOut, img, 'user object') File "/usr/local/lib/python3.5/dist-packages/mvnc/mvncapi.py", line 767, in queue_inference_with_fifo_elem raise Exception(Status(status)) Exception: Status.INVALID_DATA_LENGTH
Ah ok, I got the wrong error, I gave indeed the wrong tensor input size, 2457600 is correct… I'm running in C++ but testing in python, so I thought I simulated the problem, but it is actually another problem I'm having, see this output:
D: [ 0] ncGraphAllocate:1051 Graph Status 0 rc 0 D: [ 0] ncGraphAllocate:1097 Input tensor w 640 h 320 c 3 n 1 totalSize 1228800 wstide 6 hstride 3840 cstride 2 layout 0 D: [ 0] ncGraphAllocate:1110 output tensor w 1 h 1 c 6912 n 1 totalSize 432 wstide 6 hstride 432 cstride 2 layout 0 I: [ 0] ncGraphAllocate:1164 Graph allocation completed successfully I: [ 0] ncFifoCreate:2164 Init fifo I: [ 0] ncFifoAllocate:2359 Creating fifo I: [ 0] ncFifoCreate:2164 Init fifo I: [ 0] ncFifoAllocate:2359 Creating fifo Input descriptor of graph: [<mvnc.mvncapi.TensorDescriptor object at 0x7f4788eaa7b8>] In fifo size: 2457600 Preprocessing image in samples dir D: [ 0] ncFifoWriteElem:2630 No layout conversion is needed 0 D: [ 0] convertDataTypeAndLayout:170 src data type 1 dst data type 0 D: [ 0] convertDataTypeAndLayout:172 SRC: w 640 h 320 c 3 w_s 12 h_s 7680 c_s 4 D: [ 0] convertDataTypeAndLayout:174 DST: w 640 h 320 c 3 w_s 6 h_s 3840 c_s 2 D: [ 0] ncFifoWriteElem:2655 write count 0 num_elements 2 userparam 0x7f4788eaa808 I: [ 0] ncGraphQueueInference:3090 trigger start I: [ 0] ncGraphQueueInference:3187 trigger end E: [ 0] dispatcherEventReceive:247 dispatcherEventReceive() Read failed -2 E: [ 0] eventReader:268 Failed to receive event, the device may have reset E: [ 0] ncFifoReadElem:2736 Failed to read fifo element E: [ 0] ncFifoDestroy:2526 Failed to write to fifo before deleting it!
Hi @metalMajor ,
Thanks for contacting us. I'd like to reproduce this problem and help you find a solution, may I ask for your environment details (a.k.a Host OS, VirtualMachine?, NCS device connected to powered USB hub?, etc.) and if possible your network model or the code that showcases the error output.
Actally, I managed to get openvino r5 working on my platform, but had some problems there too, but there I don't get the same results as with NCSDK2. So in this post of mine, you can find the basic FCN keras network i'm using, where I want to segment for 3 classes: https://software.intel.com/en-us/forums/computer-vision/topic/805847
I'm working on a virtualbox with ubuntu 16.04, and the movidius stick 1 attached using USB, on my macbook 2017 laptop.
Thanks for the information. I can see there was a response on your post in the Computer Vision forums here. I am linking the response below. I'd suggest to continue this topic in the Computer Vision forum thread as it is related more towards OpenVINO, but if you continue to have any questions related to the NCSDK or NCS please don't hesitate to post them here.
You seem to be doing everything right. The only thing is that OpenVINO samples are loading images with OpenCV and they are in BGR order instead of RGB. Maybe you need to add --reverse_input_channels option to MO command.
And you can also try to do it the same way you are used to with NCSDK – pass FP32 input to Inference Engine._