记录历经三天将自己的yolov5模型部署到Android安卓手机

打印 上一主题 下一主题

主题 1025|帖子 1025|积分 3075

将yolov5部署到安卓手机移动端
  
记录历经三天小白将自己的yolov5模型部署到安卓手机



一、前言

小白一枚,第一次在这上面记录总结,如有不合适的地方,木子接受批评,知错就改,善莫大焉。
直接先上参考文献:
参考视频
参考文章一and文章二

二、具体流程

(一).部署官方yolo到安卓

根据视频的流程,基本可以无障碍的将官方的yolov5训练模型部署到自己的安卓手机上。运行结果如下:

大体流程在视频中大哥已经讲的很好啦,我在这补充一下我踩到过的坑。
1.CMakeLists.txt文件修改

如果你是按照视频中的步骤来的,一定要把下面图中的蓝色部分(前后随便删一个斜杠)删掉!!!

2.sdk相关文件报错问题

有时候从网上下载的sdk包版本不同,里面的文件可能有差异,有的包会少东西,可以参考这篇文章
3.build.gradle文件

其实通过这几天查资料发现,很多运行as的报错问题都和这个gradle版本有关,可以参考一下这篇文章,如果不能解决,自己多搜一下有关gradle报错的文章,一般都是可以解决的,我目前的版本如下:

我遇到的基本问题就是这几个,大家可以看看什么报错多搜一搜总会解决的。
(二).转化自己模型

1.导出需要的onnx文件

本人电脑比较low,只能在谷歌免费的colab上跑模型,所以本小节代码是按照colab语法来的,大家在自己电脑里思路是一样的。
(1)在自己的yolov5环境里装onnx库包
  1. !pip install onnx coremltools onnx-simplifier
复制代码
(2)使用自带export.py进行转化(之前有的版本可能在model文件下)
执行命令前,修改成自己的weights和date文件及路径,我的如下:

执行export.py,然后会在自己的权重路径下生成一个onnx文件。
  1. !python export.py --train
复制代码
(3)对onnx文件进行压缩
  1. !python -m onnxsim best.onnx best-sim.onnx
复制代码
2.将onnx文件转化成param文件

我的转化过程是是在虚拟机Ubuntu上进行的。
相关步骤可以看一下参考文章一,我这里简单复述一下并补充一下文章中没有提到的细节记录一下自己踩过的坑。
(1)首先准备基础环境
  1. sudo apt install build-essential libopencv-dev cmake
复制代码
编译安装 protobuf 依赖库
  1. git clone https://github.com/protocolbuffers/protobuf.git
  2. cd protobuf
  3. git submodule update --init --recursive
  4. ./autogen.sh
  5. ./configure
  6. make
  7. make install
  8. sudo ldconfig
复制代码
成功之后是可以查看版本号的
  1. protoc --version
复制代码

(2)下面编译 ncnn,目的是生成 onnx 转 ncnn 的命令行工具
  1. git clone https://github.com/Tencent/ncnn.git
  2. cd ncnn
  3. git submodule update --init
  4. mkdir build
  5. cd build
  6. cmake ..
  7. make -j8
  8. make install
复制代码
(3)踩过的坑
像我这样的报错:

执行命令:
  1. sudo apt install autoconf automake
  2. sudo apt install libtool
复制代码
这样基本就能解决大部分的错了,基本就是缺啥补啥。
编译安装protobuf和ncnn时间会比较长,我在编译等待期间完成了学习强国的今日任务。
(4)编译完成后,把你的best-sim.onnx文件放在ncnn-master/build/tools/onnx文件夹下,如图:

cd 切换到ncnn-master/build/tools/onnx目录下进行操作
  1. ./onnx2ncnn best-sim.onnx yolov5s.param yolov5s.bin
复制代码
然后你会生成两个文件yolov5s.param和 yolov5s.bin,如图

到这里基本最难的转化过程就差不多了。
(三).部署自己模型到手机上

以下是自己摸索的在yolov5.6.1的版本上进行的,param文件不需要修改很多,没那么麻烦啦。
1.修改param文件

(1)将生成的yolov5s.bin、yolov5s.param文件放到assets文件夹下并替换原来的

(2)打开并编辑yolov5s.param文件
将Reshape 后面对应的0=6400、0=1600、0=400均修改为0=-1,如图


2.修改yolov5ncnn_jni.cpp文件

(1)将分类类别名与自己模型对应起来

(2)修改stride 16和32部分
将param文件中permute部分与stride部分中blob_name后面的数字对应起来


然后保存运行就可以啦
三.总结

先上图看效果

本来是想查资料把yolo部署到树莓派上,因为学校一直封校,树莓派还没拿到手,就好奇看到了部署到手机上,没想到花了三天时间成了!在这也非常感谢一位山西的网友大佬给我指点了迷津。
大家可以结合我推荐的视频和文章,取其精华、去其糟粕,得到自己想要的东西。大家一定要注意对自己借鉴的代码消化吸收,就好比马克思先生是国外的,但是马克思中国化后的思想却是我们中华民族的瑰宝。
green hand 一枚,第一次发文章,希望能在这个网站上跟大家多多学习,多多交流,互相进步,中华民族的复兴,必定有你也有我!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表