轻量化的yolov8部署到安卓Android手机端

这篇具有很好参考价值的文章主要介绍了轻量化的yolov8部署到安卓Android手机端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、pytorch环境配置和yolov8源码安装

首先在电脑上需要配置好pytorch环境,和yolov8源码的下载

然后针对yolov8做自己的轻量化改进

二、下载Android Studio和ncnn-android-yolov8

1. Android Studio官网链接:

下载 Android Studio 和应用工具 - Android 开发者  |  Android Developers

自行配置AS环境和JDK

我参考了下面这两个:

Android Studio 安装配置教程 - Windows(详细版)-CSDN博客Android Studio 开发环境快速搭建(超详细)_配置android 开发环境-CSDN博客

 Android Studio 安装配置教程 - Windows(详细版)-CSDN博客
(1)JDK下载:

官网站:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

同意协议后,下载相应版本的JDK轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

   

(2)配置JDK及JAVA的环境

打开系统环境

打开计算机的属性/高级设置/环境变量/,   

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

配置JAVA_HOME:

变量名:JAVA_HOME
变量值:JDK安装目录(复制jdk的路径,也就是我们前面安装JDK时设置的路径)

具体见那个链接

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

(3)安装cmake

注意安装的是cmake3.10版本。

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

   手机安卓版本选择相应的安卓版本,我的是荣耀70,直接下载sdk,对应的是安卓14。

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

(4)出现的问题:

老项目导入可能遇到的问题 Unsupported Java. 
Your build is currently configured to use Java 17.0.7 and Gradle 5.4.1.

原本这个项目执行不是Java17,本地使用了更高的Java版本,因此同步需要更新gradle。

当然,可以更新gradle,但,这意味着后面有很多需要跟着改的问题。但是只是想运行下项目看下效果,结果还要改一通内容,最终很可能还不知道能否跑起来。

于是,根据条件,可以进行一下操作。

解决方案
可以设置较低的Java版本,以此来迎合Gradle 5.4.1。

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android
——>File——>Project Structure——>SDK location——>Gradle Setting——>Gradle SDK——>选择个1.8的版本下载并运行吧。
轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

或者直接在第四部分后面修改build.gradle

安装之后在android studio\bin\studio64.exe打开

2. 下载ncnn-android-yolov8项目:

https://github.com/FeiGeChuanShu/ncnn-android-yolov8 

3. 下载opencv-mobile和ncnn-android-vulkan 
  • opencv-mobile:https://github.com/nihui/opencv-mobile
  • ncnn-android-vulkan:Releases · Tencent/ncnn · GitHub

将上面下载好的两个压缩包解压后放入该位置:ncnn-android-yolov8\app\src\main\jni\ 下

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

4.配置CMakeLists.txt文件
位置:ncnn-android-yolov8\app\src\main\jni\ ,

利用Android Studio打开CMakeLists.txt.,然后把下面的路径更改为自己下载的:

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

三、将自定义的数据集和改进后的模型windows训练好的pt文件转为onnx文件

具体在Ultralytics/demo.py 代码里面也有体现

# 将模型导出为 ONNX 格式

from ultralytics import YOLO

model = YOLO("best.pt")

success = model.export(format="onnx", simplify=True, opset=12)   

注意:

在安卓端使用demo项目在转换前需要对项目源码作出一些修改,修改具体见下面步骤。

待修改的内容在ncnn-android-yolov8-main/doc/中有显示,如使用检测任务则修改c2f.jpg和Detect.jpg两张图片上的内容。

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

也即在windows把ultralytics项目中的下列函数修改为:

文件路径:ultralytics/ultralytics/nn/modules/block.py

class C2f(nn.Module): 
    # ...
    def forward(self, x):
        # 全部替换为
        x = self.cv1(x)
        x = [x, x[:, self.c:, ...]]
        x.extend(m(x[-1]) for m in self.m)
        x.pop(1)
        return self.cv2(torch.cat(x, 1))

文件路径:ultralytics/ultralytics/nn/modules/head.py

