YOLOv5 的 Android 部署,基于 tflite

环境

  • window 10 64bit

  • yolov5 v6.2

  • torch1.7.1+cuda101

  • tensorflow-gpu 2.9.1

前言

前文 借助NCNN,在Android上运行YOLOv5目标检测 和 在Android上进行yolov5目标检测,使用torchscript方式,我们分别使用了 ncnntorchscript 这2种方式将 YOLOv5 部署到了 android 手机上。本篇我们将使用另一种方式 tflite 来进行部署,所以,喜欢哪个就用哪个吧。

具体步骤

这里使用最新的 v6.2 版本代码,使用官方的 yolov5s.pt 模型。要使用自己的数据集,需要自己先行训练,训练步骤可以参考文末的链接。

模型转换过程还需要 tensorflow 的环境,安装一下

pip instal tensorflow-gpu

然后就可以使用 export.py 脚本进行转换了,命令如下

python export.py --weights yolov5s.pt --include tflite --img 416

参数 weights 指定 .pt 模型,--include 参数指定要转换的目标模型,--img 参数指定图片大小

可以看到,转换后的模型是 yolov5s-fp16.tflite,同时,在同层目录下,还有个文件夹 yolov5s_saved_model,里面包含了 .pb 文件,就是 protobuf 文件,这里有个细节,就是 .pt 文件是先被转换成 .pb,然后再转换成 .tflite 的。

接着,使用脚本 detect.py 来验证一下,用上面生成的 .tflite 模型

python detect.py --weights yolov5s-fp16.tflite --source data/images/bus.jpg --img 416

检测没有问题

09ba91d9d382aa2969b9883bbdabd15c.jpeg

有了模型文件,接下来就可以来到 android 端了,我把示例代码上传到了 github 上,可以直接 clone

git clone https://github.com/xugaoxiang/yolov5_android_tflite.git

需要替换的是 yolov5_android_tflite/app/src/main/assets 文件夹下的2个文件,class.txtyolov5s-fp16.tflite

编译后安装到手机,就可以开始进行基于摄像头的目标检测了

参考资料

  • 借助NCNN,在Android上运行YOLOv5目标检测

  • windows 10安装cuda和cudnn

  • YOLOv5模型训练

  • YOLOv5 5.0版本

  • Android studio gradle构建失败的解决方法

猜你喜欢

转载自blog.csdn.net/djstavaV/article/details/126737098