vscode部署yolov5模型中遇到的问题

代码如下:

#pragma once
#include <iostream>
#include <opencv2/opencv.hpp>

#ifndef YOLOV5
#define YOLOV5 false  //true:Yolov5, false:yolov7
#endif 

#ifndef YOLO_P6
#define YOLO_P6 false //是否使用P6模型
#endif 



struct Output {
	int id;             //结果类别id
	float confidence;   //结果置信度
	cv::Rect box;       //矩形框
};

class Yolo {
public:
	Yolo() {
	}
	~Yolo() {}
	bool readModel(cv::dnn::Net& net, std::string& netPath, bool isCuda);
	bool Detect(cv::Mat& SrcImg, cv::dnn::Net& net, std::vector<Output>& output);
	void drawPred(cv::Mat& img, std::vector<Output> result, std::vector<cv::Scalar> color);

private:

	float sigmoid_x(float x)
	{
		return static_cast<float>(1.f / (1.f + exp(-x)));
	}
#if(defined YOLO_P6 && YOLO_P6==true)

#if(defined YOLOV5 && YOLOV5==false)
	const float netAnchors[4][6] = { { 19,27,  44,40,  38,94 },{96,68,  86,152,  180,137} ,{140,301,  303,264,  238,542}, { 436,615,  739,380,  925,792 } };//yolov7-P6 anchors
#else
	const float netAnchors[4][6]= { { 19,27, 44,40, 38,94 },{ 96,68, 86,152, 180,137 },{ 140,301, 303,264, 238,542 },{ 436,615, 739,380, 925,792 } }; //yolov5-P6 anchors
#endif
	const int netWidth = 1280;  //ONNX图片输入宽度
	const int netHeight = 1280; //ONNX图片输入高度
	const int strideSize = 4;  //stride size
#else
#if(defined YOLOV5 && YOLOV5==false)
	const float netAnchors[3][6] = { {12, 16, 19, 36, 40, 28},{36, 75, 76, 55, 72, 146},{142, 110, 192, 243, 459, 401} }; //yolov7-P5 anchors
#else
	const float netAnchors[3][6] = { { 10, 13, 16, 30, 33, 23 }, { 30, 61, 62, 45, 59, 119 }, { 116, 90, 156, 198, 373, 326 } };//yolov5-P5 anchors
#endif
	const int netWidth = 640;   //ONNX图片输入宽度
	const int netHeight = 640;  //ONNX图片输入高度
	const int strideSize = 3;   //stride size
#endif // YOLO_P6

	const float netStride[4] = { 8, 16.0,32,64 };

	float boxThreshold = 0.25;
	float classThreshold = 0.25;
	float nmsThreshold = 0.45;
	float nmsScoreThreshold = boxThreshold * classThreshold;

	std::vector<std::string> className = { "person", "bicycle", "car", "motorcycle", "airplane", "bus", "train", "truck", "boat", "traffic light",
		"fire hydrant", "stop sign", "parking meter", "bench", "bird", "cat", "dog", "horse", "sheep", "cow",
		"elephant", "bear", "zebra", "giraffe", "backpack", "umbrella", "handbag", "tie", "suitcase", "frisbee",
		"skis", "snowboard", "sports ball", "kite", "baseball bat", "baseball glove", "skateboard", "surfboard",
		"tennis racket", "bottle", "wine glass", "cup", "fork", "knife", "spoon", "bowl", "banana", "apple",
		"sandwich", "orange", "broccoli", "carrot", "hot dog", "pizza", "donut", "cake", "chair", "couch",
		"potted plant", "bed", "dining table", "toilet", "tv", "laptop", "mouse", "remote", "keyboard", "cell phone",
		"microwave", "oven", "toaster", "sink", "refrigerator", "book", "clock", "vase", "scissors", "teddy bear",
		"hair drier", "toothbrush" };
};
#include<math.h>

#define USE_CUDA true //use opencv-cuda

using namespace std;
using namespace cv;
using namespace dnn;