class Detect(nn.Module):
    # ...
    def forward(self, x):
        """Concatenates and returns predicted bounding boxes and class probabilities."""
        shape = x[0].shape  # BCHW
        for i in range(self.nl):
            x[i] = torch.cat((self.cv2[i](x[i]), self.cv3[i](x[i])), 1)
        if self.training:
            return x
        elif self.dynamic or self.shape != shape:
            self.anchors, self.strides = (x.transpose(0, 1) for x in make_anchors(x, self.stride, 0.5))
            self.shape = shape
        # 中间部分注释掉,return语句替换为
        return torch.cat([xi.view(shape[0], self.no, -1) for xi in x], 2).permute(0, 2, 1)

!记得保留原本的代码,这两处修改仅在格式转换时进行,如果想要重新训练,需要使用原本的代码。修改完成再执行模型格式转换的代码。

得到的文件类型为onnx格式,还需进一步转换为ncnn格式。使用一键转换 Caffe, ONNX, TensorFlow 到 NCNN, MNN, Tengine 即可

转换后会得到两个文件,分别以bin和param做后缀。使用yolov8模型已不再需要对param文件修改。两个文件即最终集成到android端的模型文件,

放到\ncnn-android-yolov8-main\ncnn-android-yolov8\app\src\main\assets

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

四 准备部署Android Studio项目

demo项目解读:

yolo.cpp和yolo.h:负责加载模型,执行预测任务,返回数据结果。
ndkcamera.cpp和ndkcamera.h:负责摄像头相关以及实时绘制预测矩形框。
yolov8ncnn.cpp:JNI方法直接对应的C++文件,负责整合上述两部分。

目前修改的部分均在yolo.cpp和yolov8ncnn.cpp两个文件中,可以以实时摄像的方式使用模型。
 

1. 修改yolo.cpp文件

在ncnn-android-yolov8\app\src\main\jni\ 下,修改为你自己数据集的类别数量

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

修改调用的模型名格式 :

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

修改节点名称:

先查看自己onnx的节点名称,网站查看: https://netron.app/ 

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

修改文件,对应上图中的输入和输出的名称

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

修改为自己的类别名称:

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

2 修改strings.xml文件

增加item,添加移动端模型选择文件:

<item>bestXXX</item>

bestXXX是你训练出来的模型的名称

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

3 修改yolov8ncnn.cpp文件

对应修改如下:

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

上图红框中的名称要和你导出来的bin和param中的文件名称对应 ,有多个模型,可以多放几个

4.修改build.gradle

在build.gradle 修改依赖的gradle插件版本为7.2.0

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

在ncnn-android-yolov8-main\ncnn-android-yolov8\gradle\wrapper\gradle-wrapper.properties中:

修改使用的gradle版本为7.4-all版本。

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

重新sync项目

5.部署效果

找到Google USB Driver并下载,流程为点击File -> Settings ->Languages & Frameworks -> Android SDK -> SDK Tools -> Google USB Driver。

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

手机打开->开发者模式,开启USB调试权限,手机和电脑用USB连接,允许调试

通过USB将手机和电脑连接,然后选择传文件模式,不要选择仅充电。

这个时候Android Studio的设备选择器中一般就有了已经连接的手机。

注意荣耀和华为手机在usb配置选“以太网”,这个搞了我还几天都搞不出来

轻量化的yolov8部署到安卓Android手机端,javascript,YOLO,android

运行Android Studio项目到手机上

另外app默认先打开的是前置摄像头,通过分析代码,可以知道,将MainActivity.java的40的facing的初始值从0改成1可以让app默认先打开后置摄像头。文章来源地址https://www.toymoban.com/news/detail-803992.html

