Android 导入ncnn-android-yolov8-seg : 实现人体识别和人像分割

这篇具有很好参考价值的文章主要介绍了Android 导入ncnn-android-yolov8-seg : 实现人体识别和人像分割。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

上篇文章我们在Android中使用OpenCV实现了人脸识别,这篇文章我们使用OpenCV+YOLOv8+NCNN 来实现人像分割的功能。

首先来看下效果,这里会识别出人体,并会用蓝色的框框出来,并会有标签标注识别出的物体是什么,概率是多少。
识别出的人像,会覆盖上一层粉红色,其实就是识别出了整个人体轮廓了。

yolov8 人像分割,音视频开发,android,yolov8,OpenCV,NCNN,人体识别,人像分割,人工智能

2. YOLOv8是什么

YOLOv8 是来自 Ultralytics2023年最新的基于 YOLO 的对象检测模型系列,提供了先进的性能。
要了解YOLOv8,就要先看一下YOLO (you only look once)的诞生历史,这部分具体详见 童心未泯的 YOLO 之父,Joseph Redmon 笑傲 CV 江湖记,这里就不过多介绍了,我们只需要知道,YOLO只需要浏览一次就可以识别出图中的物体的类别和位置,并且能够进行图像分割。

3. NCNN是什么

ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。 ncnn 从设计之初深刻考虑手机端的部署和使用。 无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。 基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行, 开发出人工智能 APP ,将 AI 带到你的指尖。 ncnn 目前已在腾讯多款应用中使用,如:QQ,Qzone,微信,天天 P 图等。

NCNN目前已经支持大部分的CNN网络,包括YOLO。这意味着YOLO算法可以集成到NCNN框架中,并在手机端进行高效执行。因此,NCNNYOLO可以相互结合使用,以实现更快速、更高效的目标检测。

4. OpenCV是什么

OpenCV是一个跨平台计算机视觉和机器学习软件库,它轻量级而且高效,由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。在本篇文章中,OpenCV主要是以图像转化与传递的作用引入的。

5. 运行ncnn-android-yolov8-seg

那么,怎么在Android中如何使用OpenCV+YOLOv8+NCNN呢 ?
首先,我们可以在Github上找到这个库 : Digital2Slave/ncnn-android-yolov8-seg,内部已经使用OpenCV+YOLOv8+NCNN,来实现人像分割功能了,这里我们可以来导入这个项目,运行一下看下效果。

5.1 导入ncnn-android-yolov8-seg

我们下载好Digital2Slave/ncnn-android-yolov8-seg的代码后,使用Android Studio 3.6导入项目。

这个时候,会提示报错

Caused by: java.lang.NullPointerException
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:787)
	at com.android.build.gradle.internal.ndk.NdkHandler.getPlatformVersion(NdkHandler.java:159)
	at com.android.build.gradle.internal.ndk.NdkHandler.supports64Bits(NdkHandler.java:332)
	at com.android.build.gradle.internal.ndk.NdkHandler.getSupportedAbis(NdkHandler.java:404)
	...

这是因为我们还没有配置NDK路径

5.2 配置CMake和NDK路径

local.properties添加如下代码

# 设置cmake路径,这里的路径要改成你的实际cmake路径
cmake.dir=C\:\\Developer\\Android_SDK\\cmake\\3.10.2.4988404
# 设置ndk路径,这里的路径要改成你的实际ndk路径
ndk.dir=C\:\\Developer\\Android_SDK\\ndk\\20.0.5594570

5.3 配置 NDK DANDROID_STL

appbuild.gradle中,externalNativeBuildcmake代码块中,可以添加如下代码

arguments "-DANDROID_STL=c++_shared"

总体代码如下

externalNativeBuild {
    cmake {
        cppFlags "-std=c++11 -frtti -fexceptions"
        abiFilters 'arm64-v8a'
        arguments "-DANDROID_STL=c++_shared"
    }
}   

5.4 解决报错 unknown argument

我们再同步一下项目,可以发现报如下错误,使用ndk16ndk20都会出现这个报错。

Execution failed for task ':app:externalNativeBuildDebug'.
> Build command failed.
  Error while executing process C:\Developer\Android_SDK\cmake\3.10.2.4988404\bin\cmake.exe with arguments {--build E:\WorkSpace\Demo\Tnn\New\ncnn-android-yolov8-seg\app\.externalNativeBuild\cmake\debug\arm64-v8a --target yolov8ncnn}
...
clang++.exe: error: unknown argument: '-static-openmp'
ninja: build stopped: subcommand failed.
5.4.1 解决方式一

这里我们全局搜索-static-openmp,将其都删除。

yolov8 人像分割,音视频开发,android,yolov8,OpenCV,NCNN,人体识别,人像分割,人工智能

5.4.2 解决方式二

使用高版本的NDK,比如NDK 25.1.8937393

# 设置cmake路径,这里的路径要改成你的实际cmake路径
cmake.dir=C\:\\Developer\\Android_SDK\\cmake\\3.10.2.4988404
# 设置ndk路径,这里的路径要改成你的实际ndk路径
ndk.dir=C\:\\Developer\\Android_SDK\\ndk\\25.1.8937393
5.4.3 重新编译运行

接着重新编译一下 C++ Projects
yolov8 人像分割,音视频开发,android,yolov8,OpenCV,NCNN,人体识别,人像分割,人工智能
然后,点击运行,发现项目正常运行起来了。
yolov8 人像分割,音视频开发,android,yolov8,OpenCV,NCNN,人体识别,人像分割,人工智能

