ncnn上部署yolov5

YOLOv5-Lite:NCNN+Int8部署和量化,树莓派也可实时 本文版权属于GiantPandaCV,未经允许请勿转载 前言: 还记得我在两个月前写的文章吗,关于yolov4-tiny+ncnn+int8量化的详细教程: https://zhuanlan.zhihu.com/p/372278785 后来准备写yolov5+ncnn+int8量化的教程,却在yolov5的量化上遇到了麻烦,一方面是量化后速度更慢了,另一方面是精度下降严重,出现满屏都是检测框的现象,后来经过很多尝试,最终都以失败告终。 再后来,还是决定换其他方式对yolov5进行量化,一是即使最小的yolo 阅读详情

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 protobuf-2.6.1
./configure
make -j
make check
sudo make install
sudo ldconfig

3)、编译ncnn

git clone https://github.com/Tencent/ncnn.git
cd ncnn
mkdir build && cd build
cmake ..
make
make install

4、onnx2ncnn(有坑)

步骤一   

cd ncnn/build/tools/onnx/

步骤二

./onnx2ncnn yolov5s-sim.onnx yolov5s.param yolov5s.bin #这里yolov5s-sim.onnx为“.pt文件转.onnx文件”生成的文件,输出yolov5s.param yolov5s.bin

这里会出现以下问题,这是由于ncnn不支持focus,这是focus模块转换的报错,我们需要手动修改生成的.param文件的参数。

可以用vim或者其他文本编辑器打开.param文件,该文件主要修改两个大的地方,如图所示:

第一处,修改不支持的层

第一处修改后:

这里主要是删除了不支持的层,并在ncnn中实现focus,删除10层 添加一层 减少了9层
添加的一层的输出可以根据下一层的输入填写,图中已标红,这里176的计算方法为原始层数185-10+1(添加的Yolov5Focus层),167是下一个卷积层的输入。

第二处 修改网络输出的shape,例如原图:

第二处修改后:

这里输出全部改为-1(修改位置为绿色框选的部分),否则回归会出来一堆bounding box,同时记住红色框出的字段,该字段为网络输出的name,在预测代码中,会根据该字段去结果,所以不同的网络需要修改此处。

5、修改yolov5的example代码,这里主要修改网络的输入和输出,输入为模型训练时image 的size,输出层name为第四步中红色框出的字段。

vim example/yolov5.cpp

6、重新编译example,在build/example目录下会生成yolov5的可执行文件,此时就可以测试了。

 

yolov5通过ncnn在安卓平台部署 yolov5部署通过ncnn安卓平台 目录 1.ncnn与yolov5的关系 2.ncnn模型转换 3.ncnn安卓环境部署 4.修改ncnn-android-yolov5源码 5.运行效果 -------------------------------------- 1.ncnn与yolov5的关系 NCNN官方的定义:NCNN是腾讯公司开源的一个专为手机端极致优化的高性能神经网络前向计算框架。NCNN从设计之初,就深刻考虑手机 阅读详情

相关推荐

【嵌入式】树莓派部署NCNN的YOLOv5模型

树莓派部署NCNN框架的YOLOv5模型

Ace_Spade的博客 3783

yolov5 模型部署NCNN(详细过程)

yolov5 模型部署NCNN 一、编译ncnn 1、在github官网输入 ncnn ,找到Tencen\ncnn 下载ncnn 2.打开vs2017 工具 x64 Native Tools Command Prompt for VS 2017 3.下载protobuf-3.4.0到本地 4.编译protobuf的动态库,输入以下命令: cd <protobuf-root-dir> mkdir build cd build cmake -G"NMake Makefiles" -DCMAKE

excelNo1的博客 1万+

基于ncnn的yolov5模型部署

这里为什么修改,nihui大佬的解释是u版yolov5是支持动态尺寸推理的,但是ncnn天然支持动态尺寸输入,无需reshape或重新初始化,给多少就算多少。u版yolov5将最后Reshape层把输出的grid写死了,导致检测小图时会出现检测框密密麻麻布满整个画面,或者根本检测不到东西。: 下采样32倍的输出节点name为419,下采样16倍的输出节点name为405,下采样8倍的输出节点name为out,3 ) .打开生成的.param文件,去除不支持的网络层。的编译环境下,配置NCNN。

@bangbang的博客 1177

安卓端使用ncnn部署yolov5(v6.0)

ncnn是腾讯公司开源的一个专为手机端极致优化的高性能神经网络前向计算框架。ncnn从设计之初,就深刻考虑手机端的部署和使用,无需第三方依赖,跨平台,手机端cpu的速度快于目前所有已知的开源框架。基于ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能APP,将AI带到你的指尖。

女神sha手的博客 5459

YOLOv5在Android上的ncnn部署实战

ncnn是一个为移动和嵌入式设备优化的深度学习计算框架,它在设计理念上特别强调了高效率和轻量级。ncnn没有依赖任何第三方库,这样做的好处是能够大大减小库的大小,提高部署时的灵活性和兼容性。它直接使用标准的C++库进行开发,不依赖于特定的硬件资源,使得它可以轻松部署在各种不同的移动设备上。在结构上,ncnn将操作分为三个层次:图层(graph level),算子层(operator level),以及内核层(kernel level)。