到了这里,关于轻量化的yolov8部署到安卓Android手机端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • YOLOV8安卓端部署

    之前部署的yolov5-ncnn不支持调用本地摄像头进行在线推理,多少还是感觉遗憾。 说实话yolov8-ncnn的部署属实有点割韭菜的嫌疑,这篇博客教你从0部署yolov8到安卓手机。 01 OPENCV这里我下载的是最新的版本opencv-4.8.0-android-sdk.zip文件,下载好直接解压即可。 官网链接Releases - Open

    2024年04月09日
    浏览(37)
  • yolov5安卓(鸿蒙)手机部署

    本篇文章主要是针对yolov5s在安卓(鸿蒙)手机部署过程进行记录。 有关YOLOv5其他资料可以参考我以下文章进行学习: C++版tensorrt YOLOv5推理 如何通过YAML文件修改YOLOv5网络 YOLOv5通道剪枝 YOLOv5图像分割代码详解1 YOLOv5图像分割之NMS YOLOv5+霍夫变换之车道线检测 YOLOv5损失函数详解

    2024年02月09日
    浏览(39)
  • 在 Android 上部署自定义 YOLOv8 教程

    在本教程中,我将向您展示如何在 Android 设备上使用自定义数据集部署 YOLOv8。想要了解如何在 Android 设备上使用您自己的数据集部署 YOLOv8?本文将展示如何操作。 Android 上的 自定义 YOLOv8  🔥 ⚡️ 结果显示 标题 对从 GoPro 流式传输到移动设备的运动镜头使用 YOLOv8 对象检测

    2024年02月20日
    浏览(24)
  • 如何从轻量化角度改进YOLOv8?

    随着计算机视觉技术的发展,目标检测一直是计算机视觉领域中的热门话题。而YOLO(You Only Look Once)作为一种基于神经网络的目标检测算法,在检测速度和准确率方面都有很好的表现。然而,在实际应用中,YOLO还存在着一些问题,例如它的模型比较大,需要较高的计算资源

    2024年02月04日
    浏览(39)
  • 【Android Studio】【NCNN】YOLOV5安卓部署

    坑非常多,兄弟们,我已经踩了三天的坑了,我这里部署了官方的yolov5s和我自己训练的yolov5n的模型 下载Android Studio,配置安卓开发环境,这个过程比较漫长。 安装cmake,注意安装的是cmake3.10版本。 根据手机安卓版本选择相应的安卓版本,我的是红米K30Pro,安卓12。 使用腾讯

    2024年02月20日
    浏览(92)
  • 优化+量化,让你的YOLOv8获得1000+ FPS性能

    YOLO家族又添新成员了!作为目标检测领域著名的模型家族,you only look once (YOLO) 推 出新模型的速度可谓是越来越快。就在刚刚过去的1月份,YOLO又推出了最新的YOLOv8模型,其模型结构和架构上的创新以及所提供的性能提升,使得它刚刚面世,就获得了广大开发者的关注。 YO

    2024年02月05日
    浏览(52)
  • YOLOv8优化策略:轻量化改进 | MobileNetV3,轻量级骨架首选

     🚀🚀🚀 本文改进:MobileNetV3的创新点包括:使用自适应瓶颈宽度、借鉴SENet中的Squeeze-and-Excitation机制、引入h-swish激活函数等。  🚀🚀🚀YOLOv8改进专栏: 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 论文:https://arxiv.org/pdf/1905.02244.pdf  MobileNetV1、V2、V3都是G

    2024年01月24日
    浏览(68)
  • YOLOv8轻量化:MobileNetV3,理想的轻量级骨架选择 - 计算机视觉

    YOLOv8是一种广泛应用于目标检测任务的深度学习模型。为了在计算资源受限的环境下实现高效的目标检测,使用轻量级骨架是至关重要的。在这方面,MobileNetV3是一个出色的选择,它具有较少的参数和计算复杂度,同时保持了较高的准确性和速度。 MobileNetV3是Google提出的一种

    2024年03月16日
    浏览(77)
  • 通过Android Studio 将yolov5部署到手机端(2023新手最新适用版)

    下载java17 Java Downloads | Oracle 配置环境变量 这个是我安装后的路径,将这个路径复制 设置环境变量 在系统变量点击新建 继续新建 继续新建 新建完成后点击确定 测试Java17 安装成功!!!! Android Studio 下载 下载链接:Download Android Studio App Tools - Android Developers (google.cn) 当前版

    2024年02月08日
    浏览(50)
  • YOLOv8改进 | Conv篇 | 利用YOLO-MS的MSBlock轻量化网络结构(既轻量又长点)

    本文给大家带来的改进机制是利用 YOLO-MS 提出的一种针对于实时目标检测的 MSBlock 模块 (其其实不能算是Conv但是其应该是一整个模块) , 我们将其用于C2f中组合出一种新的结构,来替换我们网络中的模块可以达到一种轻量化的作用,我将其用于我的数据集上实验,包括多个类

    2024年02月01日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包