最近两天在工业派ubuntu16.04上配置了Intel神经计算棒二代——Intel Neural Compute Stick,配置过程之艰辛我都不想说了,实在是太折磨人。不过历尽千辛万苦,总算让计算棒可以在工业派ubuntu16.04系统上跑了,还是蛮欣慰的。

注:以下所说的计算棒默认说的是计算棒二代,不是计算棒一代

下面简单记录一下我在配置计算棒过程中遇到的一些坑

一、运行官方demo遇到的坑

1.一定要按照官网来安装配置加速棒!一定要按照官网来安装配置加速棒!一定要按照官网来安装配置加速棒!不要在网上瞎几把找帖子,我是深有体会,很多都写的不明不白,只有官网的配置教程才是最简单的,不会让你掉进更多坑!(教程前面的一些概述一定要认真看,上面写明了一些软硬件配置要求)

附上一些重要链接:

官网配置教程:https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_raspbian.html

最新OpenVINO™Toolkit软件包下载:https://download.01.org/opencv/2019/openvinotoolkit/

下载下来的安装包形式:l_openvino_toolkit_raspbi_p_<version>.tgz

注:博主工业派系统是ubuntu16.04,虽然不是树莓派官方系统,但是树莓派也是32位的linux系统,所以在工业派上配置计算棒和在树莓派上配置计算棒是一样的操作(最主要原因还是工业派官方支持计算棒)

注:工业派的bash.bashrc路径为:/etc /bash.bashrc ,bash.bashrc文件主要用于设置登录时控制台输出的信息

2.前车之鉴,如图一所示,建议软件安装包使用最新版2019_R1.1,不推荐安装2018_R5。博主最先尝试使用了2018_R5,在后面配置计算棒的时候发现,会报错如图二所示,一直无法解决,换成2019_R1.1版本后就没有这个问题了!

图一

图二

3.cmake版本号一定要正确,如三图所示,官网教程明确说明 cmake 版本号一定要大于等于3.7.2

图三

如果cmake版本号低于3.7.2,则在后面执行命令:cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a" /opt/intel/openvino/deployment_tools/inference_engine/samples  时会报图四所示错误!

图四

这里官网也有点坑,如图五所示,如果按照官网命令 sudo apt install cmake  来安装cmake,会发现安装的cmake版本号会低于3.7.2,博主一开始就忽略了这里,后面绕了一圈才发现是自己前面这里的cmake没有配置好,简直了!

图五

博主后面是手动安装的cmake3.13.0,安装教程链接放在这里:https://blog.csdn.net/qq_26035845/article/details/84492576

安装完cmake后,执行 cmake --version 时,如果报错显示:-bash: /usr/bin/cmake: No such file or directory  ,则应该是系统没有找到 cmake 命令。解决办法:做一个链接即可,即执行命令:ln -s /usr/local/bin/cmake /usr/bin

4. 在终端显示 OpenVINO environment initialized 后,说明 OpenVINO环境已经初始化成功,接着输入python3进入编辑器,再输入import cv2 可能会出现如图六所示报错:

图六

解决办法:

执行命令:sudo vi ~/.bashrc

在文档尾部加上:export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/opt/intel/openvino/inference_engine/lib/armv7l/

最后执行命令:source  ~/.bashrc

成功!

注:核心思想就是将libinference_engine.so文件所属目录添加到 linux 的环境变量中,这样用户就可以访问到这个目录下的libinference_engine.so文件,也就不会引起报错了

5. import openvino可能也会出现如下报错:

原因:没有把需要的openvino模块目录添加到系统的pythonpath中,导致找不到openvino模块

解决办法:

执行命令:sudo vi ~/.bashrc

在文档尾部加上:export PYTHONPATH=/opt/intel/openvino/python/python3.5/armv7l:$PYTHONPATH

退出编辑,执行命令:source  ~/.bashrc

成功!

6. python3 进入python命令行后,输入 import cv2 ,再输入 cv2.__version__,发现结果是: ‘4.1.0-openvino’,这表明openvino配置成功!但是如果 sudo python3 进入python命令行后,输入 import cv2 ,再输入 cv2.__version__,可能会发现结果是:  ‘4.1.0’,而不是配置openvino后应该正确显示的 ‘4.1.0-openvino’。出现这种差别的原因是 sudo 命令会使系统自动重置PATH环境变量,这样就区别于普通用户执行命令的环境变量。解决这个问题的方法:

执行命令:sudo nano /etc/sudoers

注释  Defaults env_reset  这行代码

在文件的最后添加如下两行代码:

Defaults env_keep += "PYTHONPATH"

Defaults env_keep += "Any other env variable you want to keep"

保存退出,大功告成!

参考:https://blog.csdn.net/weixin_34390105/article/details/87297075

7.在使用OpenCV * API运行人脸检测模型推理时,执行 python3 openvino_fd_myriad.py 可能会报如下错误:

dnn.cpp:2538: error: (-2:Unspecified error) Build OpenCV with Inference Engine to enable loading models from Model Optimizer. in function 'readFromModelOptimizer'

