工业派-配置Intel神经计算棒二代(NCS2)

最近两天在工业派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,安装教程链接放在这里:新手上路——树莓派3B+安装cmake_树莓派3b安装cmake无法连接官网-CSDN博客
安装完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
因特尔神经计算棒(NCS)+树莓派+yolo-v3实现object-detection_树莓派 神经计算棒-CSDN博客
3.在工业派上使用转换后的xml和bin文件
执行: python3 **.py
报错:

表示花了两三天时间都没解决,心态都搞崩了,只想说fuck!目前针对这种情况,博主还是没找到解决办法,但是我有一些解决思路,写在这里,可以供需要的朋友参考!
经过多次试验发现这个报错和opencv的cv2.videoCpture方法有关,当videoCpture的参数是0或1时,python3 **.py执行正常,表明opencv是可以打开摄像头的。但是当videoCpture的参数是本地视频文件的路径时,执行python3 **.py,就会出现如上报错,我猜测可能是opencv没安装正确。经过百度、谷歌查询,得知可能是没有安装 ffmpeg ,但是博主去各种安装、重新编译opencv还是没解决这个问题,所以到最后只能放弃了。
参考网址:(参考了还是没解决问题,想哭~)
linux下opencv打不开视频的解决方法_linux arm 编译opencv 无法打开视频-CSDN博客
OpenCV VideoCapture error: VIDIOC_REQBUFS: Inappropriate ioctl for device - Stack Overflow
-----------曲线救国办法-----------------------
妈哟,实在解决不了怎么办呢?只能换个办法呗,反正只要能成功就行!
执行: 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)
最近两天在工业派ubuntu16.04上配置了Intel神经计算棒二代——Intel Neural Compute Stick,配置过程之艰辛我都不想说了,实在是太折磨人。不过历尽千辛万苦,总算让计算棒可以在工业派ubuntu16.04系统上跑了,还是蛮欣慰的。 注&…...
深度学习中常见的九种交叉验证方法汇总
目录 1. K折交叉验证(K-fold cross-validation) 2. 分层K折交叉验证(Stratified K-fold cross-validation) 3. 时间序列交叉验证(Time Series Split) 4. 留一交叉验证(Leave-One-Out Cross-…...
企业建网站流程
企业建网站是一个复杂而繁琐的过程,需要根据企业的需求和目标进行规划、设计、开发和运营。以下是企业建网站的一般流程,主要包括以下几个步骤: 第一步:需求分析 企业建网站的第一步是进行需求分析。这个过程需要与企业负责人和相…...
Laravel通过phpSpreadsheet合并excel
背景 最近有一个需求,需要将所有excel文件的sheet合并到一个文件。 目前我们处理表格使用的是xlswriter这个插件,对于数据量比较大的话非常好用。...
CTF网络安全大赛web题目:just_sqli
这道题目是bugku的web题目 题目的 描 述: KosenCTF{} 原文链接: CTF网络安全大赛web题目:just_sqli - 红客网-网络安全与渗透技术 题目Web源代码: <?php$user NULL; $is_admin 0;if (isset($_GET["source"])) {highlig…...
Java入门基础学习笔记27——生成随机数
Random的使用:生成随机数。 随机数应用: 随机点名: 年会抽奖: 猜数字游戏: 密码学。 查看API文档: package cn.ensource.random;import java.util.Random;public class RandomDemo1 {public static voi…...
EasyImage2.0 图床源码
EasyImage2.0 是一个简单图床的源码,它支持以下功能: 1. API接口 2. 登录后才能上传图片 3. 设置图片质量 4. 压缩图片大小 5. 添加文字或图片水印 6. 设定图片的宽度和高度 7. 将上传的图片转换为指定的格式 8. 限制上传图片的最小宽度和高度 …...
人工智能创新领衔,Android系统如虎添翼:2024 Google I/O 大会深度解析
人工智能创新领衔,Android系统如虎添翼:2024 Google I/O 大会深度解析 2024年5月14日举行的Google I/O大会,犹如一场精彩的科技盛宴,吸引了全球的目光。大会上,谷歌发布了一系列重磅产品和技术更新,展现了…...
下单制造fpc的工艺参数
FPC工艺简介 - 百度文库 (baidu.com) FPC工艺参数 - 豆丁网 (docin.com) FPC柔性线路板的主要参数.ppt (book118.com) 捷多邦: 华秋: 背胶: FPC板背胶是可以粘接在光滑表面的一种薄型胶带,可以在狭小以及光滑的表面上用来提供高…...
位拆分与运算
描述 题目描述: 现在输入了一个压缩的16位数据,其实际上包含了四个数据[3:0][7:4][11:8][15:12], 现在请按照sel选择输出四个数据的相加结果,并输出valid_out信号(在不输出时候拉低) 0: 不输出且只有此时的输入有…...
windows11目标文件夹访问被拒绝-将安全信息应用到以下对象时发生错误
将安全性信息应用到以下对象时发生错误”解决办法 要夺取所有权时,点“安全”添加用户并允许所有权限后点击“应用”, 一直“无法保存对。。。(文件夹名)权限所在的更改。拒绝访问”啊 必须先点击“高级”,把“允许父项…...
C#thread线程传参数更新UI的文本框
C#线程的用法有几个不同的地方: 1、怎么启动线程? 2、是不是需要传入参数? 3、是不是要调用到UI中的控件,并对其进行更新? 关于启动线程,这里一个示例是在form中启动: 定义一个private:sta…...
基于Vue和uni-app的增强型单选ccRadioView组件开发
标题:基于Vue和uni-app的增强单选组件ccRadioView的设计与实现 摘要:本文将详细介绍如何使用Vue和uni-app构建一个简单、好用且通用的单选框组件ccRadioView。该组件提供了单选列表的功能,并支持反向传值,方便开发者快速实现单选…...
信息系统项目管理师0602:项目立项管理 — 历年考题(详细分析与讲解)
点击查看专栏目录 1、2017年11月第31题 题干: 项目经理小李依据当前技术发展趋势和所掌握的技术能否支撑该项目的开发,进行可行性研究。小李进行的可行性研究属于( )。 选项: A. 经济可行性分析 B. 技术可行性分析 C. 运行环境可行性分析 D. 其他方面的可行性分析 答案…...
vue2 中使用audio播放音频
<audio controls ref"audioPlayer" style"width:800px;"><source :src"obj.audioUrl" /></audio> data() {return {obj: {audioUrl: require(../../../../public/audio/video.wav)}}}, 有个地方一定要注意一下. 如果不写req…...
一键追爆款,GPT一键改文 ,绘唐3,绘唐工具
ai画影满足你的制作要求 一键追爆款,GPT一键改文 入口工具 AI推文小说&漫画解说&解压混剪 人物定义,角色定义,lora转换,模型转换,可视化参考满足 一键追爆款 一键挂机生成,效果更精彩ÿ…...
在C#中编写递归函数时,为了避免无限递归
在C#中编写递归函数时,为了避免无限递归(也称为栈溢出),你需要确保递归调用有一个明确的终止条件。这个终止条件通常基于一个或多个参数,当这些参数满足某个特定条件时,递归就会停止并返回结果。 以下是一…...
css层叠样式表——基础css面试题
1、css样式来源有哪些? 內联样式-<a style"color:red"></a>内部样式-<style></style>外部样式-写在独立.css文件中的浏览器用户自定义样式浏览器默认样式 2、样式优先级问题 不同级别下: !important作为style属性…...
数据库-索引结构(B-Tree,B+Tree,Hash,二叉树)
文章目录 索引结构有哪些?二叉树详解?B-Tree详解?BTree详解?Hash详解?本篇小结 更多相关内容可查看 索引结构有哪些? MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的索引结构,主要包…...
Microsoft Azure AI语音服务
一:文字转语音SDK安装 安装语音 SDK - Azure AI services | Microsoft Learn 二:基于文本转语音Rest API 文本转语音 API 参考 (REST) - 语音服务 - Azure AI services | Microsoft Learn 三:基于文本合成语音 如何基于文本合成语音 - 语…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
