{"id":15647675,"url":"https://github.com/pinto0309/openvino-deeplabv3","last_synced_at":"2025-06-21T23:35:33.920Z","repository":{"id":97173098,"uuid":"160037224","full_name":"PINTO0309/OpenVINO-DeeplabV3","owner":"PINTO0309","description":"[4-5 FPS / Core m3 CPU only] [11 FPS / Core i7 CPU only] OpenVINO+DeeplabV3+LattePandaAlpha/LaptopPC. CPU / GPU / NCS. RealTime semantic-segmentaion. Python3.5+Tensorflow v1.11.0+OpenCV3.4.3+PIL","archived":false,"fork":false,"pushed_at":"2019-04-26T23:50:00.000Z","size":97640,"stargazers_count":45,"open_issues_count":4,"forks_count":14,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-30T13:18:15.768Z","etag":null,"topics":["cpu","deeplabv3","deeplearning","lattepanda","mobilenetv2","ncs","neural-compute-stick","opencv","openvino","python","semantic-segmentation","semanticsegmentation","tensorflow"],"latest_commit_sha":null,"homepage":"https://qiita.com/PINTO","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PINTO0309.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-02T10:46:09.000Z","updated_at":"2025-01-16T10:56:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"bc2bf786-bde3-4970-a699-02b4c135ace6","html_url":"https://github.com/PINTO0309/OpenVINO-DeeplabV3","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PINTO0309/OpenVINO-DeeplabV3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PINTO0309%2FOpenVINO-DeeplabV3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PINTO0309%2FOpenVINO-DeeplabV3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PINTO0309%2FOpenVINO-DeeplabV3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PINTO0309%2FOpenVINO-DeeplabV3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PINTO0309","download_url":"https://codeload.github.com/PINTO0309/OpenVINO-DeeplabV3/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PINTO0309%2FOpenVINO-DeeplabV3/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261211685,"owners_count":23125543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpu","deeplabv3","deeplearning","lattepanda","mobilenetv2","ncs","neural-compute-stick","opencv","openvino","python","semantic-segmentation","semanticsegmentation","tensorflow"],"created_at":"2024-10-03T12:20:34.473Z","updated_at":"2025-06-21T23:35:28.908Z","avatar_url":"https://github.com/PINTO0309.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenVINO-DeeplabV3\n[4-5 FPS / Core m3 CPU only] [11 FPS / Core i7 CPU only]  \nOpenVINO+DeeplabV3+LattePandaAlpha. CPU / GPU / NCS. RealTime semantic-segmentaion.   Python3.5+OpenCV3.4.3+PIL  \n  \n**【Caution】 It does not work on ARM architecture devices such as RaspberryPi / TX2.**  \n**【Notice】December 19, 2018 OpenVINO has supported RaspberryPi + NCS2 !!  \nhttps://software.intel.com/en-us/articles/OpenVINO-RelNotes#inpage-nav-2-2**  \n  \n  \n\u003cbr\u003e\u003cbr\u003e\n**【Japanese article / English article】**  \n**[（１） Introducing Ubuntu 16.04 + OpenVINO to Latte Panda Alpha 864 (without OS included) and enjoying Semantic Segmentation with Neural Compute Stick and Neural Compute Stick 2](https://qiita.com/PINTO/items/5ac8f4395e190d06cfab#introducing-ubuntu-1604--openvino-to-latte-panda-alpha-864-without-os-included-and-enjoying-semantic-segmentation-with-neural-compute-stick-and-neural-compute-stick-2)**  \n  \n**[（２） Real-time Semantic Segmentation with CPU alone [part2] [4-5 FPS / Core m3 CPU only] [11-12 FPS / Core i7 CPU only] DeeplabV3+MobilenetV2](https://qiita.com/PINTO/items/15d822c3d280c42e08c8)**\n  \n**【Reference article / Japanese】 DeepLab vs Mask RCNN**  \n**https://jyuko49.hatenablog.com/entry/2018/11/17/145904**  \n  \n# Results\n**【Result 1】 Click the image below to play Youtube video. (Core m3 + CPU only mode. 4.0FPS - 5.0FPS)**  \n[\u003cimg src=\"media/sample01.jpg\" width=60%\u003e](https://youtu.be/CxxDwK7vBAo)  \n  \n**【Result 2】 Click the image below to play Youtube video. (Core m3 + CPU only mode. 4.0FPS - 5.0FPS)**  \n[\u003cimg src=\"media/sample02.jpg\" width=60%\u003e](https://youtu.be/-pXB3dDj-rQ)  \n  \n**【Result 3】 Click the image below to play Youtube video. (Core m3 + CPU only mode. 4.0FPS - 5.0FPS)**  \n[\u003cimg src=\"media/sample03.jpg\" width=60%\u003e](https://youtu.be/1NLCr5XnVX8)  \n\n**【Result 4】 Click the image below to play Youtube video. (Core i7 + CPU only mode. 11.0FPS - 12.0FPS)**  \n[\u003cimg src=\"media/sample04.jpg\" width=60%\u003e](https://youtu.be/TjiH2dMltl4)  \n  \n# Environment\n- LattePanda Alpha (Intel 7th Core m3-7y30) or LaptopPC (Intel 8th Core i7-8750H)\n- Ubuntu 16.04 x86_64\n- OpenVINO toolkit 2018 R4 (2018.4.420)\n- Python 3.5\n- OpenCV 3.4.3\n- PIL\n- Tensorflow v1.11.0 or Tensorflow-GPU v1.11.0 (pip install)\n- DeeplabV3 + MobilenetV2 (Pascal VOC 2012)\n- USB Camera (PlaystationEye) / Movie file (mp4)\n- 【option】 Intel Neural Compute Stick / Intel Neural Compute Stick 2 or GPU\n\n# Benchmark\n**https://ncsforum.movidius.com/discussion/1329/lattepanda-alpha-openvino-cpu-core-m3-vs-ncs1-vs-ncs2-performance-comparison**\n\n# Usage\n### 1. Installation of OpenVINO main unit\n#### 1.1 Download\n```bash\n$ cd ~/Downloads\n$ curl -sc /tmp/cookie \"https://drive.google.com/uc?export=download\u0026id=18-TeUzeN34CV-QqM0rO3wpdEGODTWrBc\" \u003e /dev/null\n$ CODE=\"$(awk '/_warning_/ {print $NF}' /tmp/cookie)\"\n$ curl -Lb /tmp/cookie \"https://drive.google.com/uc?export=download\u0026confirm=${CODE}\u0026id=18-TeUzeN34CV-QqM0rO3wpdEGODTWrBc\" -o l_openvino_toolkit_p_2018.4.420.tgz\n$ tar -zxf l_openvino_toolkit_p_2018.4.420.tgz\n$ rm l_openvino_toolkit_p_2018.4.420.tgz\n$ cd l_openvino_toolkit_p_2018.4.420\n```\n#### 1.2 Install basic functions\n```bash\n## GUI version installer\n$ sudo ./install_GUI.sh\nor\n## CUI version installer\n$ sudo ./install.sh\n```\n\u003cimg src=\"media/01.jpg\" width=60%\u003e\n\u003cimg src=\"media/02.jpg\" width=60%\u003e\n\u003cimg src=\"media/03.jpg\" width=60%\u003e\n\n```bash\n$ cd /opt/intel/computer_vision_sdk/install_dependencies\n$ sudo -E ./install_cv_sdk_dependencies.sh\n$ nano ~/.bashrc\nsource /opt/intel/computer_vision_sdk/bin/setupvars.sh\n\n$ source ~/.bashrc\n$ cd /opt/intel/computer_vision_sdk/deployment_tools/model_optimizer/install_prerequisites\n$ sudo ./install_prerequisites.sh\n```\n#### 1.3 Install optional features\n##### 1.3.1 【Optional execution】 Additional installation steps for the Intel® Movidius™ Neural Compute Stick v1 and Intel® Neural Compute Stick v2\n```bash\n$ sudo usermod -a -G users \"$(whoami)\"\n$ cat \u003c\u003cEOF \u003e 97-usbboot.rules\nSUBSYSTEM==\"usb\", ATTRS{idProduct}==\"2150\", ATTRS{idVendor}==\"03e7\", GROUP=\"users\", MODE=\"0666\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nSUBSYSTEM==\"usb\", ATTRS{idProduct}==\"2485\", ATTRS{idVendor}==\"03e7\", GROUP=\"users\", MODE=\"0666\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nSUBSYSTEM==\"usb\", ATTRS{idProduct}==\"f63b\", ATTRS{idVendor}==\"03e7\", GROUP=\"users\", MODE=\"0666\", ENV{ID_MM_DEVICE_IGNORE}=\"1\"\nEOF\n\n$ sudo cp 97-usbboot.rules /etc/udev/rules.d/\n$ sudo udevadm control --reload-rules\n$ sudo udevadm trigger\n$ cd /opt/intel/common/mdf/lib64\n$ sudo mv igfxcmrt64.so igfxcmrt64.so.org\n$ sudo ln -s libigfxcmrt64.so igfxcmrt64.so\n$ cd /opt/intel/mediasdk/lib64\n$ sudo mv libmfxhw64.so.1 libmfxhw64.so.1.org\n$ sudo mv libmfx.so.1 libmfx.so.1.org\n$ sudo mv libva-glx.so.2 libva-glx.so.2.org\n$ sudo mv libva.so.2 libva.so.2.org\n$ sudo mv libigdgmm.so.1 libigdgmm.so.1.org\n$ sudo mv libva-drm.so.2 libva-drm.so.2.org\n$ sudo mv libva-x11.so.2 libva-x11.so.2.org\n$ sudo ln -s libmfxhw64.so.1.28 libmfxhw64.so.1\n$ sudo ln -s libmfx.so.1.28 libmfx.so.1\n$ sudo ln -s libva-glx.so.2.300.0 libva-glx.so.2\n$ sudo ln -s libva.so.2.300.0 libva.so.2\n$ sudo ln -s libigdgmm.so.1.0.0 libigdgmm.so.1\n$ sudo ln -s libva-drm.so.2.300.0 libva-drm.so.2\n$ sudo ln -s libva-x11.so.2.300.0 libva-x11.so.2\n$ sudo ldconfig\n$ rm 97-usbboot.rules\n```\n##### 1.3.2 【Optional execution】 Additional installation steps for processor graphics (GPU)\n```bash\n$ cd /opt/intel/computer_vision_sdk/install_dependencies/\n$ sudo -E su\n$ uname -r\n4.15.0-42-generic #\u003c--- display kernel version sample\n\n### Execute only when the kernel version is older than 4.14\n$ ./install_4_14_kernel.sh\n\n$ ./install_NEO_OCL_driver.sh\n$ sudo reboot\n```\n\n### 2. Downgrade to stable OpenCV\nSince OpenCV 4.0.0-pre introduced by default had bug in Gstreamer and it did not work properly, we will reinstall OpenCV 3.4.3 on our own.\n```bash\n$ sudo -H pip3 install opencv-python==3.4.3.18\n$ nano ~/.bashrc\nexport PYTHONPATH=/usr/local/lib/python3.5/dist-packages/cv2:$PYTHONPATH\n\n$ source ~/.bashrc\n```\n### 3. Upgrade to Tensorflow v1.11.0\nUpgrade to old version Tensorflow v1.9.0, introduced by default, to Tensorflow v1.11.0, as subsequent model optimizer processing will fail.\n```bash\n$ sudo -H pip3 install pip --upgrade\n\n$ python3 -c 'import tensorflow as tf; print(tf.__version__)'\n1.9.0 #\u003c--- display Tensorflow version sample\n\n$ sudo -H pip3 install tensorflow==1.11.0 --upgrade\nor\n$ sudo -H pip3 install tensorflow-gpu==1.11.0 --upgrade\n```\n### 4. Settings for offloading custom layer behavior to Tensorflow\n```bash\n$ sudo apt-get install -y git pkg-config zip g++ zlib1g-dev unzip\n$ cd ~\n$ wget https://github.com/bazelbuild/bazel/releases/download/0.18.1/bazel-0.18.1-installer-linux-x86_64.sh\n$ sudo chmod +x bazel-0.18.1-installer-linux-x86_64.sh\n$ ./bazel-0.18.1-installer-linux-x86_64.sh --user\n$ echo 'export PATH=$PATH:$HOME/bin' \u003e\u003e ~/.bashrc\n$ source ~/.bashrc\n$ cd /opt\n$ sudo git clone -b v1.11.0 https://github.com/tensorflow/tensorflow.git\n$ cd tensorflow\n$ sudo git checkout -b v1.11.0\n$ echo 'export TF_ROOT_DIR=/opt/tensorflow' \u003e\u003e ~/.bashrc\n$ source ~/.bashrc\n$ sudo nano /opt/intel/computer_vision_sdk/bin/setupvars.sh\n\n#Before\nINSTALLDIR=/opt/intel//computer_vision_sdk_2018.4.420\n↓\n#After\nINSTALLDIR=/opt/intel/computer_vision_sdk_2018.4.420\n\n$ source /opt/intel/computer_vision_sdk/bin/setupvars.sh\n$ sudo nano /opt/intel/computer_vision_sdk/deployment_tools/model_optimizer/tf_call_ie_layer/build.sh\n\n#Before\nbazel build --config=monolithic //tensorflow/cc/inference_engine_layer:libtensorflow_call_layer.so\n↓\n#After\nsudo -H $HOME/bin/bazel build --config monolithic //tensorflow/cc/inference_engine_layer:libtensorflow_call_layer.so\nor\nsudo -H $HOME/bin/bazel --host_jvm_args=-Xmx512m build --config monolithic --local_resources 1024.0,0.5,0.5 //tensorflow/cc/inference_engine_layer:libtensorflow_call_layer.so\n\n$ sudo -E /opt/intel/computer_vision_sdk/deployment_tools/model_optimizer/tf_call_ie_layer/build.sh\n\n$ su -\n$ cp /opt/tensorflow/bazel-bin/tensorflow/cc/inference_engine_layer/libtensorflow_call_layer.so /usr/local/lib\n$ exit\n$ nano ~/.bashrc\nexport PYTHONPATH=$PYTHONPATH:/usr/local/lib\n\n$ source ~/.bashrc\n$ sudo ldconfig\n```\n### 5. 【Optional execution】 Build sample programs and CPU extension\n```bash\n$ cd /opt/intel/computer_vision_sdk/deployment_tools/inference_engine/samples\n$ sudo ./build_samples.sh\n\n### The prebuilt binary is saved in the following path\n### ~/inference_engine_samples_build/intel64/Release/\n```\n### 6. 【Optional execution】【Example】 Conversion of Tensorflow-DeeplabV3 model to lr format\n#### 6-1. Pascal VOC\n```bash\n$ cd ~\n$ mkdir model\n$ wget http://download.tensorflow.org/models/deeplabv3_mnv2_pascal_train_aug_2018_01_29.tar.gz\n$ tar -zxvf deeplabv3_mnv2_pascal_train_aug_2018_01_29.tar.gz\n$ cp deeplabv3_mnv2_pascal_train_aug/frozen_inference_graph.pb model\n$ sudo python3 /opt/intel/computer_vision_sdk/deployment_tools/model_optimizer/mo_tf.py \\\n--input_model pbmodels/PascalVOC/frozen_inference_graph.pb \\\n--input 0:MobilenetV2/Conv/Conv2D \\\n--output ArgMax \\\n--input_shape [1,513,513,3] \\\n--output_dir lrmodels/PascalVOC/FP32\n```\n#### 6-2. MS-COCO cityscapes\n```bash\n$ wget http://download.tensorflow.org/models/deeplabv3_mnv2_cityscapes_train_2018_02_05.tar.gz\n$ tar -zxvf deeplabv3_mnv2_cityscapes_train_2018_02_05.tar.gz\n```\n\n### 7. Execution (The default is \"USB Camera mode\")\n```bash\n$ cd ~\n$ git clone https://github.com/PINTO0309/OpenVINO-DeeplabV3.git\n$ cd OpenVINO-DeeplabV3\n$ python3 openvino_deeplabv3_test.py\n```\n\n# How to install Bazel (version 0.17.2, x86_64 only)\n### 1. Bazel introduction command\n```bash\n$ cd ~\n$ curl -sc /tmp/cookie \"https://drive.google.com/uc?export=download\u0026id=1dvR3pdM6vtkTWqeR-DpgVUoDV0EYWil5\" \u003e /dev/null\n$ CODE=\"$(awk '/_warning_/ {print $NF}' /tmp/cookie)\"\n$ curl -Lb /tmp/cookie \"https://drive.google.com/uc?export=download\u0026confirm=${CODE}\u0026id=1dvR3pdM6vtkTWqeR-DpgVUoDV0EYWil5\" -o bazel\n$ sudo cp ./bazel /usr/local/bin\n$ rm ./bazel\n```\n### 2. Supplementary information\n**https://github.com/PINTO0309/Bazel_bin.git**\n\n# How to check the graph structure of a \".pb\" file [Part.1]\nSimple structure analysis.\n### 1. Build and run graph structure analysis program\n```bash\n$ cd ~\n$ git clone -b v1.11.0 https://github.com/tensorflow/tensorflow.git\n$ cd tensorflow\n$ git checkout -b v1.11.0\n$ bazel build tensorflow/tools/graph_transforms:summarize_graph\n$ bazel-bin/tensorflow/tools/graph_transforms/summarize_graph --in_graph=xxxx.pb\n```\n### 2. Sample of display result\n```bash\nFound 1 possible inputs: (name=ImageTensor, type=uint8(4), shape=[1,?,?,3]) \nNo variables spotted.\nFound 1 possible outputs: (name=SemanticPredictions, op=Slice) \nFound 2146325 (2.15M) const parameters, 0 (0) variable parameters, and 4 control_edges\nOp types used: 374 Const, 357 Identity, 54 FusedBatchNorm, 38 Conv2D, 34 Relu6, \\\n17 DepthwiseConv2dNative, 13 Add, 10 StridedSlice, 10 BatchToSpaceND, 10 \\\nSpaceToBatchND, 8 Sub, 5 Pack, 4 GreaterEqual, 4 Assert, 4 Shape, 4 ResizeBilinear, \\\n3 Cast, 3 Relu, 2 ExpandDims, 2 Squeeze, 2 Maximum, 2 Mul, 1 Slice, 1 LogicalAnd, \\\n1 Reshape, 1 Placeholder, 1 Pad, 1 Equal, 1 ConcatV2, 1 BiasAdd, 1 AvgPool, 1 ArgMax\nTo use with tensorflow/tools/benchmark:benchmark_model try these arguments:\nbazel run tensorflow/tools/benchmark:benchmark_model -- \\\n--graph=xxxx.pb \\\n--show_flops \\\n--input_layer=ImageTensor \\\n--input_layer_type=uint8 \\\n--input_layer_shape=1,-1,-1,3 \\\n--output_layer=SemanticPredictions\n```\n\n# How to check the graph structure of a \".pb\" file [Part.2]\nConvert to text format.\n### 1. Run graph structure analysis program\n```bash\n$ python3 tfconverter.py\n### \".pbtxt\" in ProtocolBuffer format is output.\n### The size of the generated text file is huge.\n```\n\n# How to check the graph structure of a \".pb\" file [Part.3]\nUse Tensorboard.\n### 1. Build Tensorboard\n```bash\n$ cd ~\n$ git clone -b v1.11.0 https://github.com/tensorflow/tensorflow.git\n$ cd tensorflow\n$ git checkout -b v1.11.0\n$ bazel build tensorflow/tensorboard:tensorboard\n```\n### 2. Run log output program for Tensorboard\n```python\nimport tensorflow as tf\nfrom tensorflow.python.platform import gfile\n\nwith tf.Session() as sess:\n    model_filename =\"xxxx.pb\"\n    with gfile.FastGFile(model_filename, \"rb\") as f:\n        graph_def = tf.GraphDef()\n        graph_def.ParseFromString(f.read())\n        g_in = tf.import_graph_def(graph_def)\n\n    LOGDIR=\"path/to/logs\"\n    train_writer = tf.summary.FileWriter(LOGDIR)\n    train_writer.add_graph(sess.graph)\n```\n### 3. Starting Tensorboard\n```bash\n$ bazel-bin/tensorflow/tensorboard/tensorboard --logdir=path/to/logs\n```\n### 4. Display of Tensorboard\nAccess `http://localhost:6006` from the browser.\n\n# Reference article, thanks\nhttps://github.com/FionaZZ92/OpenVINO.git  \nhttps://medium.com/@oleksandrsavsunenko/optimizing-neural-networks-for-production-with-intels-openvino-a7ee3a6883d  \nhttps://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/model_zoo.md  \nhttps://blogs.yahoo.co.jp/verification_engineer/71450155.html  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinto0309%2Fopenvino-deeplabv3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpinto0309%2Fopenvino-deeplabv3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinto0309%2Fopenvino-deeplabv3/lists"}