当前位置:   article > 正文

关于YOLO8学习(五)安卓部署ncnn模型--视频检测_yolov8转ncnn

yolov8转ncnn

在这里插入图片描述

教学视频地址

B站

前文

关于YOLO8学习(一)环境搭建,官方检测模型部署到手机
关于YOLO8学习(二)数据集收集,处理
关于YOLO8学习(三)训练自定义的数据集
关于YOLO8学习(四)模型转换为ncnn

简介

本文将会讲解:
(1)使用前文生成的ncnn模型,部署到安卓端,并且实现视频中,人脸的检测

效果图

在这里插入图片描述

开发环境

win10、python 3.11、cmake、pytorch2.0.1+cu117、pycharm、ultralytics==8.0.134
要特别注意,不要升级到python312,目前onnx还没支持到312,所以转换了,会导致转换模型失效。
对于上述环境如何配置,请看我之前的文章。
安卓:as4+,ndk21+,jdk11

开发过程

ncnn是腾讯出厂的一个端到端库,通过不同的模型,最终转换为ncnn可用的格式,然后进行部署。ncnn支持安卓,苹果。而且特别对cpu做了相关的优化,所以博主选择这个模型作为部署到端的方案。

前面的文章中,已经得到了一个ncnn模型文件了,接下来,博主将会手把手,示范如何把这个模型,部署到安卓端:

下载资源

相关环境:
opencv-4.8.1-android-sdk.zip
ncnn-20240410-android-vulkan.zip

feige的demo,具体链接如下:link

下载后,解压,进入到ncnn-android-yolov8目录
在这里插入图片描述
然后把上述的环境,解压,放到安卓项目中的jni目录,完成后的目录如下(这里博主把OpenCV重命名为了OpenCV-android-sdk):
在这里插入图片描述
然后修改CMakeLists.txt文件,代码如下:

project(yolov8ncnn)

cmake_minimum_required(VERSION 3.10)
#cmake_minimum_required(VERSION 3.4.1)

set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/OpenCV-android-sdk/sdk/native/jni)
find_package(OpenCV REQUIRED core imgproc)

set(ncnn_DIR ${CMAKE_SOURCE_DIR}/${ANDROID_ABI}/lib/cmake/ncnn)
find_package(ncnn REQUIRED)

add_library(yolov8ncnn SHARED yolov8ncnn.cpp yolo.cpp ndkcamera.cpp)

target_link_libraries(yolov8ncnn ncnn ${OpenCV_LIBS} camera2ndk mediandk)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

若存在编译问题,请下载对应的cmake插件,如下图,入口:tool–sdkmanager
在这里插入图片描述

完成上述步骤后,这个demo是大概率是可以跑通了,直接run试一下效果吧

接下来,将会介绍如何使用自己训练的ncnn模型,部署到这个demo中,实现人脸识别


一、替换自己的模型到assets下

博主把人脸检测的文件,命名为了face_detect,替换后,assets目录如下图:
在这里插入图片描述

二、修改strings.xml文件

在这里插入图片描述
把item替换为自己模型的名字

三、修改yolov8ncnn.cpp文件

修改modeltypes变量为自己模型的名字,target_sizes为320,具体代码如下:
在这里插入图片描述

四、修改yolo.cpp文件

(1)Yolo::load方法中,模型名字修改,代码如下图:
在这里插入图片描述
(2)Yolo::detect方法中,输入输出的名字修改。
可以使用onnx,通过网站link进行输入输出名字的查看。
具体修改代码内容如下:
在这里插入图片描述
这里修改了输入为images,输出为output0

(3)Yolo::draw方法中,修改class_names为你的类别名。这个模型中,只有一个类别,所以这里设置为face(其实这个名字可以随便起)对应好下标即可。因为模型输出的也是下标,后续通过查询这个class_names下标对应的名字,进行绘制的。对应代码如下图:
在这里插入图片描述

(4)修改yolo.cpp中的方法generate_proposals
修改num_class为你对应的类别数量,我们这里是一类,所以是1,具体代码如下:
在这里插入图片描述


完成上述步骤后,直接运行吧,按道理,可以实现检测了。

安卓demo源码:关注并回复 “yolo8检测安卓人脸demo”即可

在这里插入图片描述


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

闽ICP备14008679号