在 Android 上部署自定义 YOLOv8 教程

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

在本教程中,我将向您展示如何在 Android 设备上使用自定义数据集部署 YOLOv8。想要了解如何在 Android 设备上使用您自己的数据集部署 YOLOv8?本文将展示如何操作。

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习
Android 上的 自定义 YOLOv8 🔥 ⚡️ 结果显示标题

对从 GoPro 流式传输到移动设备的运动镜头使用 YOLOv8 对象检测可以提供有关场景中对象的宝贵信息,包括位置和类型。这在捕捉远足路线的镜头时特别有用,有助于识别潜在的障碍物或危险以及感兴趣的物体。

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习
YOLOv8🔥 参加雪地自行车比赛🚴❄️🌨🧊

在需要快速准确的物体检测的情况下,手机上的 YOLOv8 应用程序必不可少。 YOLOv8是一种基于深度学习的物体检测模型,可以快速准确地检测图像或视频中的物体,并且可以在移动设备上随时随地使用。

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习
MotoGP 中的 YOLOv8🔥 🏍️🏰标题

为了在 Android 设备上部署带有自定义数据集的 YOLOv8,我们需要训练模型,将其转换为 TensorFlow Lite 或 ONNX 等格式,并将其包含在应用程序的资源文件夹中。然后,使用Android Studio创建项目、添加依赖、加载和解析模型、加载图像数据。执行模型推理,解析输出,并在图像上绘制边界框以显示检测到的对象。最后,在 Android 设备上安装并运行该应用程序。然而,优化移动设备的模型并解决压缩和加速等性能问题对于实际应用非常重要。

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

🔥第 0 步——理解 ncnn 的终极指南

ncnn是一款专为手机优化的开源高性能神经网络前向计算框架。从设计之初,ncnn就深入考虑了移动端的部署和使用,无第三方依赖,跨平台,且移动端的CPU速度比所有已知的开源框架都要快。基于此ncnn,开发者可以轻松地将深度学习算法移植到手机上高效执行,开发人工智能APP,让AI触手可及。

步骤 1 — 使用自定义数据集训练 YOLOv8
  • 克隆 Git 存储库并安装 YOLOv8
  • 使用预训练权重进行推理
  • 数据准备和格式转换
  • 运行训练过程
  • 将权重转换为 ONNX 格式
  • 将权重转换为 NCNN 格式

步骤2 — 在 Android Studio 上构建并运行

  • 下载 ncnn-android-yolov8
  • 下载ncnn
  • 下载 opencv-mobile
  • 使用 Android Studio 打开 ncnn-android-yolov8
  • 将 NCNN 格式权重放入文件夹中
  • 修改yolo.cpp

🔥第 1 步 —使用自定义数据集训练 YOLOv8

⭐克隆 Git 存储库并安装 YOLOv8

YOLOv8 发布了一个名为 的软件包ultralytics,可以使用下面提到的命令安装它。

$ mkdir yolov8
$ cd yolov8
$ git clone https://github.com/ultralytics/ultralytics
$ pip install -qe ultralytics
$ cd ultralytics
⭐使用预先训练的权重进行推理

要使用 YOLOv8 的预训练权重对所选视频或图像执行对象检测,可以在终端中执行下面提供的命令。

# image
$ yolo task=detect mode=predict model=yolov8m.pt source="XXX.png"


# video
$ yolo task=detect mode=predict model=yolov8m.pt source="XXX.mp4"

如果执行成功,结果将保存在文件夹中YOLOv8/ultralytics/runs/detect/exp/

⭐数据​​准备和格式转换

访问 Kaggle 并下载微控制器检测数据集。

要创建一个名为 的文本文件chip.yaml并将其放置在文件夹中YOLOv8/ultralytics/,请使用以下命令并将所需的内容添加到该文件中。

train: ../datasets/images/train/
val:   ../datasets/images/test/
# number of classes
nc: 4
# class names
names: ['Arduino Nano', 'ESP8266', 'Raspberry Pi 3', 'Heltec ESP32 Lora']

