赞
踩
关于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)
若存在编译问题,请下载对应的cmake插件,如下图,入口:tool–sdkmanager
博主把人脸检测的文件,命名为了face_detect,替换后,assets目录如下图:
把item替换为自己模型的名字
修改modeltypes变量为自己模型的名字,target_sizes为320,具体代码如下:
(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,具体代码如下:
完成上述步骤后,直接运行吧,按道理,可以实现检测了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。