如何在Hi3559A上运行自己的YOLOv3模型(四)

完成网络的仿真与仿真代码简要分析

前言:

上一篇我们已经得到了转化完成的.wk网络结构文件,此次我们来简要讲述一下仿真的过程

Ruyi Stdio的仿真过程分为两种,一种是功能性的仿真,一种是指令仿真。顾名思义,功能性的仿真只在乎结果对不对,而指令性的仿真在乎的是每个过程,每次卷积的结果都是符合要求的。最终我们要在海思处理器上跑起来的就是指令性仿真过程中所用到的权重文件。

注:在转化的过程中选择功能性仿真与指令仿真最后生成的权重是有差别的,如果要进行功能性仿真,那在转化的时候就要选择功能性的仿真。

本文章以功能性的仿真为例。

 

step1.

首先,查看scr/main.cpp,可以发现里面包含多种网络的推理过程,可以将其他网络进行屏蔽,如下所示:

 

step2.

打开SvpSampleDetectionOneSeg.cpp文件,可以看到里面包含了各种文件所在的地址,按照自己的需求选择各种文件。如下

由于海思处理器所需要的图片文件类型不是标准格式,而是按照BBB...GGG...RRR格式排列的二进制文件。此地博主写了一个简单的python脚本完成jpg到bgr的转化,

import cv2

imgpath = "./BGR_img/917.jpg"
saveimg = r"./BGR_img/917_608x608.bgr"

img = cv2.imread(imgpath)
save_img_size = 608

if img is None:
    print("img is none")
else:
    img = cv2.resize(img,(save_img_size,save_img_size))
    (B, G, R) = cv2.split(img)
    with open(saveimg,'wb')as fp:
        for i in range(save_img_size):
            for j in range(save_img_size):
                fp.write(B[i, j])
        for i in range(save_img_size):
            for j in range(save_img_size):
                fp.write(G[i, j])
        for i in range(save_img_size):
            for j in range(save_img_size):
                fp.write(R[i, j])

    print("save success")

博主在下载频道也上传了相应的bgr转jpg与jpg 转bgr的文件,需要请自提

step3.

打开文件SvpSampleYolo.h 找到其中有关yolo3的部分,按以下文件注释修改各个参数,

//#define SVP_SAMPLE_YOLOV3_SRC_WIDTH                (416)
//#define SVP_SAMPLE_YOLOV3_SRC_HEIGHT               (416)
//
//#define SVP_SAMPLE_YOLOV3_GRIDNUM_CONV_82          (13)
//#define SVP_SAMPLE_YOLOV3_GRIDNUM_CONV_94          (26)
//#define SVP_SAMPLE_YOLOV3_GRIDNUM_CONV_106         (52)
//#define SVP_SAMPLE_YOLOV3_RESULT_BLOB_NUM          (3)
//#define SVP_SAMPLE_YOLOV3_CHANNLENUM               (255)
//#define SVP_SAMPLE_YOLOV3_PARAMNUM                 (85)
//#define SVP_SAMPLE_YOLOV3_BOXNUM                   (3)
//#define SVP_SAMPLE_YOLOV3_CLASSNUM                 (80)
//#define SVP_SAMPLE_YOLOV3_MAX_BOX_NUM              (10)
#define SVP_SAMPLE_YOLOV3_SRC_WIDTH                (608)
#define SVP_SAMPLE_YOLOV3_SRC_HEIGHT               (608)

#define SVP_SAMPLE_YOLOV3_GRIDNUM_CONV_82          (19) //a = 608÷32 //参数值为图片大小除以32
#define SVP_SAMPLE_YOLOV3_GRIDNUM_CONV_94          (38) //b = a*2  //参数值为上一行参数乘2
#define SVP_SAMPLE_YOLOV3_GRIDNUM_CONV_106         (76)	//c = b*2  //值为上一行参数乘以2
#define SVP_SAMPLE_YOLOV3_RESULT_BLOB_NUM          (3)
#define SVP_SAMPLE_YOLOV3_CHANNLENUM               (30) //值为  3x(5+ClassNum)
#define SVP_SAMPLE_YOLOV3_PARAMNUM                 (10) //值为  (5+ClassNum)
#define SVP_SAMPLE_YOLOV3_BOXNUM                   (3)
#define SVP_SAMPLE_YOLOV3_CLASSNUM                 (5)
#define SVP_SAMPLE_YOLOV3_MAX_BOX_NUM              (15)

 

step4.

以上全部修改并保存后,右键单击项目名称,切换为功能仿真,如下

随后点击build按钮,选择release

等待完成,大概耗时一分钟左右。

 

step5.

打开release文件夹,右键单击可执行文件,选择run as -- local

开始进行仿真,速度取决于电脑性能,完成之后可以在sim_out -- result文件夹看到输出的图片。

到此,就完成了一次功能性的仿真,如果RuyiStdio用不舒服的话可以选择使用VS进行上面的修改与运行,原sample也提供了vs的解决方案

 

下一篇:如何在Hi3559A上完成网络的推理

https://blog.csdn.net/qq_34533248/article/details/102498143

 

 

 

 

 

 

 

相关推荐
<p style="text-align:left;"> <span style="font-size:16px;">本课程内容分为5个部分:</span> </p> <p style="text-align:left;"> <span style="font-size:16px;">1.海思35xx SDK资料梳理以及SVP相关文档详细介绍</span> </p> <p style="text-align:left;"> <span style="font-size:16px;">2.将darknet框架训练出来的yolov3模型转换成caffemodel</span> </p> <div style="text-align:left;"> <span style="font-size:16px;">3.RuyiStudio工具的安装及其使用</span><br /> </div> <div style="text-align:left;"> <span style="font-size:16px;">4.Windows上仿真代码的运行以及代码分析</span><br /> </div> <p style="text-align:left;"> <span style="font-size:16px;">5.开发板上的sample代码的运行以及代码分析</span> </p> <p style="text-align:left;"> <span style="font-size:16px;"><br /> </span> </p> <p style="text-align:left;"> <span style="font-size:16px;"><span style="background-color:#FFFFFF;color:#000000;font-size:16px;">本课程特色:</span></span> </p> <p style="text-align:left;"> <span style="font-size:16px;">1. 不是照本宣科,着力把背后的原理讲清楚。</span> </p> <p style="text-align:left;"> <span style="font-size:16px;">2. 实用性很强。 目标检测算法是计算机视觉基本任务之一,而YOLOv3则仍然是目前工业界中应用非常广泛的算法模型,从速度、准确度以及易用性的trade-off来看,它目前仍然是最好的算法模型之一。</span> </p> <p style="text-align:left;"> <span style="font-size:16px;"><br /> </span> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页