weixin_42583683的博客 581

ncnn框架下Yolov5部署与量化技术实践

Yolov5是在目标检测领域取得巨大成功的Yolov系列的最新版本,它继承了前代模型的快速、准确等优势,并引入了模块化的设计思想,使得模型在各种不同大小和复杂度的任务中都保持了高效性和灵活性。Yolov5的演进不仅关注于速度与精度的平衡,更在模型尺寸和部署便利性上下足了功夫。ncnn是一个为移动和嵌入式设备设计的高性能神经网络前向推理框架。由腾讯公司旗下的腾讯优图实验室开发,目标是打造一个轻量级、高性能的深度学习框架,以满足移动设备上运行AI模型的需求。

weixin_28922227的博客 1305

ncnn模型部署——训练自己YOLOv5模型转ncnn模型并部署到Android手机端

部署官网YOLv5模型和训练自己YOLOv5模型转ncnn模型并部署到Android手机端的详细实现过程

qq_40280673的博客 5463

IEEE LaTeX模板中algorithm排版避坑指南:如何优雅地嵌入算法描述?

本文详细解析了在IEEE LaTeX模板中优雅排版algorithm的实用技巧,包括基础配置、高级自定义及常见问题解决方案。通过嵌套环境与[H]参数的应用,帮助研究者克服IEEEtran模板对算法排版的限制,实现专业且美观的算法呈现。

weixin_28340315的博客 409

使用NCNN在华为M5部署Yolov5

文件默认的gradle是5.4.0版本,安装java12版本就好了,我图中之所以注释掉,是因为,我安装AS之前安装的是最新的JDK版本,结果出现不兼容问题,当时要不省级gradle版本,要不降低JDK版本,我选择了前者所以是7.5.0,所以大家可以在是先对应gradle版本安装JDK,后期会省去很多麻烦。这中间有个注意是想,我们在安装的时候jdk的时候,千万不要安装最新版本的,由于这个项目是三年前的,如果按照最新的jdk一定会和工程各种的不兼容。至于到底该按照哪个版本的jdk,可以参考下图,

豫州刺史 1194

【纯血鸿蒙】安装hdc工具

参考资料:

oh.K 5557

VoIP概述

VoIP统一通信与VoIPVoIP与传统电话比较VoIP各项产品设备的类型及应用 统一通信与VoIP 统一通信指的是把计算机与传统通信技术统一成一体的新通信模式,融合计算机网络与传统通信网络在一个网络平台上,实现电话、传真、数据传输、音视频会议、呼叫中心、即时通信等众多应用服务 VoIP又称IP电话或IP网络电话,是Voice Over IP的缩写,这种技术通过对语音信号进行编码数字化,压缩处理成压缩帧,然后转换成为IP数据包在TCP/IP网络上进行传输,从而达到了在IP网络上进行语音通信目的 VoIP与传

kaminao的博客 4365

yolov5 移动端模型部署(ncnn,tflite,paddlelite等)

深度学习移动端模型部署方案对比 本文对比了Paddle-Lite、ncnn和TensorFlow Lite三大移动端深度学习框架的部署流程,重点介绍了Paddle-Lite和ncnn的具体实现方法。 Paddle-Lite由百度飞桨团队开发,具有以下优势: 兼容性强,对模型版本要求低 转换简单,只需pip安装即可使用 部署方便,安卓demo只需修改输入输出即可运行 支持多种硬件平台,包括NPU加速 ncnn是腾讯开源的高性能移动端推理框架: 为手机端极致优化,速度快于其他开源框架 已在多个腾讯产品中应用验证

hdf521999的博客 1万+

Nvidia AGX Xavier刷机指北

因为工作的关系,要在AGX上安装CUDA。nvidia官网上没找到适合AGX版本的CUDA,只能走刷机的路子。刷机过程中,也遇到一些坑,做个记录。 需要有一台ubuntu系统的电脑作为主机Host。我的主机系统为Ubuntu18.04 整个刷机过程为: 在Host上安装sdkmanager,整个刷机过程主要通过sdkmanager来操作。 在Host自动下载一些系统组件,各种deb包 Host上制作OS系统镜像,烧录到AGX中 Host上之前下载好的deb包,安装到AGX中。 完结,撒花 ...

sinat_38685124的博客 6296

使用ncnn在树莓派部署自己的yolov5lites模型

学习,同时记录使用ncnn在树莓派部署的所遇到的坑

m0_52641167的博客 3421

【YOLOv11】006、YOLOv11数据增强策略:Mosaic、MixUp等增强技术原理解析

摘要:YOLOv11在产线缺陷检测中遇到小尺寸瑕疵漏检问题,暴露了训练数据过于"干净"的缺陷。数据增强的核心是提升模型泛化能力,而非简单扩充数据。Mosaic增强通过多图拼接迫使模型处理多尺度目标,需注意边界框裁剪细节;MixUp通过线性插值使决策边界更平滑,但需避免类别冲突。自适应增强策略应随训练进度动态调整强度。实际应用中,需针对小目标、类别不平衡等场景调整增强参数,并确保验证与推理流程一致。数据增强应针对性解决具体问题,而非盲目尝试组合。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 367

