当前位置: 首页 > news >正文

工业派-配置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&#xff0c;配置过程之艰辛我都不想说了&#xff0c;实在是太折磨人。不过历尽千辛万苦&#xff0c;总算让计算棒可以在工业派ubuntu16.04系统上跑了&#xff0c;还是蛮欣慰的。 注&…...

深度学习中常见的九种交叉验证方法汇总

目录 1. K折交叉验证&#xff08;K-fold cross-validation&#xff09; 2. 分层K折交叉验证&#xff08;Stratified K-fold cross-validation&#xff09; 3. 时间序列交叉验证&#xff08;Time Series Split&#xff09; 4. 留一交叉验证&#xff08;Leave-One-Out Cross-…...

企业建网站流程

企业建网站是一个复杂而繁琐的过程&#xff0c;需要根据企业的需求和目标进行规划、设计、开发和运营。以下是企业建网站的一般流程&#xff0c;主要包括以下几个步骤&#xff1a; 第一步&#xff1a;需求分析 企业建网站的第一步是进行需求分析。这个过程需要与企业负责人和相…...

Laravel通过phpSpreadsheet合并excel

背景 最近有一个需求,需要将所有excel文件的sheet合并到一个文件。 目前我们处理表格使用的是xlswriter这个插件,对于数据量比较大的话非常好用。...

CTF网络安全大赛web题目:just_sqli

这道题目是bugku的web题目 题目的 描  述: KosenCTF{} 原文链接&#xff1a; CTF网络安全大赛web题目&#xff1a;just_sqli - 红客网-网络安全与渗透技术 题目Web源代码&#xff1a; <?php$user NULL; $is_admin 0;if (isset($_GET["source"])) {highlig…...

Java入门基础学习笔记27——生成随机数

Random的使用&#xff1a;生成随机数。 随机数应用&#xff1a; 随机点名&#xff1a; 年会抽奖&#xff1a; 猜数字游戏&#xff1a; 密码学。 查看API文档&#xff1a; package cn.ensource.random;import java.util.Random;public class RandomDemo1 {public static voi…...

EasyImage2.0 图床源码

EasyImage2.0 是一个简单图床的源码&#xff0c;它支持以下功能&#xff1a; 1. API接口 2. 登录后才能上传图片 3. 设置图片质量 4. 压缩图片大小 5. 添加文字或图片水印 6. 设定图片的宽度和高度 7. 将上传的图片转换为指定的格式 8. 限制上传图片的最小宽度和高度 …...

人工智能创新领衔,Android系统如虎添翼:2024 Google I/O 大会深度解析

人工智能创新领衔&#xff0c;Android系统如虎添翼&#xff1a;2024 Google I/O 大会深度解析 2024年5月14日举行的Google I/O大会&#xff0c;犹如一场精彩的科技盛宴&#xff0c;吸引了全球的目光。大会上&#xff0c;谷歌发布了一系列重磅产品和技术更新&#xff0c;展现了…...

下单制造fpc的工艺参数

FPC工艺简介 - 百度文库 (baidu.com) FPC工艺参数 - 豆丁网 (docin.com) FPC柔性线路板的主要参数.ppt (book118.com) 捷多邦&#xff1a; 华秋&#xff1a; 背胶&#xff1a; FPC板背胶是可以粘接在光滑表面的一种薄型胶带&#xff0c;可以在狭小以及光滑的表面上用来提供高…...

位拆分与运算

描述 题目描述&#xff1a; 现在输入了一个压缩的16位数据&#xff0c;其实际上包含了四个数据[3:0][7:4][11:8][15:12], 现在请按照sel选择输出四个数据的相加结果,并输出valid_out信号&#xff08;在不输出时候拉低&#xff09; 0: 不输出且只有此时的输入有…...

windows11目标文件夹访问被拒绝-将安全信息应用到以下对象时发生错误

将安全性信息应用到以下对象时发生错误”解决办法 要夺取所有权时&#xff0c;点“安全”添加用户并允许所有权限后点击“应用”&#xff0c; 一直“无法保存对。。。&#xff08;文件夹名&#xff09;权限所在的更改。拒绝访问”啊 必须先点击“高级”&#xff0c;把“允许父项…...

