atenpas / gpd

Detect 6-DOF grasp poses in point clouds
BSD 2-Clause "Simplified" License
606 stars 233 forks source link

OpenVINO classifier: enable GPU support #50

Closed sharronliu closed 4 years ago

sharronliu commented 5 years ago
This patch enable GPU support in the OpenVINOClassifier.
It is verified on a 6th gen Core-i7 platform.

$ roslaunch gpd tutorial1.launch device:=1

Signed-off-by: Sharron LIU sharron.liu@intel.com

sharronliu commented 5 years ago

Hi @atenpas , would you help to review and merge this patch? It's a small change to enable GPU support with OpenVINO. Affects only: src/gpd/openvino_classifier.cpp tutorials/tutorial_openvino.md

Thanks.

sharronliu commented 5 years ago

updated the tutorial for installation from dldt, recently open sourced OpenVINO

atenpas commented 5 years ago

This looks good. One question:

Amazing, same software execution on various vision devices: CPU, GPU, VPU, FPGA, ...

Does this work with non-Intel hardware? In particular, GPUs that are not from Intel?

sharronliu commented 5 years ago

Does this work with non-Intel hardware? In particular, GPUs that are not from Intel?

@atenpas , you raised a big question. Let me comment from two aspects.

From the aspect of GPD, the launch option device:=0|1|2|3 is common to all devices, not dedicated for Intel. The implementation in GPD today (the openvino_classifier, more properly renamed to dldt_classifier) is common also. However, the dldt plug-ins were enabled for Intel platforms so far.

Then from the aspect of dldt (Deep Learning Deployment Toolkit)

  1. dldt supports a common CNN framework which converted by Module Optimizer (MO). So far MO supports to convert models of Caffe, Tensorflow, mxnet, ONNX. Once models are converted, it no more depends on whatever original frameworks. MO is not dedicated for Intel hardware, either.
  2. dldt uses plug-in to deploy the execution on various devices. So far the enabled plug-ins are Intel devices (see this webpage for which devices are already supported, in case you plan to purchase a new development machine...I'm using NUC6i7KYK a little bit old already)

dldt is target to be a common toolkit in software architecture. To my understanding, it's very feasible to plug-in other runtime libraries for deployment on non-Intel devices. You may consult more info from the github project of dldt: https://github.com/opencv/dldt