int main()
{
	system("pause");
	std::cout<<"enter yolo "<<std::endl;
	string img_path = "./images/bus.jpg";

#if(defined YOLOV5 && YOLOV5==true)
	string model_path = "models/yolov5s.onnx";
#else
	string model_path = "models/yolov7.onnx";
#endif


	Yolo test;
	Net net;
	if (test.Yolo::readModel(net, model_path, USE_CUDA)) {
		cout << "read net ok!" << endl;
	}
	else {
		cout << "read onnx model failed!";
		return -1;
	}

	//生成随机颜色
	vector<Scalar> color;
	srand(time(0));
	for (int i = 0; i < 80; i++) {
		int b = rand() % 256;
		int g = rand() % 256;
		int r = rand() % 256;
		color.push_back(Scalar(b, g, r));
	}
	vector<Output> result;
	Mat img = imread(img_path);

	if (test.Detect(img, net, result)) {
		test.drawPred(img, result, color);

	}
	else {
		cout << "Detect Failed!" << endl;
	}
	std::cout<<"detected failed "<<std::endl;
	system("pause");
	return 0;
}

这个过程中,遇到了很多问题,第一,taks.json中的 ”args“选项,其中的 

"-g",
"${fileDirname}\\*.cpp",

这样写代表着编译文件下的所有的.cpp文件,如果是.c就编译所有的c文件,如果不这样写,就会导致只编译main.cpp,这样就会报错

### 回答1: 要在 VS Code 安装 YOLOv5,您需要执行以下步骤: 1. 打开 VS Code 并在左侧导航菜单选择“扩展”。 2. 在搜索栏输入“Python”并安装它。这个扩展将使您能够在 VS Code 使用 Python。 3. 打开终端并输入以下命令来安装 YOLOv5: ``` pip install yolov5 ``` 4. 安装完成后,您可以在 VS Code 创建一个 Python 文件并导入 yolov5,然后编写您的代码。 请确保您的电脑上已经安装了 Python 和 pip。如果没有,请先安装它们。 ### 回答2: 首先,要在VSCode上安装Yolov5,需要进行以下几个步骤: 1. 首先,确保你已经安装了VSCode,并且成功打开了它。 2. 打开VSCode的扩展面板,在搜索框输入“Python”并找到Python扩展,点击安装。 3. 安装完Python扩展后,点击VSCode的左侧边栏的“终端”选项,选择新建终端。 4. 在终端输入以下命令,使用pip安装yolov5: ``` pip install yolov5 ``` 5. 安装完成后,你可以在VSCode的文件资源管理器打开Yolov5的文件夹,并在其找到相关的配置文件和示例代码。 6. 如果要使用Yolov5进行对象检测或训练模型,你需要准备相应的数据集和权重文件,并按照Yolov5的文档进行配置和操作。你可以在VSCode打开相关的配置文件和示例代码,进行必要的修改和设置。 7. 在终端运行示例代码或命令,即可开始使用Yolov5进行对象检测或训练模型。 总结:通过在VSCode安装Python扩展,并使用pip安装yolov5,然后在VSCode打开yolov5文件夹,即可开始使用yolov5进行对象检测或训练模型。 ### 回答3: VSCode是一个轻量级的代码编辑器,可以通过插件扩展功能。如果要在VSCode上安装Yolov5,可以按照以下步骤进行: 1. 首先,确保已经安装了VSCode。可以从官方网站下载并安装最新版本的VSCode。 2. 打开VSCode,在搜索栏输入 "Python",选择安装 "Python" 扩展。这将为VSCode提供Python语言的支持。 3. 在VSCode打开终端。在菜单栏选择 "查看"->"终端",或者使用快捷键Ctrl+` 打开终端。 4. 在终端输入以下命令,使用pip安装Yolov5的依赖项: ``` pip install torch torchvision pip install opencv-python ``` 5. 下载Yolov5源代码。可以通过访问Yolov5官方的GitHub仓库(https://github.com/ultralytics/yolov5)来获取最新的源代码。可以选择将源代码下载到本地,或者通过Git命令进行克隆。 6. 在VSCode,使用 "文件"->"打开文件夹" 选项,选择下载的Yolov5源代码文件夹。 7. 在VSCode打开终端,切换到Yolov5源代码文件夹的路径。 8. 在终端输入以下命令,即可开始使用Yolov5: ``` python detect.py ``` 这将运行Yolov5的检测模型,并在终端显示检测结果。 通过上述步骤,你就可以在VSCode上安装和运行Yolov5了。你可以根据需要进行配置和修改Yolov5的参数和代码,以满足个性化的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值