当前位置:   article > 正文

关于YOLO8学习(一)环境搭建,官方检测模型部署到手机_yolov8模型部署到手机端具体的方式

yolov8模型部署到手机端具体的方式

在这里插入图片描述

教学视频地址

B站

一,环境的搭建

环境

win10
python 3.11
cmake
pytorch
pycharm

过程

首先安装好一个pycharm,这里就不一一叙述了。
其次,选择好一个python版本,是关键所在。有些YOLO的版本,并不支持很高的python版本,博主选用的是python3.11版本。经过实际的测试,这个版本比较合适。

注意,配置到这里,python环境和pycharm都已经安装,这里从PyCharm新建一个项目,python建议配置一个虚拟的环境,这样不会影响系统级别的python依赖。

(一)首先就是安装cmake的环境。直接从cmake下载,然后path配置cmake路径即可。

(二)完成cmake安装后,进行onnxsim安装,这个库,会涉及到yolo转换onnx,同时也是依赖cmake才能正常安装。
相关指令:pip install onnxsim

(三)安装pytorch版本
pip install torch2.0.1+cu117 torchvision0.15.2+cu117 torchaudio==2.0.2+cu117 -f https://download.pytorch.org/whl/torch_stable.html

(四)然后指定一个yolo版本进行安装,这里指定版本为8.0.134。注意,这个版本将会影响后续的代码编写。
具体指令如下:
pip install ultralytics==8.0.134

(五)特别注意,如果你的电脑有显卡,在训练模型的时候,是可以用显卡训练的,但是对于英伟达的1660系列的显卡,需要在train方法中,声明好amp=False,才能进行GPU训练。

完成,上述步骤后,就配置好所有需要进行训练的环境了,后面的文章,将会描述如何把官方的训练好的模型,部署到手机上。

二,官方的模型,转换,部署到手机上

对于如何训练一个模型,后续教程才进行讲解,现在要讲解的是,如何把官方的一个训练好的模型,部署到安卓手机上,并且能让其正常运行。

整个流程,就是Pt–>onnx–>ncnn。进行文件转换后,生成的nccn文件,部署到安卓手机上,并实现检测功能。

首先,下载好官方的模型:yolov8n.pt
对于这个模型,直接百度一搜索,就会有了,同时,也可以通过代码的形式,下载到项目的目录中,相关代码如下:

model = YOLO(('yolov8n.pt')
  • 1

通过执行上面的python代码,就会自动下载yolov8n.pt文件,到执行文件同级别的目录了。

转换之前,这里是需要修改yolo的源码的,具体步骤如下:

head.py文件:
在这里插入图片描述
block.py文件:
在这里插入图片描述

修改完上面两个文件后,执行下面的代码,

model = YOLO("yolov8n.pt")
model.export(format="onnx",imgsz=320, half=True, opset=12, optimize=True)
  • 1
  • 2

这样,就把pt文件,转换成了onnx文件了。


onnx 转换为 ncnn

这里的方法有很多,博主直接用tc官方的onnx2ncnn.exe进行转换:
下载链接:
官方资源地址:

下载完成后,找到onnx2ncnn.exe文件,然后执行下面的指令,就可以得到两个文件,两个文件就是对应的ncnn资源文件:

onnx2ncnn.exe xxxx.onnx targetxx.param targetxx.bin
  • 1

接下来,就是部署到安卓端上面了。
参考链接:
https://github.com/FeiGeChuanShu/ncnn-android-yolov8/tree/main/ncnn-android-yolov8

在这里插入图片描述

下载这个ncnn-android-yolov8的项目,然后用androidstudio打开,编译的ndk为21。gradle7+,然后,对应的opencv和ncnn下载链接如下:
ncnn-20240410-apple-vulkan.zip
opencv

下载完成后,上面的文件,全部解药到安卓项目中的jni目录。

接下来,就是开始修改jni文件了。

修改点一

修改yolo.cpp中的输入输出名字
一般名字都是:
input–>images
output–>output0

在这里插入图片描述

修改点二

修改strings.xml文件,替换为你的模型名字,如下图:
在这里插入图片描述

修改点三

修改yolo8ncnn.cpp文件,模型名字,如下图(模型名字为fruit_best,所以这里的modeltypes[]就修改为对应的名字):
在这里插入图片描述

修改点四

修改yolo.cpp中的generate_proposals函数,分类数量,这个数量,一般都是对应你的模型数量,官方模型,在demo中的类型,是80个,所以这里一般不做修改。

完成上述步骤后,点击as进行run,就可以实现了。

总结

整体的思路,就是从官方下载一个已经训练好的模型,这里选用的Yolov8n.pt模型,然后修改head.py和block.py的源码,接着进行pt转换为onnx,然后再通过在线的网址,转换ncnn所需的模型文件xxx.param,xxx.bin。
接着下载安卓demo,把这两个文件替换。然后修改输入,输出的名字,以及模型的名字。配置好安卓的jni所需要的Opencv和ncnn所需的平台依赖。然后运行项目即可。

that’s all-----------------------------------------------------

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/929907
推荐阅读
相关标签
  

闽ICP备14008679号