C#thread线程传参数更新UI的文本框

C#线程的用法有几个不同的地方&#xff1a; 1、怎么启动线程&#xff1f; 2、是不是需要传入参数&#xff1f; 3、是不是要调用到UI中的控件&#xff0c;并对其进行更新&#xff1f; 关于启动线程&#xff0c;这里一个示例是在form中启动&#xff1a; 定义一个private:sta…...

基于Vue和uni-app的增强型单选ccRadioView组件开发

标题&#xff1a;基于Vue和uni-app的增强单选组件ccRadioView的设计与实现 摘要&#xff1a;本文将详细介绍如何使用Vue和uni-app构建一个简单、好用且通用的单选框组件ccRadioView。该组件提供了单选列表的功能&#xff0c;并支持反向传值&#xff0c;方便开发者快速实现单选…...

信息系统项目管理师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画影满足你的制作要求 一键追爆款&#xff0c;GPT一键改文 入口工具 AI推文小说&漫画解说&解压混剪 人物定义&#xff0c;角色定义&#xff0c;lora转换&#xff0c;模型转换&#xff0c;可视化参考满足 一键追爆款 一键挂机生成&#xff0c;效果更精彩&#xff…...

在C#中编写递归函数时,为了避免无限递归

在C#中编写递归函数时&#xff0c;为了避免无限递归&#xff08;也称为栈溢出&#xff09;&#xff0c;你需要确保递归调用有一个明确的终止条件。这个终止条件通常基于一个或多个参数&#xff0c;当这些参数满足某个特定条件时&#xff0c;递归就会停止并返回结果。 以下是一…...

css层叠样式表——基础css面试题

1、css样式来源有哪些&#xff1f; 內联样式-<a style"color:red"></a>内部样式-<style></style>外部样式-写在独立.css文件中的浏览器用户自定义样式浏览器默认样式 2、样式优先级问题 不同级别下&#xff1a; !important作为style属性…...

数据库-索引结构(B-Tree,B+Tree,Hash,二叉树)

文章目录 索引结构有哪些&#xff1f;二叉树详解&#xff1f;B-Tree详解?BTree详解&#xff1f;Hash详解&#xff1f;本篇小结 更多相关内容可查看 索引结构有哪些&#xff1f; MySQL的索引是在存储引擎层实现的&#xff0c;不同的存储引擎有不同的索引结构&#xff0c;主要包…...

Microsoft Azure AI语音服务

一&#xff1a;文字转语音SDK安装 安装语音 SDK - Azure AI services | Microsoft Learn 二&#xff1a;基于文本转语音Rest API 文本转语音 API 参考 (REST) - 语音服务 - Azure AI services | Microsoft Learn 三&#xff1a;基于文本合成语音 如何基于文本合成语音 - 语…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中&#xff0c;如何展示好看的实验结果图像非常重要&#xff01;&#xff01;&#xff01; 1、灰度原始图像 灰度图像每个像素点只有一个数值&#xff0c;代表该点的​​亮度&#xff08;或…...

C# WPF 左右布局实现学习笔记(1)

开发流程视频&#xff1a; https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码&#xff1a; GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用&#xff08;.NET Framework) 2.…...

React与原生事件:核心差异与性能对比解析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

STM32CubeMX-H7-19-ESP8266通信(中)--单片机控制ESP8266实现TCP地址通信

前言 上篇文章我们已经能够使用串口助手实现esp8266的几种通信&#xff0c;接下来我们使用单片机控制实现。这篇文章会附带教程&#xff0c;增加.c和,.h&#xff0c;把串口和定时器放到对应的编号&#xff0c;然后调用初始化就可以使用了。 先讲解&#xff0c;然后末尾再放源码…...

code-server安装使用,并配置frp反射域名访问

为什么使用 code-server是VSCode网页版开发软件&#xff0c;可以在浏览器访问编程&#xff0c;可以使用vscode中的插件。如果有自己的服务器&#xff0c;使用frp透传后&#xff0c;域名访问在线编程&#xff0c;使用方便&#xff0c;打开的服务端口不需要单独配置&#xff0c;可…...