Intel® Distribution of OpenVINO™ Toolkit
Community assistance about the Intel® Distribution of OpenVINO™ toolkit, OpenCV, and all aspects of computer vision-related on Intel® platforms.

Newbie question

idata
Employee
1,045 Views

Bought the Movidius stick to further explore AI, however getting a bit confused after doing some initial 'out-of-the-box' tests.

 

Successfully installed all the required software on my Ubuntu 16.04 workstation, followed all the instructions step by step (1 to 4) and ran the stream_infer.py example (SqueezeBet). This is the result (see steam_infer.jpg).

 

As you can see, best guess: paper towel (53.76%).

 

Also installed Yolo and ran './darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights' with the following result (see yolo.jpg).

 

I am struggling to understand why stream_infer.py did not resolve this scene and Yolo could. Yes, if I replace these objects with a 'computer keyboard', the keyboard is recognized (score about 30%). Obviously, I am missing something here. Can someone put me on the right track?

0 Kudos
13 Replies
idata
Employee
760 Views

SqueezeNet is an image classification network. It will try to come up with one class for the entire image. In this case it seems to fail doing that. Yolo is an object detection method and will find regions in the image and classify them.

 

If you want similar results to yolo you need to find a way to run in or e.g. Single Shot Multibox Detector (SSD) on the NCS. I'm not sure if that's possible yet. Also if you want better classification accuracy you could try better models like GoogLeNet, which can be chosen by editing the stream_infer.py file.

0 Kudos
idata
Employee
760 Views

@pascalm Hi paslcalm, there was actually a bug with the stream_infer.py file that came in the SDK release that was fixed. Please download the new stream_infer app from this link https://ncs-forum-uploads.s3.amazonaws.com/neal/stream_infer.py.

0 Kudos
idata
Employee
760 Views

Thanks mantu. Indeed when I change to a single object object-recognition works a lot better. By the way 'GoogLeNet' did not do much better in my scene.

 

Also, thanks Tome for pointing me to the new version of stream_infer.py. I already tried that before, however no difference in my scenario.

 

Tome on your website you have a picture with fruit being recognized ('What can you do with the NCS'). Can this be done with the NCS at this stage?
0 Kudos
idata
Employee
760 Views

@pascalm Assuming that you are referring to the picture on the https://developer.movidius.com/ website, yes it should be possible to do this. You can visit this page for more information: https://github.com/xingwangsfu/caffe-yolo

0 Kudos
idata
Employee
760 Views

I tried converting tiny_yolo for NCS by following the links by @Tome_at_Intel . However I get the following error:

 

python3 mvNCCompile.pyc -w ../caffe-yolo/yolo_tiny.caffemodel ../caffe-yolo/yolo_tiny_deploy.prototxt -s 12 -o test.model

 

mvNCCompile v02.00, Copyright @ Movidius Ltd 2016

 

WARNING: Logging before InitGoogleLogging() is written to STDERR

 

F0907 13:36:50.256151 4625 net.cpp:750] Check failed: target_blobs.size() == source_layer.blobs_size() (1 vs. 2) Incompatible number of blobs for layer conv1

 

*** Check failure stack trace: ***

 

Aborted (core dumped)

 

The solution I found online was that the model weights file would contain biases and the prototxt didn't have them enabled, but enabling them for the convolutional layers creates another error.

0 Kudos
idata
Employee
760 Views

Ok, it looks like the model file and prototxt I downloaded were not compatible at all. I guess I need to find a way to do the conversion from darknet to caffe myself.

0 Kudos
idata
Employee
760 Views

mantu, the yolo small model and weights match, but tiny don't. The tiny model that match weights can be downloaded from the older revision https://raw.githubusercontent.com/xingwangsfu/caffe-yolo/16f30c81e2ad6fc70da4dcaf7ae2bd6efd6ff6ea/prototxt/yolo_tiny_deploy.prototxt

0 Kudos
idata
Employee
760 Views

Hi@dagoff

 

I would like to convert yolo_tiny model and yolo_small model to graph file.

 

However, both of the following errors occurred

 

python3 mvNCCompile.pyc yolo_small_deploy.prototxt -s 12 -w yolo_small.caffemodel -o graph

 

python3 mvNCCompile.pyc yolo_tiny_deploy.prototxt -s 12 -w yolo_tiny.caffemodel -o graph

 

[Error 13] Toolkit Error: Provided OutputNode/InputNode name does not exist or does not match with one contained in caffemodel file Provided: result

 

Please give me some advices.

 

Thanks.

 

hide

0 Kudos
idata
Employee
760 Views

@dagofff Thanks! Now the conversion worked.

 

@hide To fix that problem, I changed the top parameter of the last layer to be the same as the name of that layer. E.g. if the name is "fc12" I changed the top parameter to "fc12". I'm not sure if that's the right way, but the graph looks fine.

0 Kudos
idata
Employee
760 Views

@mantu, FYI I made YOLOv1 working. The speed is ~5FPS for YOLO tiny model. The small model doesn't work yet… will check

0 Kudos
idata
Employee
760 Views

@dagofff nice! Thanks for sharing!

0 Kudos
idata
Employee
760 Views

@dagofff, Do you mean that you got YOLO tiny working on the NCS? If you so can you provide more details on what you needed to do?

0 Kudos
idata
Employee
760 Views

@nickfragale This post may help: https://ncsforum.movidius.com/discussion/218/tiny-yolo-on-ncs and dagoff has posted a link to his github here with the Tiny Yolo project: https://github.com/gudovskiy/yoloNCS

0 Kudos
Reply