欢迎光临
我们一直在努力

人脸检测和行人检测4:Android实现YOLOv8 YOLO11 YOLO26人脸检测和人体检测(含源码,可实时检测)

人脸检测和行人检测4:Android实现YOLOv8 YOLO11 YOLO26人脸检测和人体检测(含源码,可实时检测)

目录

人脸检测和行人检测4:Android实现YOLOv8 YOLO11 YOLO26人脸检测和人体检测(含源码,可实时检测)

1. 前言

2. 人脸检测和行人检测数据集说明

3. 人脸检测和人体检测检测模型

(1)模型训练

(2)将Pytorch模型转换ONNX和MNN模型

4.人脸检测和行人检测模型Android部署​​

(1) Android端上部署模型

(2) 一些异常错误解决方法

5. 人脸检测和行人检测效果

6.项目源码下载


1. 前言

这是项目《人脸检测和行人检测》系列之《Android实现YOLOv8 YOLO11 YOLO26人脸检测和人体检测》;本篇主要分享将Python训练后的YOLOv8 YOLO11 YOLO26的人脸和行人(人体)检测模型移植到Android平台。我们将开发一个简易的、可实时运行的人脸人体(行人)检测Android Demo。

Android版本的人脸检测和行人检测,模型推理支持CPU和GPU加速,在GPU(OpenCL)加速下,可以达到实时的检测效果,CPU(4线程)约40ms左右,GPU约20ms左右 ,基本满足业务的性能需求。下表格给YOLOv8n / YOLO11n / YOLO26n计算量和参数量以及其人脸检测和行人检测精度:

模型 input-size params(M) GFLOPs mAP_0.5 mAP_0.5:0.95
YOLOv8n 416×416 3.15M 3.7 0.97046 0.79315
YOLO11n 416×416 2.62M 2.7 0.97001 0.79531
YOLO26n 416×416 2.41M 2.3 0.97002 0.79009

 先展示一下Android Demo人脸检测和行人(人体)检测的效果

    

 Android人脸和行人(人体)APP Demo体验:https://download.csdn.net/download/guyuealian/93441570

【尊重原创,转载请注明出处】https://blog.csdn.net/guyuealian/article/details/164629596


