• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1### 4.2.5 分割网
2
3#### 4.2.5.1 分割网仿真
4
5在进行分割网仿真之前,需搭建好RuyiStudio环境和Caffe环境等,具体内容如下:
6
7**(1)RuyiStudio依赖环境**
8
9* MinGW-W64 GCC-7.3.0
10
11​		如果安装配置了其他的mingw版本则sample工程下仿真库依赖的opencv库功能可能会异常,因其opencv库是在指定版本上编译出来的。
12
13* msys+7za+wget+svn+git+mercurial+cvs-rev13.7z
14
15​		msys中会提供用于清理Ruyi工程缓存时用到的rm.exe
16
17* Python3.5+caffe
18
19​		RuyiStudio的Get Caffe Output功能是集成python脚本实现的,依赖python3.5与caffe
20
21​		注:Python版本不同开发场景会有差异,使用前请仔细核对Python版本
22
23* requirement库
24
25​		在RuyiStudio-2.0.41\ruyi_env_setup-2.0.41\requirements.txt文档中列举了caffe环境安 装所需的库文件
26
27* nnie_mapper工具
28
29  nnie_mapper依赖 opencv3.4.2和 protobuf3.6.1,通过pip install 命令安装opencv_python-3.4.2.16-cp35- cp35m-win_amd64.whlprotobuf-3.6.1-cp35-cp35m-win_amd64.whl
30
31* RuyiStudio安装包
32
33  RuyiStudio安装包路的获取,请参考《[RuyiStudio的环境搭建](2.3.RuyiStudio%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.md)》
34
35
36**(2)下载RuyiStudio开发所需的工具压缩包**
37
38* 步骤1:下载MinGW-W64 GCC-7.3.0,选择 x86_64-win32-seh版本下载,如下图所示:注意下载文件为后缀是.7z的压缩文件,推荐解压到C盘根目录。下载地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
39
40![](./figures/hispark_taurus_nnie_sample/084mingw.png)
41
42* 步骤2:下载msys+7za+wget+svn+git+mercurial+cvs-rev13.7z,解压到MinGW文件夹下。msys中有提供用于清理Ruyi工程缓存时用到的rm.exe。下载地址:https://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/
43
44  ![](./figures/hispark_taurus_nnie_sample/085%E4%B8%8B%E8%BD%BDmsys.png)
45
46![](./figures/hispark_taurus_nnie_sample/086%E8%A7%A3%E5%8E%8Bmsys.png)
47
48* 步骤3:设置环境变量
49
50  在计算机上选择此电脑->属性->高级系统设置->环境变量,在系统变量中添加以下变量(若已有同名变量则添加变量值用分号隔开),找到变量名Path,新增两个变量值,分别为MinGW的bin路径和msys的bin路径,可参考下图:
51
52  ![](./figures/hispark_taurus_nnie_sample/087%E9%85%8D%E7%BD%AE%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
53
54* 步骤4:识别MinGW工具链
55
56​		在MinGw安装目录下bin目录中(如C:\mingw64\bin),将x86_64-w64-mingw32-gcc.exe再拷贝一份并将副本文件重命名为mingw32-gcc.exe(当前目录下),否则RuyiStudio工具不能自动识别到MinGW工具链;
57
58* 步骤5:重新启动计算机
59
60**(3)Python3.5+caffe环境配置**
61
62* 步骤1:下载libraries_v140_x64_py35_1.1.0.tar.bz2并放置在\HiSVP_PC_V1.2.2.2\tools\nnie\windows\ruyi_en v_setup-2.0.41文件夹下,下载链接如下:
63
64  https://github.com/willyd/caffe-builder/releases
65
66  ![](./figures/hispark_taurus_nnie_sample/088%E4%B8%8B%E8%BD%BDlibraries.png)
67
68  ![](./figures/hispark_taurus_nnie_sample/089%E5%BE%97%E5%88%B0libraries.png)
69
70* 步骤2:在系统环境变量中增加RUYI_PYTHON_PATH,变量值为
71
72```
73HiSVP_PC_V1.2.2.2\tools\nnie\windows\ruyi_env_setup-2.0.41\python35;
74HiSVP_PC_V1.2.2.2\tools\nnie\windows\ruyi_env_setup- 2.0.41\python35\Scripts;
75HiSVP_PC_V1.2.2.2\tools\nnie\windows\ruyi_env_setup- 2.0.41\python35\Library\bin;
76```
77
78添加%RUYI_PYTHON_PATH%到系统环境变量path的开头;
79
80**注意:HiSVP_PC_V1.2.2.2\tools\nnie\windows\ruyi_env_setup-2.0.41只是参考路径,具体路径以用户实际为准。**
81
82![](./figures/hispark_taurus_nnie_sample/090%E9%85%8D%E7%BD%AERuyiStudio%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
83
84![](./figures/hispark_taurus_nnie_sample/092%E9%85%8D%E7%BD%AERuyiStudio%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
85
86* 步骤3:手动添加用户环境变量PYTHONPATH,HiSVP_PC_V1.2.2.2\tools\nnie\windows\ruyi_env_setup-2.0.41\python35\Lib\site- packages\caffe\python,用于工具识别到caffe;
87
88![](./figures/hispark_taurus_nnie_sample/093%E9%85%8D%E7%BD%AEpython%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
89
90* 步骤4:参照RuyiStudio-2.0.41\ruyi_env_setup-2.0.41\requirements.txt中给出的版本号下载相关的包,在RuyiStudio-2.0.41\ruyi_env_setup-2.0.41路径下手动新建python35文件夹,并将下载的包直接放到RuyiStudio-2.0.41\ruyi_env_setup-2.0.41\python35文件夹下进行解压,whl文件也放在该路径下,参考**步骤6**进行安装;
91
92* 步骤5:caffe.zip 需要放到RuyiStudio-2.0.41\ruyi_env_setup-2.0.41\python35\Lib\site-packages下并解压,然后解压**步骤1**下载的libraries_v140_x64_py35_1.1.0.tar.bz2,将如下文件拷贝到 RuyiStudio-2.0.41\ruyi_env_setup-2.0.41\python35\Lib\site-packages\caffe\python\caffe文件夹下。
93
94```sh
95# libraries\bin**目录下的
96caffehdf5.dll
97caffehdf5_hl.dll
98caffezlib1.dll
99glog.dll
100libgcc_s_seh-1.dll
101libgfortran-3.dll
102libopenblas.dll
103libquadmath-0.dll
104VCRUNTIME140.dll
105
106# libraries\x64\vc14\bin** 目录下的
107opencv_core310.dll
108opencv_imgcodecs310.dll
109opencv_imgproc310.dll
110
111# 以及libraries\lib目录下的
112boost_chrono-vc140-mt-1_61.dll
113boost_filesystem-vc140-mt-1_61.dll
114boost_python-vc140-mt-1_61.dll
115boost_system-vc140-mt-1_61.dll
116boost_thread-vc140-mt-1_61.dll
117gflags.dll
118```
119
120* 步骤6:Opencv,protobuf,PyYAML以及Cython几个文件的安装,用 win+R命令进入 cmd 对话框,在cmd对话框进到RuyiStudio-2.0.41\ruyi_env_setup-2.0.41\python35目录 ,用pip install 指令进行安装;
121
122```sh
123pip install opencv_python-3.4.2.16-cp35-cp35m-win_amd64.whl
124pip install protobuf-3.6.1-cp35-cp35m-win_amd64.whl
125pip install PyYAML-3.13-cp35-cp35m-win_amd64.whl
126pip install Cython-0.28.5-cp35-cp35m-win_amd64.whl
127```
128
129* 步骤7:重启计算机
130
131**(4)导入工程开始模型仿真**
132
133搭建成功后,导入\HiSVP_PC_V1.2.2.2\software\sample_simulator默认工程,其中HiSVP_PC_V1.2.2.2\software路径下包含PC端仿真库sample工程和模型与测试数据,sample_simulator 为功能仿真和指令仿真默认工程。默认工程的导入步骤如下:
134
135* 步骤1:右键点击Project Explore, 在弹出菜单中选择**import**,如下图所示:
136
137![](./figures/hispark_taurus_nnie_sample/095RuyiStudioinport.png)
138
139* 步骤2:在弹出的导入对话框中,选择 **Existing Projects into Workspace**,如下图所示:
140
141![](./figures/hispark_taurus_nnie_sample/096%E5%BC%B9%E5%87%BA%E5%AF%BC%E5%85%A5%E5%AF%B9%E8%AF%9D%E6%A1%86.png)
142
143* 步骤3:点击Next,在弹出的对话框中,选择工程所在路径,并在Projects下选择该路径下要导入的sample工程, 点击**Finish**按钮,导入成功后工程将显示在**Project Explore**视图中,如下图所示:
144
145![](./figures/hispark_taurus_nnie_sample/097%E5%AF%BC%E5%85%A5project.png)
146
147导入成功后,如下图所示:
148
149![](./figures/hispark_taurus_nnie_sample/098%E5%AF%BC%E5%85%A5%E6%88%90%E5%8A%9F.png)
150
151* 步骤4:在项目上点击右键->Switch Emulation Library->Function Lib/Instruction Lib 来切换,同时会自动做切换编译宏和依赖库两个步骤,本文以指令仿真为例来进行分割网讲解,如下图所示:
152
153![](./figures/hispark_taurus_nnie_sample/099switchEmulationLibrary.png)
154
155* 步骤5:在项目的sim_out目录下有nnie_sim.ini文件,打开后界面如图,打开选项Enable Layer Linear Print后仿真时会在sim_out目录下打印仿真推理结果,如下图所示:
156
157![](./figures/hispark_taurus_nnie_sample/100EnableLayerPrint.png)
158
159* 步骤6:打开src目录下的main.cpp,将SvpSampleCnnFcnSegnet()分割网接口打开,其他函数屏蔽,如下图所示:
160
161![](./figures/hispark_taurus_nnie_sample/101%E5%B1%8F%E8%94%BD%E5%85%B6%E4%BB%96%E5%87%BD%E6%95%B0.png)
162
163* 步骤7:右键sample_simulator工程,先Clean Project,在Build project,编译成功后如下图所示:
164
165![](./figures/hispark_taurus_nnie_sample/102buildproject.png)
166
167接下来进行模型的仿真,在main.cpp文件下右键Run As选择1 Local C/C++ Application,由于分割网仿真需要消耗一段时间,请耐心等待。
168
169仿真完成后,即可在sim_out的inst_layer_output_linear目录下查看相应的layer层结果,如下图所示:
170
171![](./figures/hispark_taurus_nnie_sample/103%E6%9F%A5%E7%9C%8Blayer%E5%B1%82%E7%BB%93%E6%9E%9C.png)
172
173#### 4.2.5.2 输出模型浮点结果
174
175* 步骤1:首先需在sim_out目录下新建output文件夹,用来存放浮点结果,点击工具栏的 Get Caffe Output 功能,弹出如下对话框;
176
177![](./figures/hispark_taurus_nnie_sample/104%E8%BE%93%E5%87%BA%E6%A8%A1%E5%9E%8B%E6%B5%AE%E7%82%B9%E7%BB%93%E6%9E%9C.png)
178
179* 步骤2:依次设置输出中间结果网络的prototxt, caffemodel, Image File等,如果要对图像做预处理,需要配置Norm Type,Data Scale和MeanFile等,本文分割网预处理部分按照下图配置即可。
180
181![](./figures/hispark_taurus_nnie_sample/105%E5%88%86%E5%89%B2%E7%BD%91%E9%A2%84%E5%A4%84%E7%90%86%E9%85%8D%E7%BD%AE.png)
182
183* 步骤3:点击OK,开始输出浮点结果,当出现caffe output Successfully表示输出成功,如下图所示:
184
185![](./figures/hispark_taurus_nnie_sample/106%E8%BE%93%E5%87%BA%E6%B5%AE%E7%82%B9%E7%BB%93%E6%9E%9C.png)
186
187* 步骤4:模型浮点结果,存放在sim_out目录的output目录下,如下图所示:
188
189![](./figures/hispark_taurus_nnie_sample/107%E6%A8%A1%E5%9E%8B%E6%B5%AE%E7%82%B9%E7%BB%93%E6%9E%9C.png)
190
191#### 4.2.5.3 比较模型输出结果
192
193点击工具栏 Vector Comparision 按钮,弹出向量比较视图,在Left Folders和Right Folder中分别选择需要比较的不同配置的中间输出结果所在的文件夹,如下图所示:
194
195**注意:如果两边对应的层不能对齐比较,还需要勾选Parse Dot File 选择nnie_mapper生成的dot文件来进行层的匹配**
196
197若无dot文件,需要重新对模型进行量化,量化步骤如下:
198
199* 步骤1:确认下当前使用的芯片,右键工程->Switch SOC Version,选择与芯片对应的NNIE,如下图所示:
200
201![](./figures/hispark_taurus_nnie_sample/108%E7%A1%AE%E8%AE%A4%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E8%8A%AF%E7%89%87%E5%9E%8B%E5%8F%B7.png)
202
203* 步骤2:双击左侧Project Explorer视图中segnet_inst.cfg文件,或者选中cfg文件右键选择Open with-> Mapper Configuration Editor,打开cfg配置界面;
204
205![](./figures/hispark_taurus_nnie_sample/109%E9%85%8D%E7%BD%AEcfg%E7%95%8C%E9%9D%A2.png)
206
207* 步骤3:打开成功后,按照如下图所示方式进行配置:
208
209![](./figures/hispark_taurus_nnie_sample/110%E6%8C%89%E7%85%A7%E5%9B%BE%E7%89%87%E8%BF%9B%E8%A1%8C%E9%85%8D%E7%BD%AE.png)
210
211* 步骤4:配置成功,点击保存,点击运行按钮,稍等片刻,即可完成模型量化,此时在sample_simulator目录下即可出现.dot文件,如下图所示:
212
213![](./figures/hispark_taurus_nnie_sample/111%E8%BF%90%E8%A1%8Cruyistudio.png)
214
215* 步骤5:点击Vector Comparsion按钮,按照下图方式进行配置。
216
217![](./figures/hispark_taurus_nnie_sample/112%E9%85%8D%E7%BD%AEVectorComparsion.png)
218
219* 步骤6:点击Compare即可开始比较,稍等片刻即可完成比较,如下图所示:
220
221![](./figures/hispark_taurus_nnie_sample/113%E8%8E%B7%E5%BE%97%E7%BB%93%E6%9E%9C.png)
222
223分析上图可以看出,对齐之后的相似度各层稳定在0.99,结果可信。
224
225最终仿真之后的图像存放在sim_out/ result_SVP_SAMPLE_SEGNET目录下,如下图所示:
226
227![](./figures/hispark_taurus_nnie_sample/114%E5%AD%98%E6%94%BE%E7%9A%84%E5%9B%BE%E7%89%87%E4%BD%8D%E7%BD%AE.png)
228
229![](./figures/hispark_taurus_nnie_sample/115%E7%BB%93%E6%9E%9C%E5%B1%95%E7%A4%BA.png)
230
231#### 4.2.5.4 分割网部署及板端推理
232
233* [分割网部署及板端推理](4.2.5.4.%E5%88%86%E5%89%B2%E7%BD%91%E9%83%A8%E7%BD%B2%E5%8F%8A%E6%9D%BF%E7%AB%AF%E6%8E%A8%E7%90%86.md)
234
235