训练期间的数据结构如下表所示。

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

将文件夹下的.xml移动Microcontroller Detection/images/train/到文件夹中Microcontroller Detection/images/train_xml/

将文件夹下的.xml移动Microcontroller Detection/images/test/到文件夹中Microcontroller Detection/images/test_xml/

将文件夹上传Microcontroller Detection/images/train/到文件夹中YOLOv8/datasets/images/

将文件夹上传Microcontroller Detection/images/test/到文件夹中YOLOv8/datasets/images/

要使用该数据集训练 YOLOv8 目标检测模型,需要将格式从 .xml 转换为 .txt。

$ cd ..
$ git clone  https://github.com/Isabek/XmlToTxt
$ cd XmlToTxt
$ pip install -r requirements.txt

YOLOv8/XmlToTxt/classes.txt根据您的自定义数据集进行修改。

Arduino_Nano 
ESP8266 
Raspberry_Pi_3 
Heltec_ESP32_Lora

将文件夹上传Microcontroller Detection/images/train_xml/到文件夹中YOLOv8/XmlToTxt/

将文件夹上传Microcontroller Detection/images/test_xml/到文件夹中YOLOv8/XmlToTxt/

要将文件从 .xml 格式转换为 .txt 格式,请在终端中运行以下命令。

# 记得将classes.txt中的文本更改为您自己的类别
# 将要转换的xml文件放入xml文件夹中
$ python xmltotxt.py -xml train_xml -out train 
$ python xmltotxt.py -xml test_xml -out test

将文件夹移动YOLOv8/XmlToTxt/train/YOLOv8/datasets/labels/.

将文件夹移动YOLOv8/XmlToTxt/test/YOLOv8/datasets/labels/.

⭐运行训练过程

现在一切都已设置完毕,是时候运行训练过程了。

$ yolo task=detect \
       mode=train \
       model=yolov8n.pt \
       data=./chip.yaml \
       epochs=30 \30 \
       imgsz=416

训练过程的持续时间可能会因硬件配置而异,可能需要几分钟甚至更长的时间。当训练过程运行时,输出日志将显示类似于以下内容的消息。

0/9        0G    0.1184    0.0347   0.03127        47       640:   4%|▎         | 3/85 [01:08<30:00, 21.95s/it]

完成训练过程后,生成的模型ultralytics/runs/train/exp/weights/best.pt现在可以进行预测了!

$ yolo task=detect \
       mode=predict \
       model=/runs/train/exp/weights/best.pt \
       conf=0.25 \
       source='XXX.jpg'
⭐将权重转换为 ONNX 格式

修改ultralytics/ultralytics/nn/modules.py如下内容。

class C2f(nn.Module):
    # CSP Bottleneck with 2 convolutions
    def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5):  # ch_in, ch_out, number, shortcut, groups, expansion
        super().__init__()
        self.c = int(c2 * e)  # hidden channels
        self.cv1 = Conv(c1, 2 * self.c, 1, 1)
        self.cv2 = Conv((2 + n) * self.c, c2, 1)  # optional act=FReLU(c2)
        self.m = nn.ModuleList(Bottleneck(self.c, self.c, shortcut, g, k=((3, 3), (3, 3)), e=1.0) for _ in range(n))

    def forward(self, x):
        # y = list(self.cv1(x).split((self.c, self.c), 1))
        # y.extend(m(y[-1]) for m in self.m)
        # return self.cv2(torch.cat(y, 1))

        print("ook")
        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))
def forward(self, x):
        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
        
        # box, cls = torch.cat([xi.view(shape[0], self.no, -1) for xi in x], 2).split((self.reg_max * 4, self.nc), 1)
        # dbox = dist2bbox(self.dfl(box), self.anchors.unsqueeze(0), xywh=True, dim=1) * self.strides
        # y = torch.cat((dbox, cls.sigmoid()), 1)
        # return y if self.export else (y, x)

        print("ook")
        return torch.cat([xi.view(shape[0], self.no, -1) for xi in x], 2).permute(0, 2, 1)

