HiSi 3516CV500 NNIE(Neural Network Inference Engine) 摸鱼记录(1) --- 环境搭建
PS:要转载请注明出处,本人版权所有。
PS: 这个只是基于《我自己》的理解,
如果和你的原则及想法相冲突,请谅解,勿喷。
前置说明
本文作为本人csdn blog的主站的备份。(BlogID=084)
本文发布于 2019-06-07 11:22:00,现用MarkDown+图床做备份更新。blog原图已丢失,使用csdn所存的图进行更新。(BlogID=084)
环境说明
无
背景
深度学习的爆发期已经到了瓶颈了,为啥这样说,因为没有突破性的理论进展,都是靠着网络更深、更广,算力更强大来做相应的功能。至少在我的世界观里面是这样的,虽然这样的认知可能会有局限性,或者说是错误的。
现在深度学习的方向已经不是以前的泡沫鼓吹了,而是落地,踏踏实实的把实验室的东西转换为实际对社会有用的东西,这才是深度学习的现在的实际情况。
要做相关的落地,在大部分应用场景来说,是不能够直接弄台服务器+GPU的方式来做相关的计算的,这样部署维护和成本都是一个很大的问题,现在其实大部分的场景需要的是低成本、小型化。就现在来看,其实就是移动手机平台和其他嵌入式板子平台是一个主流的方向。比如,手机端的:换脸啊、表情啊、化妆啊等等;板卡端的:依托于人脸识别的广告机啊、闸机啊等等。这里面的核心就是要在这些小型设备上做相关的算法运算。
在这些小型设备上做运算,有一个问题就是算力的问题,这些小型设备功耗低、算力低,很可能就是算法表现比较差。还好,很多大佬在很久以前就考虑到这些问题了,出了很多硬件加速的东西。如:Nvidia的TX TK系列、瑞芯微的RK系列、HiSi的Hi3559,Hi3519,Hi3516系列以及其他的Android手机SOC里面带的相关的NPU等等。
所以,为了把HiSi平台的相关深度学习硬件加速功能用起来,我们得把HiSi的NNIE利用起来完成这个功能。
NNIE简介
NNIE是 Neural Network Inference Engine 的 简 称 是 海思 媒体 S oC 中 专门针对神经网
络特别是深度学习卷积神经网络进行加速处理的硬件单元。----- 摘自hisi sdk svp部分《HiSVP开发指南.pdf》
NNIE 工作流程简介
海思提供了一个NNIE Mapper的工具(Linux , Win都有)。由于NNIE只支持Caffe框架,我们需要的是把Caffe的模型转换为NNIE可以使用的模型。
在我们转换的时候,需要我们提供一个NNIE转换的配置文件,然后根据配置文件把相关的caffe模型转换为NNIE的模型。然后我们在板子上加载这个模型,调用相关的API就可以完成这个网络的加速计算。
NNIE 环境搭建
工欲善其事必先利其器。NNIE最开始接触的时候,我觉得贼难受,觉得很难。但是当你把环境配置好了,你就会觉得事半功倍,很舒服。
以下内容,我都是按照HISI SDK的SVP部分的《HI SVP开发指南.pdf》做的,只是由于时效性的原因,有些内容需要做一定的改变适应才行。
我这里根据我的摸鱼经验,我建议萌新第一步,先把RuyiStudio配置起来,这里面带了所有和NNIE开发的工具。
RuyiStudio 简介
以下是RuyiStudio官方介绍:
RuyiStudio 集成 windows 版 的 NNIE mapper 和 仿真库, 具有 生成 NNIE wk 功能、 仿真NNIE 功能,同时 具有 代码 编辑、编译、调试、执行 功能 、 网络拓扑显示、目标检测画框、 向量 相似度 对比、 调试 定位 信息获取等功能 。
RuyiStudio ----- MinGW安装
这里我建议选择手动安装,下载MinGW的对应版本,解压到一个无中文路径的目录下。然后下载对应MinGW的msys,解压到MinGW的根目录下。这里直接按照文档给的内容走即可。这一步无明显的坑。
RuyiStudio ----- Python 3.5 与CAFFE安装
这一步是最坑的一步。所以这步我会一一按照文档介绍说明。
这一步必须按照手动配置方式,一键脚本配置,我建议有能力的小伙伴使用,纠错有难度。
- 按照文档把RUYI_PYTHON_PATH环境变量添加到系统。ruyi_env_setup-2.0.28所在目录定义为PREFIX, 这里添加的值为PREFIX/python35;PREFIX/python35/Scripts;PREFIX/python35/Library/bin。这里没什么坑,就是别有中文路径就好。
- 然后把RUYI_PYTHON_PATH的值添加到PATH环境变量中去。没坑这里,注意按照文档整就行了。
- ruyi_env_setup-2.0.28所在目录定义为PREFIX,把PREFIX/python35\Lib\site-packages\caffe\python添加到PYTHONPATH的环境变量中去。
- 进入ruyi_env_setup-2.0.28\python_bat目录,双击运行setup_download_python.bat。一般来说,你会报错的,因为anaconda的清华源已经被干掉了,不排除以后恢复的可能性,所以,这里又需要把清华源替换为anaconda的官方源。
注意:把:setup_download_python.bat中的所有https://mirrors.tuna.tsinghua.edu.cn/anaconda连接替换为https://repo.anaconda.com/。
列如:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64/certifi-2016.2.28-py35_0.tar.bz2 替换后是 https://repo.anaconda.com/pkgs/free/win-64/certifi-2016.2.28-py35_0.tar.bz2 。这里改完了,你可以双击这个脚本setup_download_python.bat下载相关的库,这里建议开代理下载,很慢,真的。
如果你以为这样就完了吗?那是不可能的。当你上述脚本执行完后,其中有9个是下载失败的。他们的连接特征如下:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/win-64/jpeg-9b-vc14_2.tar.bz2
来至于anaconda/cloud部分的。都不得行,so,得去官方源找对应的9个内容,我把链接地址贴到下面,可能你们需要的版本不是下面连接所示,但是你可以访问那个页面,那个页面包含所有的版本,选择对应的版本即可,
https://anaconda.org/conda-forge/jpeg/9b/download/win-64/jpeg-9b-vc14_2.tar.bz2
https://anaconda.org/conda-forge/libpng/1.6.34/download/win-64/libpng-1.6.34-vc14_0.tar.bz2
https://anaconda.org/conda-forge/libtiff/4.0.9/download/win-64/libtiff-4.0.9-vc14_0.tar.bz2
https://repo.anaconda.com/cloud/conda-forge/win-64/zlib-1.2.11-vc14_0.tar.bz2
https://anaconda.org/conda-forge/tk/8.5.19/download/win-64/tk-8.5.19-vc14_1.tar.bz2
https://anaconda.org/conda-forge/openssl/1.0.2n/download/win-64/openssl-1.0.2n-vc14_0.tar.bz2
https://anaconda.org/conda-forge/icu/58.2/download/win-64/icu-58.2-vc14_0.tar.bz2
https://anaconda.org/conda-forge/qt/5.6.2/download/win-64/qt-5.6.2-vc14_1.tar.bz2
https://anaconda.org/conda-forge/protobuf/3.5.1/download/win-64/protobuf-3.5.1-py35_vc14_0.tar.bz2
如果以上所需的内容版本发生了变动,那么访问https://anaconda.org/conda-forge/,直接去查找需要包的关键字,选择对应版本即可,如:jpeg ,搜索了后,选择 排名第一的conda-forge / jpeg 9c源,然后进去选择对应版本下载即可。这个网站有点卡,建议代理。如下图:
所有的内容下载好了 ,开始下一步。
- 把上面下载的包放到ruyi_env_setup-2.0.28\python35目录下,并全部解压到ruyi_env_setup-2.0.28\python35目录。
- 把ruyi_env_setup-2.0.28 目录下的caffe.zip 放到ruyi_env_setup-2.0.28\python35\Lib\site-packages下解压。
- 把opencv_python-3.4.0.12-cp35-cp35m-win_amd64.whl放到ruyi_env_setup-2.0.28\python35\Lib\site-packages ,然后在ruyi_env_setup-2.0.28\python35\Lib\site-packages目录,执行pip install opencv_python-3.4.0.12-cp35-cp35m-win_amd64.whl安装opencv
RuyiStudio-2.0.28.zip 解压运行
打开RuyiStudio.exe得到如下的界面,常用的几个点就如图所示,至于怎么完成后续工作。请看后续文章。
后记
无
参考文献
- 无
打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)
PS: 请尊重原创,不喜勿喷。
PS: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。
HiSi 3516CV500 NNIE(Neural Network Inference Engine) 摸鱼记录(1) --- 环境搭建的更多相关文章
- PaaS平台– Google App Engine的开源实现AppScale环境搭建
搭建好开发环境介绍: 硬件平台:HP Z800 工作站 内存:24GB 硬盘:1TB 虚拟化环境:XenServer 6.2.0 VM1:Ubuntu 12.04 amd64 server ...
- [Javascript摸鱼记录] 关于js简单字符删减替换增加插入追加前中后处理
以前总是怕死js如其名,能让我入坑润不出来,然后最近被迫写点静态html,又要用到数值运算处理, 于是又开启了「好几十个标签栏解决一个问题」的"探索路程",顺便记录一下摸鱼结果希望 ...
- (转)The Neural Network Zoo
转自:http://www.asimovinstitute.org/neural-network-zoo/ THE NEURAL NETWORK ZOO POSTED ON SEPTEMBER 14, ...
- 论文笔记之:Progressive Neural Network Google DeepMind
Progressive Neural Network Google DeepMind 摘要:学习去解决任务的复杂序列 --- 结合 transfer (迁移),并且避免 catastrophic f ...
- 深度神经网络如何看待你,论自拍What a Deep Neural Network thinks about your #selfie
Convolutional Neural Networks are great: they recognize things, places and people in your personal p ...
- Recurrent Neural Network[survey]
0.引言 我们发现传统的(如前向网络等)非循环的NN都是假设样本之间无依赖关系(至少时间和顺序上是无依赖关系),而许多学习任务却都涉及到处理序列数据,如image captioning,speech ...
- (zhuan) Recurrent Neural Network
Recurrent Neural Network 2016年07月01日 Deep learning Deep learning 字数:24235 this blog from: http:/ ...
- Sony深度学习框架 - Neural Network Console - 教程(1)- 原来深度学习可以如此简单
“什么情况!?居然不是黑色背景+白色文字的命令行.对,今天要介绍的是一个拥有白嫩的用户界面的深度学习框架.” 人工智能.神经网络.深度学习,这些概念近年已经涌入每个人的生活中,我想很多人早就按捺不住想 ...
- Graph Embedding Review:Graph Neural Network(GNN)综述
作者简介: 吴天龙 香侬科技researcher 公众号(suanfarensheng) 导言 图(graph)是一个非常常用的数据结构,现实世界中很多很多任务可以描述为图问题,比如社交网络,蛋白体 ...
- 梳理检测论文-Refinement Neural Network
Single-Shot Refinement Neural Network for Object Detection 目录 1. motivation 2. RefineDet 解析(Network ...
随机推荐
- 错误: tensorflow.python.framework.errors_impl.OutOfRangeError的解决方案
近日,在使用CascadeRCNN完成目标检测任务时,我在使用这个模型训练自己的数据集时出现了如下错误: tensorflow.python.framework.errors_impl.OutOfRa ...
- Maven多模块聚合工程实战
介绍 本文以SpringCloud微服务多模块聚合案例讲解,全程讲解中间涉及的核心知识点并配图加深理解. 更多maven知识点,建议去看<Maven实战>. 创建父工程 新建maven工程 ...
- spring boot 2.0集成并使用redis
项目地址:https://gitee.com/indexman/spring_boot_in_action 前面一章介绍了spring boot自带的缓存,下面讲一下如何在2.0版本中集成并使用red ...
- Java判断是否为闰年
题目: 判断一个输入的整数是否为闰年? 1.需要对输入的数据类型进行验证 2.支持多次输入和结束符号判断,例如输入q代表退出程序. 分析: 闰年的判断规则如下: (1)若某个年份能被4整除但不能被10 ...
- golang 打隧道和端口转发
`package main import ( "golang.org/x/crypto/ssh" "io" "log" "net& ...
- Redis能保证数据不丢失吗?
大家即使没用过Redis,也应该都听说过Redis的威名. Redis是一种Nosql类型的数据存储,全称Remote Dictionary Server,也就是远程字典服务器,用过Dictionar ...
- mybatis处理集合、数组参数使用in查询
对于mybatis的参数类型是集合数组的时候进行查询. 第一种:参数list ,使用mybatis的标签 1 SELECT * FROM TABLE_NAME AS a WHERE 2 3 a.id ...
- CentOS8安装Geant4笔记(二):CentOS8安装Qt5.15.2并测试运行环境
前言 在服务器CentOs8.2上安装geant4软件,但是运行不起来,所以本节开始主要是安装qt,测试qt基本功能. 要点 添加qt环境到系统环境中,是geant4启动qt的必要条件. ...
- 列表相关函数,深浅拷贝,字典相关函数,集合相关操作及文件操作---day08
1.列表的相关函数 append() 功能:向列表的末尾添加新的元素 格式:列表.append(值) 返回值:None 注意:新添加的值在列表的末尾,该函数直接操作原有列表 insert() 功能:在 ...
- DataGear 制作自定义柱状图条目颜色的数据可视化看板
DataGear 看板提供了dg-chart-options图表选项配置功能,可自定义样式.位置.显示内容等图表选项,其中的processUpdateOptions回调函数配置项,可以在图表更新数据前 ...