目标检测YOLO实战应用案例100讲-【目标检测】缺陷检测(二)

在工业生产中总是经常遇到裂痕、划痕等产品的表面缺陷问题,机器视觉行业对于表面检测相比前几年已经有很大的突破,对于产品表面的划伤、污迹等检测已经不再是难点。在金属、玻璃、手机屏幕、液晶板等行业表面检测上应用广泛。但由于该类缺陷形状不规则、深浅对比度低,而且往往会被产品表面的自然纹理或图案所干扰。因此,表面划痕缺陷检测对于正确打光、相机分辨率、被检测部件与工业相机的相对位置、复杂的机器视觉算法等要求非常高。

qq_36130719的博客 729

yolov5 6.0版本->onnx->ncnn +安卓部署 附加ncnn环境配置 保姆级详细教程

Windows下 yolov5 6.0版本转onnx转ncnn +安卓部署 附加ncnn环境配置 保姆级详细教程,踩了很多坑,基本是手把手将教你完成模型部署

优快云XXXR的博客 9618

科研绘图系列:R语言绘制世界地图数据分布(world map)

科研绘图系列:R语言绘制世界地图数据分布(world map)

专注生信领域 529

目标检测 YOLOv5 转ncnn移动端部署

目标检测 YOLOv5 转ncnn移动端部署 flyfish ncnn的版本20210507 OLOv5版本YOLOv5:v5 一 导出onnx python models/export.py --weights yolov5s.pt --img 320 --batch 1 二 onnx-simplifer简化模型 python -m onnxsim yolov5s.onnx yolov5s-sim.onnx 三 转ncnn ./onnx2ncnn yolov5s-sim.onnx yolov5s.pa

二分掌柜的 5938

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

NCNN环境部署及yolov5pt转ncnn模型转换推理

直接下载发行版本的完整代码,然后解压,用以下命令编译,自行替换Protobuf的编译路径,其中DNCNN_VULKAN=ON表示不使用Vunlkan加速。yolov5s v6.2训练的pt模型,直接导tourchscript,然后时候ncnn里面的pnnx工具直接转换为ncnn。1.安装vunlkan 1.2.198.1版本,记得配置环境变量。2.安装Protobuf3.20.0版本。该内容还未完整,笔记内容,后期补充。

小星博博的博客 2693

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

yolov5:使用NCNN将模型部署到Android端

解压后,打开文件夹,并将best.onnx复制到该文件夹的对应位置,地址栏输入cmd后,在打开的命令行窗口输入例如onnx2ncnn.exe best.onnx best.param best.bin回车即可,原文件夹生成了需要的bin文件和param文件。当我们训练好了自己的检测模型后,就需要一种中介,通过它在不同的框架之间进行转换,Open Neural Network Exchange 简称 ONNX,意思是开放神经网络交换格式,它就是我们需要的中介。这个百度上有很多对应的经验体,随便找一个。

qq_41478219的博客 3973

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

yolov5部署2——onnx->ncnn

yolov5部署2——onnx->ncnn 一,ncnn环境搭建 1.电脑需要先安装如下几个库:g++、cmake、protobuf、opencv protobuf安装: $ sudo apt-get install autoconf automake libtool curl make g++ unzip $ git clone https://github.com/google/protobuf.git $ cd protobuf $ git submodule update --init --r

小俊俊的博客 2797

【亲测免费】 YOLOv5 在 NCNN 上的部署教程

**YOLOv5_NCNN** 是一个基于腾讯的 [ncnn](https://github.com/Tencent/ncnn) 库实现的 YOLOv5 目标检测模型在 Android 平台上的部署示例。该项目旨在简化 YOLOv5 模型在移动端的集成过程,提供了一个可运行的 Android 示例应用程序,展示了如何高效地在设备上进行实时的目标检测。 ## 2. 项目快速启动 ### 环境准备...

gitblog_00699的博客 706

1、yolov5模型转换NCNN模型部署

写作原因:最近看了下nihui大佬的ncnn,练习着将yolov5训练的模型转换成ncnn模型并部署,同时借鉴了网上优秀的博文,记录一下,如有不对的地方,请多多指教。 说明:pytorch模型转换成onnx模型,及onnx模型简化和转ncnn模型在引用的文章中都有详细的说明,可移步至引用文章中查看。 先来看下ncnn模型,两个,一个是param一个是bin,需要修改的是param 其实yolov5 v1-v5在训练完后,使用onnx2ncnn.exe将简化后的onnx模型转换成ncnn模型时主要出

roujian0985的博客 4007
上一篇: jpg转海思nnie所需要的.bgr格式的数据
下一篇: 调用opencv的c接口时,编译提示 对‘cvRound’未定义的引用
LiBin1103
博客等级 码龄9年 38粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值