以下命令用于将best.pt格式中的权重转换为 ONNX 格式,并将结果文件保存为best.onnx.

$yolo task=detect mode=export model=runs/detect/train4/weights/best.pt 
format=onnx simplify=True opset=13 imgsz=416

🔥第 2 步 — 在 Android Studio 上构建并运行

下载 ncnn-android-yolo v8

下载ncnn-android-yolov8到您的桌面

⭐下载ncnn

下载ncnn-YYYYMMDD-android-vulkan.zip

提取ncnn-YYYYMMDD-android-vulkan.zipapp/src/main/jni/

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

ncnn_DIR路径更改为您的路径app/src/main/jni/CMakeLists.txt

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

⭐下载opencv-mobile

下载opencv-mobile-XYZ-android.zip

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

提取opencv-mobile-XYZ-android.zipapp/src/main/jni/

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

更改OpenCV_DIR路径在app/src/main/jni/CMakeLists.txt

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

⭐使用Android Studio打开ncnn-android-yolov8

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

💡 如果构建过程中出现问题,应该是SDK Tools中NDK和CMake的兼容性问题。修改方法如下

👉ctrl +alt +s打开设置,安装21.3.6528147版本NDK

👉 安装3.10.2.4988404版本CMake

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

👉 添加CMake路径local.properties

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

Sync project with Gradle Files👉 按右上角的按钮。

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

⭐将 NCNN 格式权重放入文件夹中

放置best.binbest.param放入文件夹中app\src\main\assets\

⭐修改yolo.cpp

根据您的自定义数据集修改app\src\main\jni\yolo.cpp's 。num_class

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

根据您的自定义数据集修改app\src\main\jni\yolo.cpp's 。class_names

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

根据你的app\src\main\jni\yolo.cpp情况修改。layer_namebest.param

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

修改app\src\main\jni\yolo.cppweights name

在 Android 上部署自定义 YOLOv8 教程,YOLO,深度学习,python,机器学习

按RUN按钮,程序执行成功!文章来源地址https://www.toymoban.com/news/detail-830426.html