6. 接入OpenCV+YOLOv8+NCNN

然后我们可以在自己的项目中接入OpenCV+YOLOv8+NCNN了,但是看了下源码,我们可以发现ncnn-android-yolov8-seg这个项目里的相机是用的c/c++,但是在我们项目中,使用的Java层的Camera API来实现的API

yolov8 人像分割,音视频开发,android,yolov8,OpenCV,NCNN,人体识别,人像分割,人工智能

要想在自己项目里集成ncnn,那就需要把ncnn-android-yolov8-seg里的核心代码给抽离,然后对接到JavaCamera API中。

那需要怎么做呢 ?

下一篇文章来实现一下

详见 : Android 在自己的项目接入OpenCV+YOLOv8+NCNN,实现人像分割-CSDN博客文章来源地址https://www.toymoban.com/news/detail-765562.html

到了这里,关于Android 导入ncnn-android-yolov8-seg : 实现人体识别和人像分割的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Android Studio】【NCNN】YOLOV5安卓部署

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

    2024年02月20日
    浏览(93)
  • 使用Android studio,安卓手机编译安装yolov8部署ncnn,频繁出现编译错误

    从编译开始就开始出现错误,解决步骤: 1.降低graddle版本,7.2-bin  ---   降低为 6.1.1-all 2.仍旧有报错,jdk从17降为 jdk 13, 在setting配置里, 进入build,excution,deployment文件夹中,(是一个文件夹,名字长,不是三个) 进入build tools,再进入 Gradle,  如图所示, 勾选,选择

    2024年04月28日
    浏览(52)
  • YOLOv5-7.0-seg+YOLOv8-seg自定义数据集训练

    下载源码   https://github.com/ultralytics/yolov5.git 参考链接   yolov5-实例分割 1.如何使用yolov5实现实例分割,并训练自己的数据集_哔哩哔哩_bilibili 目录: - datasets     - JPEImages #存放图片和标注后的json文件以及转换后的txt文件     - classes-4 #存放切分好的数据集         - images    

    2024年02月01日
    浏览(62)
  • YOLOv5在android端实现目标检测+跟踪+越界识别并报警

    想要获取源码和相关资料说明的可以关注我的微信公众号: 雨中算法屋 , 后台回复 越界识别 即可获取,有问题也可以关注公众号加我微信联系我,相互交流学习。 算法功能: 判断划定的区域内,在某个时间内,是否有⼈体闯⼊,涉及到了⼈体检测+⼈体追踪+业务功能(区

    2023年04月12日
    浏览(49)
  • 【YOLOv8-Seg】实战二:LabVIEW+OpenVINO加速YOLOv8-seg实例分割

    ‍‍🏡博客主页: virobotics的CSDN博客:LabVIEW深度学习、人工智能博主 🎄所属专栏:『LabVIEW深度学习实战』 🍻上期文章: 【YOLOv8-seg】实战一:手把手教你使用YOLOv8实现实例分割 📰如觉得博主文章写的不错或对你有所帮助的话,还望大家多多支持呀! 欢迎大家✌关注、👍

    2024年02月13日
    浏览(57)
  • 舌头分割YOLOV8-SEG

    舌头分割,基于YOLOV8-SEG,训练得到PT模型,然后转换成ONNX,OPENCV的DNN调用,从而摆脱YOLO依赖,支持C++,PYTHON,ANDROID开发 舌头分割YOLOV8-SEG

    2024年04月28日
    浏览(35)
  • yolov8seg 瑞芯微RKNN部署

    首先是把yolov8的onnx模型转成rknn模型,这里用的是yolov8n-seg. 转模型代码如下,这段是python代码: 运行成功之后会得到yolov8n_seg.rknn模型。 往下是cpp代码。 运行rknn模型,不是零copy的话用这段代码。 零copy方法用这段代码。 下面来看下rknn模型运行结果outputs的结构。 具体这个结

    2024年02月13日
    浏览(45)
  • YOLOv7安卓部署 ncnn

    本文将讲述如何利用ncnn在安卓手机端部署YOLOv7,这里以YOLOv7-tiny为例进行讲解,YOLOv7按照步骤依次进行即可,同时对于Android Studio的安装不在本次教程之内 标准 YOLOv7-tiny 部署指的是没有更改 YOLOv7-tiny 的网络模型架构,直接利用训练好的模型权重进行部署,下面分几步进行讲

    2024年02月03日
    浏览(53)
  • Android Studio Electric Eel 2022.1.1 Patch 2 导入opencv 4.5,并实现图片灰度变换和图片叠加

    Android Studio Electric Eel 2022.1.1 Patch 2 https://sourceforge.net/projects/opencvlibrary/files/4.5.0/opencv-4.5.0-android-sdk.zip/download with API23: 导入opencv sdk: File-New-Import Module 添加工程依赖:File-Project Structure, sdk为opencv sdk. plugins { id ‘com.android.application’ version ‘7.4.2’ apply false id ‘com.android.library’

    2024年02月05日
    浏览(63)
  • Android studio导入Android源码(AOSP Android 14)

    1. 完整编译AOSP源码 有些java文件是在编译过程中动态生成的,需要完整编译一遍,源码的依赖才能完整。 2. 生成IDE导入的工程文件 执行完成后,在AOSP根目录下生成文件: 3. 导入前,编辑工程文件 (这步很重要,影响代码的加载速度和跳转) 编辑android.iml文件,需要修改2部

    2024年02月10日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包