解决办法:

先执行命令:source /opt/intel/openvino/bin/setupvars.sh

再执行命令:echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc

注:执行第一条命令只是临时设置环境变量的,第二条命令才是永久的永久设置环境变量!

8.其它操作按照官网操作步骤一步一步来即可!

----------------------------运行官方demo效果--------------------------------

二、运行自己网络模型遇到的坑

1.在电脑ubuntu16.04上安装openVINO

如果要将自己的网络模型用于计算棒推理,则必须将该模型转换为由推理引擎用作输入的.bin和.xml中间表示(IR)文件。因为工业派(树莓派)上ubuntu16.04上安装的openVINO是阉割版的,功能不全,不支持模型转换,所以为了实现模型转换,还必须在win10或者ubuntu上安装一遍完整版openVINO。因为我在win10上打死装不上vs2019,神坑,所以我放弃在win10装openVINO,转而在电脑ubuntu16.04上装openVINO。安装的时候才发现在电脑ubuntu16.04安装openVINO真的是贼简单!附上官方安装网址:https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_linux.html

2.将tensorflow转换为movidius格式(.xml & .bin)------注:是冻结tensorflow模型(SSD Mobilenet V2)

2.1 执行命令: cd /opt/intel/openvino/deployment_tools/model_optimizer

2.2 执行命令:sudo python3 mo.py --input_model frozen_inference_graph.pb --tensorflow_use_custom_operations_config extensions/front/tf/ssd_v2_support.json --tensorflow_object_detection_api_pipeline_config pipeline.config --input_shape=[1,416,416,3]  --data_type=FP16

成功!

注:所需frozen_inference_graph.pb、pipeline.config文件需要自己提前准备好

参考网址:

https://docs.openvinotoolkit.org/latest/_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_TensorFlow.html

https://software.intel.com/en-us/forums/computer-vision/topic/785586

https://blog.csdn.net/LuckyXiaoSu/article/details/87814471

3.在工业派上使用转换后的xml和bin文件

执行: python3 **.py

报错:

表示花了两三天时间都没解决,心态都搞崩了,只想说fuck!目前针对这种情况,博主还是没找到解决办法,但是我有一些解决思路,写在这里,可以供需要的朋友参考!

经过多次试验发现这个报错和opencv的cv2.videoCpture方法有关,当videoCpture的参数是0或1时,python3 **.py执行正常,表明opencv是可以打开摄像头的。但是当videoCpture的参数是本地视频文件的路径时,执行python3 **.py,就会出现如上报错,我猜测可能是opencv没安装正确。经过百度、谷歌查询,得知可能是没有安装 ffmpeg ,但是博主去各种安装、重新编译opencv还是没解决这个问题,所以到最后只能放弃了。

参考网址:(参考了还是没解决问题,想哭~)

https://blog.csdn.net/lovelyaiq/article/details/11927439

https://stackoverflow.com/questions/53504289/opencv-videocapture-error-vidioc-reqbufs-inappropriate-ioctl-for-device

-----------曲线救国办法-----------------------

妈哟,实在解决不了怎么办呢?只能换个办法呗,反正只要能成功就行!

执行: sudo python3 **.py

又报错!其实在情理之中,毕竟只是提高了一下权限,但是这个报错一看的话感觉也有点烧脑,如下:

仔细一看,是因为加了sudo后,路径 /opt/intel/openvino/python/python3.5/armv7l/openvino/inference_engine下的libmyriadPlugin.so没有找到。自行cd到该文件目录下,发现是真没有libmyriadPlugin.so这个文件,所以系统无法加载这个文件。解决办法就是想办法在其它目录中找到libmyriadPlugin.so文件,然后复制到 /opt/intel/openvino/python/python3.5/armv7l/openvino/inference_engine下即可。经过查找发现 /opt/intel/openvino/deployment_tools/inference_engine/lib/armv7l 目录下有libmyriadPlugin.so文件,于是将该文件复制到 /opt/intel/openvino/python/python3.5/armv7l/openvino/inference_engine下,再运行sudo python3 **.py,发现还是有相同的报错。百度后发现是因为 .so文件是有依赖的,于是博主索性将 /opt/intel/openvino/deployment_tools/inference_engine/lib/armv7l 下的所有文件都复制拷贝到 /opt/intel/openvino/python/python3.5/armv7l/openvino/inference_engine下,再运行sudo python3 **.py,发现这回成功了!

三、总结

最后两个报错,我几近崩溃,熬了好久都没熬出答案,经过不断摸索总算是解决了其中一个问题,尽管另一个问题没解决,但是已经不影响操作了!不过还是希望解决了VIDIOC_REQBUFS: Inappropriate ioctl for device这个问题的朋友可以告知一下,万分感谢!我也总算是在工业派上利用计算棒跑通了tensorflow程序,这一路踩得地雷、掉的坑实在太多,博主早已面目全非,激情不再,好在捱到了最后,顺利解决了问题,终于可以松一口气了!总结一下就是遇到问题千万不要轻言放弃,一定要动用所有资源去寻找答案,努力努力再努力,总会柳暗花明的!当然,很多时候也许也需要换一种思维去寻找解决问题的办法,不要在一棵树上吊死。不管什么猫,能捉到耗子的猫就是好猫!