到了这里,关于在 Android 上部署自定义 YOLOv8 教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【YOLO】YOLOv8实操:环境配置/自定义数据集准备/模型训练/预测

    【YOLO】YOLOv8实操:环境配置/自定义数据集准备/模型训练/预测

    源码链接:https://github.com/ultralytics/ultralytics yolov8和yolov5是同一作者,相比yolov5,yolov8的集成性更好了,更加面向用户了 YOLO命令行界面(command line interface, CLI) 方便在各种任务和版本上训练、验证或推断模型。CLI不需要定制或代码,可以使用yolo命令从终端运行所有任务。 如果

    2023年04月24日
    浏览(12)
  • 【YOLO】Windows 下 YOLOv8 使用 TensorRT 进行模型加速部署

    【YOLO】Windows 下 YOLOv8 使用 TensorRT 进行模型加速部署

    本文全文参考文章为 win10下 yolov8 tensorrt模型加速部署【实战】 本文使用的代码仓库为 TensorRT-Alpha 注:其他 Yolov8 TensorRT 部署项目:YOLOv8 Tensorrt Python/C++部署教程 安装Visual Studio 2019或者Visual Studio 2022、Nvidia驱动 安装cuda,cudnn、opencv、tensorrt并进行相应的环境配置,这里不做配

    2024年02月11日
    浏览(13)
  • 【YOLO】基于YOLOv8实现自定义数据的自动标注(针对VOC格式的数据集)

    利用yolov8的检测模型实现数据集的自标注,针对VOC数据集,.xml文件,labelimg标注工具 yolov8模型的训练可以参考笔者的博客 【YOLO】YOLOv8实操:环境配置/自定义数据集准备/模型训练/预测 训练好自定义的模型,就可以执行下面的代码实现模型自标注数据集 修改下面三个参数即

    2024年02月11日
    浏览(15)
  • YOLOv8教程系列:二、为YOLO系列数据集添加背景图片,降低误识别率

    YOLOv8教程系列:二、为YOLO系列数据集添加背景图片,降低误识别率

    在自己的工作空间里新建一个create_xml.py的文件,将下述代码复制进去 新建一个保存xml的文件夹,将脚本的74行的JpgPath和XmlPath修改为自己的文件夹路径,这是我的background文件夹: 这是我运行成功的截图 这是新生成的xml文件 最后,将图片和xml都复制到对应的待训练文件夹中,

    2024年02月13日
    浏览(19)
  • 【yolov8】从0开始搭建部署YOLOv8,环境安装+推理+自定义数据集搭建与训练,一小时掌握

    bilibili详细视频教程 github链接:https://github.com/ultralytics/ultralytics git拉取项目: git clone https://github.com/ultralytics/ultralytics.git 首先查看pytorch支持的最高版本 PyTorch https://pytorch.org/ 然后查看N卡系统支持最高的版本 然后权衡下载支持最高版本的CUDA和cuDNN CUDA工具包 https://developer.n

    2024年01月17日
    浏览(17)
  • 轻量化的yolov8部署到安卓Android手机端

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

    一、pytorch环境配置和yolov8源码安装 首先在电脑上需要配置好pytorch环境,和yolov8源码的下载 然后针对yolov8做自己的轻量化改进 二、下载Android Studio和ncnn-android-yolov8 1. Android Studio官网链接: 下载 Android Studio 和应用工具 - Android 开发者  |  Android Developers 自行配置AS环境和JDK 我

    2024年01月19日
    浏览(12)
  • yolov8实战第六天——yolov8 TensorRT C++ 部署——(踩坑,平坑,保姆教程)

    yolov8实战第六天——yolov8 TensorRT C++ 部署——(踩坑,平坑,保姆教程)

    C++ 结合 TensorRT 部署深度学习模型有几个关键优势,这些优势在各种工业和商业应用中极其重要: 高效的性能 :TensorRT 通过优化深度学习模型来提高推理速度,减少延迟。这对于实时处理应用(如视频分析、机器人导航等)至关重要。 降低资源消耗 :TensorRT 优化了模型以在

    2024年04月13日
    浏览(42)
  • 深度学习||YOLO(You Only Look Once)深度学习的实时目标检测算法(YOLOv1~YOLOv5)

    目录 YOLOv1: YOLOv2: YOLOv3: YOLOv4: YOLOv5: 总结: YOLO(You Only Look Once)是一系列基于深度学习的实时目标检测算法。 自从2015年首次被提出以来,YOLO系列不断发展,推出了多个版本,包括YOLOv1, YOLOv2, YOLOv3, YOLOv4, 和YOLOv5等。下面是对YOLO系列的详解: 提出时间 : 2015年。 主要贡献 :

    2024年02月20日
    浏览(5)
  • 【深度学习目标检测】七、基于深度学习的火灾烟雾识别(python,目标检测,yolov8)

    【深度学习目标检测】七、基于深度学习的火灾烟雾识别(python,目标检测,yolov8)

    YOLOv8是一种物体检测算法,是YOLO系列算法的最新版本。 YOLO(You Only Look Once)是一种实时物体检测算法,其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化,提高了检测速度和准确性。 YOLOv8采用了Darknet-53作为其基础网络架构。Darknet-53是一

    2024年04月13日
    浏览(37)
  • AI模型部署 | onnxruntime部署YOLOv8分割模型详细教程

    AI模型部署 | onnxruntime部署YOLOv8分割模型详细教程

    本文首发于公众号【DeepDriving】,欢迎关注。 0. 引言 我之前写的文章《基于YOLOv8分割模型实现垃圾识别》介绍了如何使用 YOLOv8 分割模型来实现垃圾识别,主要是介绍如何用自定义的数据集来训练 YOLOv8 分割模型。那么训练好的模型该如何部署呢? YOLOv8 分割模型相比检测模型

    2024年04月24日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包