ncnn上部署yolov5

本文介绍如何将YOLOv5模型从PyTorch框架迁移到NCNN,包括准备环境、转换模型格式、编译NCNN、调整网络配置等关键步骤。

1、准备工作

  • U神的yolov5源码,下载地址
  • 自己的模型或者yolov5官网发布模型
  • linux系统(本在ubuntu18的docker环境下部署 )
  • ncnn源码,下载地址
  • opencv
  • protobuf 

  • opencv和protobuf必须安装否则在编译ncnn的时候,由于检测不到protobuf和opencv,onnx2ncnn工具不会被编译。

2、.pt文件转.onnx文件

将yolov5从torch框架转到ncnn上前需要用onnx工具先将.pt模型文件转化为.onnx文件,这里主要有两个中的步骤

1、python models/export.py --weights yolov5s.pt --img 640 --batch 1    #将.pt文件用onnx转化为.onnx文件
2、python -m onnxsim yolov5s.onnx yolov5s-sim.onnx   #onnxsim 精简模型

 

3、编译ncnn

1)、安装opencv

sudo apt install libopencv-dev

2)、编译protobuf-2.6.1

下载

wget https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz

解压后编译

cd 
要在ncnn部署yolov5,需要进行以下步骤: 1. 下载ncnn的源代码,并编译安装。 2. 下载yolov5的代码和预训练模型。 3. 将yolov5的模型转换成ncnn的模型格式。可以使用ncnn自带的工具ncnn转换器,或者使用yolov5官方提供的转换工具。 4. 编写C++代码,加载ncnn模型,读取图像并进行目标检测,最后输出检测结果。 下面是一个简单的C++代码示例: ```c++ #include <iostream> #include <net.h> #include <opencv2/opencv.hpp> using namespace std; using namespace ncnn; int main() { // 加载ncnn模型 Net yolov5; yolov5.load_param("yolov5.param"); yolov5.load_model("yolov5.bin"); // 读取图像 cv::Mat image = cv::imread("test.jpg"); // 图像预处理 const int target_size = 640; const float mean_vals[3] = {0.0f, 0.0f, 0.0f}; const float norm_vals[3] = {1/255.f, 1/255.f, 1/255.f}; ncnn::Mat in = ncnn::Mat::from_pixels_resize(image.data, ncnn::Mat::PIXEL_BGR2RGB, image.cols, image.rows, target_size, target_size); in.substract_mean_normalize(mean_vals, norm_vals); // 执行目标检测 Mat out; yolov5.forward(in, out); // 解析检测结果 const float* detection = out.row(0); for (int i = 0; i < out.h; i++) { float label = detection[0]; float score = detection[1]; float x1 = detection[2]; float y1 = detection[3]; float x2 = detection[4]; float y2 = detection[5]; if (score > 0.5) { cout << "label: " << label << ", score: " << score << ", box: (" << x1 << ", " << y1 << ", " << x2 << ", " << y2 << ")" << endl; } detection += 6; } return 0; } ``` 请注意,这只是一个简单的示例代码,具体的实现可能需要根据具体情况进行修改和优化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值