工业派-配置Intel神经计算棒二代(NCS2)的更多相关文章

  1. 在工业派上使用opencv库的记录

    1.在工业派linux操作系统环境下,调用OpenCV库,用python写了第一个查看图片的程序 注意:要进入工业派的terminal 参考:https://www.cnblogs.com/magic ...

  2. Ubuntu 16.04下配置intel opencl环境

    一. 靠谱的安装教程 1. 官网教程 https://software.intel.com/en-us/articles/sdk-for-opencl-2019-gsg,打开后往下拉到[4. Prod ...

  3. 2018 AI产业界大盘点

    2018  AI产业界大盘点 大事件盘点 “ 1.24——Facebook人工智能部门负责人Yann LeCun宣布卸任 Facebook人工智能研究部门(FAIR)的负责人Yann LeCun宣布卸 ...

  4. 如何配置全世界最小的 MySQL 服务器

    配置全世界最小的 MySQL 服务器——如何在一块 Intel Edison 为控制板上安装一个 MySQL 服务器. 介绍 在我最近的一篇博文中,物联网,消息以及 MySQL,我展示了如果 Part ...

  5. centos 4.4配置使用 and Nutch搜索引擎(第1期)_ Nutch简介及安装

    centos 4.4配置使用 1.Nutch简介 Nutch是一个由Java实现的,开放源代码(open-source)的web搜索引擎.主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的 ...

  6. Google Coral Edge TPU USB加速棒上手体验

    Edge AI是什么?它为何如此重要? 传统意义上,AI解决方案需要强大的并行计算处理能力,长期以来,AI服务都是通过联网在线的云端基于服务器的计算来提供服务.但是具有实时性要求的AI解决方案需要在设 ...

  7. FreeBSD 物理机下显卡的配置

    FreeBSD 已从 Linux 移植了显卡驱动,理论上,A 卡 N 卡均可在 amd64 架构上正常运行. 支持情况 对于 FreeBSD 11,支持情况同 Linux 内核 4.11: 对于 Fr ...

  8. x86 构架的 Arduino 开发板Intel Galileo

    RobotPeak是上海的一家硬件创业团队,团队致力于民用机器人平台系统.机器人操作系统(ROS)以及相关设备的设计研发,并尝试将日新月异的机器人技术融入人们的日常生活与娱乐当中.同时,RobotPe ...

  9. x86 版的 Arduino Intel Galileo 开发板的体验、分析和应用

    1.前言 在今年(2013)罗马举办的首届欧洲 Make Faire 上,Intel 向对外发布了采用 x86 构架的 Arduino 开发板:Intel Galileo.这无疑是一个开源硬件领域的重 ...

随机推荐

  1. ASCII part of UTF8

    UTF8 所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码. UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1 ...

  2. PHP算法之字符串转换整数 (atoi)

    请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之 ...

  3. postman连接不了localhost问题解决

    学习搭建服务器可用postman 连接不了localhost的端口 网上好多教程是这样连接 看完视频后我们是这样 找了大量资料都解决不了,什么版本,什么证书的都不好使,最简单的就是去掉http:// ...

  4. soj116 快乐串

    题意:定义一个串是k-happy的:对于所有的Ai,都有Aj(j!=i),使得|Ai-Aj|<=k. 问使得原串至少存在一个长度>=m的连续子串是k-happy的最小的k? 标程: #in ...

  5. uoj49 轴仓库

    题意: n叠箱子排成一线,第i叠箱子坐标为xi,竖直方向叠着ai个箱子. 可以花费+1s左移或右移一位,也可以在瞬间搬起一个位置的箱子,或将怀里的有且仅有一个箱子放下. 任意选择起点s(可以不与xi重 ...

  6. 廖雪峰Java16函数式编程-2Stream-7其他操作

    1. 排序 Stream<T> sorted(); //按元素默认大小排序(必须实现Comparable接口) Stream<T> sorted(Comparator<? ...

  7. Json数据交换一Jackson

    依赖 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>ja ...

  8. 「题解」:$e$

    问题 B: $e$ 时间限制: 2 Sec  内存限制: 512 MB 题面 题面谢绝公开. 题解 话说一天考两个主席树这回事…… 正解可以叫树上主席树??(脸哥说也叫主席树上树???) 对于树上的每 ...

  9. Myeclipse从外部导入项目时,jsp和html页面中所有的onclick="return xx()"位置均出现cannot return from outside function() or method()错误

  10. iOS开发UITableView随笔

    1.设置cell的间隔 - (void)setFrame:(CGRect)frame{ frame.size.height -=; [super setFrame:frame]; } 2.刷新row或 ...