在windows下进行yolov3代码仿真计算结果

0、在windows下有两种仿真方式,第1种是在VS2015或更高版本下进行,第2种是在海思开发的Ruyistudio进行仿真。

 

1、在VS2015或更高版本下进行仿真:

参考:https://blog.csdn.net/avideointerfaces/article/details/90182987

工程名为simulator_sample_vc14.sln,找不到的话用everything.exe搜索,双击用VS2017打开。

前两个是功能性仿真,后两个是指令性仿真。在功能性或指令性仿真内部又分为使用opencv库和不使用opencv库两种类型。它们的最终结果应该是一致的,但功能性验证显然速度要快很多(我仿真起来真没看出多大的区别)。四个程序直接就能够运行成功,运行结果如下,第一个是功能性仿真的输出,第二个是指令性仿真的输出:

 

如果你想要迁移到自己的模型和数据的话,则需要修改里面的参数:

(1)更改得分阈值

(2)更改类别阈值等,如果你使用的是608大小的图,还需要修改416->608, 13->19, 26->38, 52->76

(3)如果使用608大小的图,还需要修改anchor,下图是416对应的anchor,608的anchor网上一大堆可以找找

(4)换成自己的wk模型

(5)换成自己的图片

注意这里图片是bbb...ggg...rrr...排列格式的,需要自己去生成,生成代码见为:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>
#include <fstream>
#include <cstdio>

using namespace std;
using namespace cv;

int main() 
{
	int W = 416, H = 416, C = 3;
	string inPath = R"(D:\soft\Hi3559A\HiSVP_PC_V1.1.2.0\software\data\detection\images\ref_yolov3\staff.jpg)";
	Mat pic = imread(inPath);
	resize(pic, pic, Size(416, 416));

	int64 t1 = getTickCount();
	int step = pic.step;

	string outPath = R"(D:\soft\Hi3559A\HiSVP_PC_V1.1.2.0\software\sample_simulator\GetBGR\staff.bgr)";
	remove(outPath.c_str());
	ofstream outfile(outPath, std::ios::out | std::ios::binary | ios::app);
	for (int k = 0; k < C; k++) {
		for (int i = 0; i < H; i++) {
			for (int j = 0; j < W; j++) {
				outfile.write((char*)&pic.data[i*step + j * C + k], sizeof(uchar));
			}
		}
	}

	int64 t2 = getTickCount();
	cout << "cost: " << (t2 - t1) * 1000 / getTickFrequency() << "ms" << endl;
	outfile.close();

	return 0;
}

 

最后再贴一下我运行自己数据的结果:

 

画出来:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;
using namespace cv;

int main() {
	//string path = R"(D:\soft\Hi3559A\HiSVP_PC_V1.1.2.0\software\data\detection\images\test\dog_bike_car.jpg)";
	string path = R"(D:\soft\Hi3559A\HiSVP_PC_V1.1.2.0\software\data\detection\images\ref_yolov3\staff.jpg)";
	Mat bgr = imread(path);

	Mat a416;
	resize(bgr, a416, Size(416, 416));

	//rectangle(a416, Point(64.87,166.71), Point(174.98 , 383.54), Scalar(0, 0, 255), 2);
	//rectangle(a416, Point(60.40,  92.48), Point(311.95,  311.59), Scalar(0, 0, 255), 2);
	//rectangle(a416, Point(255.03,  59.72), Point(376.12,  121.87), Scalar(0, 0, 255), 2);
	rectangle(a416, Point(220, 178), Point(253, 249), Scalar(0, 0, 255), 2);
	rectangle(a416, Point(160, 178), Point(188, 235), Scalar(0, 0, 255), 2);

	imshow("a416", a416);
	waitKey(0);

	return 0;
}

 

或者如果你使用了使用opencv库的仿真,则直接在.\sample_simulator\sample_func_vc14\result_SVP_SAMPLE_YOLO_V3下就生成了图片和结果的txt文件。

 

2、在Ruyistudio下进行仿真:

还没有进行过。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章