更多项目《人脸检测和行人检测》系列文章请参考:

  • 人脸检测和人体检测(行人检测)1:人脸检测和人体检测数据集(含下载链接)
  • 人脸检测和行人检测2:YOLOv8 YOLO11 YOLO26 实现人脸检测和行人检测(含数据集和训练代码)  https://blog.csdn.net/guyuealian/article/details/164620332
  • 人脸检测和行人检测3:C/C++实现YOLOv8 YOLO11 YOLO26 人脸检测和人体检测(含源码,可实时检测) https://blog.csdn.net/guyuealian/article/details/164629582
  • 人脸检测和行人检测4:Android实现YOLOv8 YOLO11 YOLO26人脸检测和人体检测(含源码,可实时检测) https://blog.csdn.net/guyuealian/article/details/164629596
  •  如果需要进行人像分割,实现一键抠图效果,请参考文章:《一键抠图Portrait Matting人像抠图 (C++和Android源码)》


    2. 人脸检测和行人检测数据集说明

    目前收集VOC,COCO和MPII数据集,总数据量约10W左右,可用于人体(行人)检测模型算法开发。这三个数据集都标注了人体检测框,但没有人脸框,考虑到很多项目业务需求,需要同时检测人脸和人体框;故已经将这三个数据都标注了person和face两个标签,以便深度学习目标检测模型训练。

    关于人脸人体检测数据集使用说明和下载,详见另一篇博客说明:请参考《人脸检测和人体检测(行人检测)1:人脸检测和人体检测数据集(含下载链接)》:人脸检测和人体检测(行人检测)1:人脸检测和人体检测数据集(含下载链接)


    3. 人脸检测和人体检测检测模型

    (1)模型训练

    人脸检测和人体检测训练过程,请参考:《人脸检测和行人检测2:YOLOv8 YOLO11 YOLO26 实现人脸检测和行人检测(含数据集和训练代码)》https://blog.csdn.net/guyuealian/article/details/164620332

    下表格给YOLOv8n / YOLO11n / YOLO26n计算量和参数量以及其人脸检测和行人检测精度:

    模型 input-size params(M) GFLOPs mAP_0.5 mAP_0.5:0.95
    YOLOv8n 416×416 3.15M 3.7 0.97046 0.79315
    YOLO11n 416×416 2.62M 2.7 0.97001 0.79531
    YOLO26n 416×416 2.41M 2.3 0.97002 0.79009

    (2)将Pytorch模型转换ONNX和MNN模型

    训练好模型后,你需要将Pytorch模型转换为ONNX和MNN模型,转换脚本工具export.py:

    需要安装依赖库: pip install onnx onnxsim onnxruntime mnn  

    # -*- coding: utf-8 -*-
    import os
    import argparse
    import numpy as np
    from ultralytics import YOLO

    def export_model(weights, format="mnn", imgsz=640, dynamic=False, half=False, int8=False):
    """
    https://docs.ultralytics.com/modes/export/
    :param format: onnx,ncnn,mnn,rknn
    :return:
    """
    model = YOLO(weights)
    kwargs = {"dynamic": dynamic, "half": half, "int8": int8, "name": "", "imgsz": imgsz}
    if format in ['mnn', 'rknn']: kwargs["dynamic"] = False # argument 'dynamic' is not supported for format='mnn'
    if format in ['rknn']:
    file = model.model_name
    dirn, name = os.path.dirname(file), os.path.basename(file).split('.')[0]
    os.makedirs(os.path.join(f"{name}_rknn_model", dirn), exist_ok=True) # 创建rknn模型目录
    # TODO RKNN默认float16,所以half=False,可支持int8,但validate_args会报错,需要修改源码不检查
    kwargs.update(half=False, int8=True, name="rk3588", source="./images.txt")
    print("export format :{}, kwargs:{}".format(format, kwargs))
    file = model.export(format=format, simplify=True, opset=15, **kwargs)
    print("export file :{}".format(file))
    return file

    def parse_opt():
    # weights = "data/model/pretrained/yolov8n.pt"
    weights = "data/model/pretrained/yolo11n.pt"
    # weights = "data/model/pretrained/yolo26n.pt"
    parser = argparse.ArgumentParser()
    parser.add_argument('–weights', type=str, default=weights, help='model file')
    parser.add_argument('–imgsz', type=int, default=416, help='input image size')
    parser.add_argument('–format', type=str, default="onnx", help='save result image')
    opt = parser.parse_args()
    return opt

    if __name__ == "__main__":
    """
    python libs/export.py –weights "data/model/pretrained/yolo11n.pt" –imgsz 416 –format onnx
    """
    opt = parse_opt()
    export_model(opt.weights, format=opt.format, imgsz=opt.imgsz)

    在终端运行执行命令,转换ONNX和MNN模型

    # TODO 转换为onnx模型
    python libs/export.py –weights "data/model/pretrained/yolo11n.pt" –imgsz 416 –format onnx

    # TODO 转换为mnn模型
    python libs/export.py –weights "data/model/pretrained/yolo11n.pt" –imgsz 416 –format mnn


    4.人脸检测和行人检测模型Android部署​​

    (1) Android端上部署模型

    项目实现了Android版本的人脸检测和行人检测Demo,部署框架采用MNN,支持多线程CPU和GPU加速推理,在普通手机上可以实时处理。Android源码核心算法部分均采用C++实现,上层通过JNI接口调用

    package com.cv.dl.model;

    import android.graphics.Bitmap;

    public class Detector {

    static {
    System.loadLibrary("cvdl-lib");
    }

    /***
    * 初始化检测模型
    * @param root:模型文件的根目录,放在assets文件夹下
    * @param det_model: 检测模型
    * @param rec_model: 识别模型(可选)
    * @param model_type:模型类型
    * @param num_thread:开启线程数
    * @param useGPU:是否开启GPU进行加速
    */
    public static native void init(String root, String det_model, String rec_model, int model_type, int num_thread, boolean useGPU);

    /***
    * 进行检测(用于静态图)
    * @param bitmap 图像(bitmap),ARGB_8888格式
    * @param score_thresh:置信度阈值
    * @param iou_thresh: IOU阈值
    * @return
    */
    public static native FrameInfo[] detect(Bitmap bitmap, float score_thresh, float iou_thresh);

    }

    如果你想在这个Android Demo部署你自己训练的YOLO模型,你可将训练好的Pytorch模型转换成TNN模型,然后把TNN模型代替你模型即可。

    (2) 一些异常错误解决方法

    项目开发常见的问题,请参考:Android项目常见问题解决办法


    5. 人脸检测和行人检测效果

     【Android APP体验】https://download.csdn.net/download/guyuealian/93441570

    APP在普通Android手机上可以达到实时的人脸检测和行人检测效果,CPU(4线程)约30ms左右,GPU约25ms左右 ,基本满足业务的性能需求。

         


    6.项目源码下载

     【Android APP体验】https://download.csdn.net/download/guyuealian/93441570

    如需下载项目源码,请关注【AI吃大瓜】,回复【人脸检测和人体检测】即可下载

    Android项目源码内容包含:

  • 提供YOLOv8n / YOLO11n / YOLO26n版本的人脸检测和人体检测模型(MNN),
  • Android Demo源码支持CPU和GPU运行,CPU(4线程)YOLO26n 约40ms左右,GPU OpenCL约20ms左右
  • Android Demo支持图片,视频,摄像头测试
  • OpenCV+base-utils+MNN所有依赖库都已经配置好,可直接build构建APP运行
  • 赞(0)
    未经允许不得转载:171主机测评 » 人脸检测和行人检测4:Android实现YOLOv8 YOLO11 YOLO26人脸检测和人体检测(含源码,可实时检测)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址