爱收集资源网

惊喜!最新行人检测技术,速来下载体验

网络整理 2023-09-29 03:00

更多项目《行人检查(人体测量)》系列文章请参考:

行人检查(人体测量)1:人体检查数据集(含下载链接):行人检查(人体检查)2:YOLOv5实现人体检查(含人体检查数据集和训练代码):行人检查(人体检查)3:Android实现人体检查(含源码,可实时人体检查):行人检查(人体检查)4:C++实现人体检查(含源码,可实时人体检查):

#9:3:4:9:1:0:2:3:8:2:d:1:9:5:3:7:0:9:e:2:2:6:8:5:4:0:0:1:0:b:8:1#

如果须要进行人像分割,实现一键抠图疗效,请参考文章:《一键抠图Portrait Matting人像抠图 (C++和Android源码)》

#9:c:8:4:1:d:0:e:7:2:3:c:5:6:e:8:9:1:4:1:c:3:2:8:3:2:8:a:9:9:d:5#

#8:a:4:1:1:a:a:b:3:4:2:a:9:6:e:4:a:6:3:4:f:0:1:c:5:7:f:7:7:0:5:0#

#b:3:0:6:e:6:1:7:2:1:3:8:c:5:2:1:0:9:1:d:9:2:a:d:7:6:4:8:e:a:3:b#

2. 人体检查数据集说明

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

关于人体检查数据集使用说明和下载,详见另一篇博客说明:《行人检查(人体检查)1:人体检查数据集(含下载链接)》行人检查(人体检查)1:人体检查数据集(含下载链接)_AI吃大瓜的博客-CSDN博客

#7:8:9:4:7:b:d:d:c:2:b:e:2:8:7:1:d:c:e:d:1:4:6:1:b:2:f:4:9:2:8:5#

3. 基于YOLOv5的人体检查模型训练

官方YOLOv5给出了YOLOv5l,YOLOv5m,YOLOv5s等模型。考虑到手机端CPU/GPU性能比较弱鸡,直接布署yolov5s运行速率非常慢。所以本人在yolov5s基础上进行模型轻量化处理,即将yolov5s的模型的channels通道数全部都降低一半,并且模型输入由原先的640×640增加到416×416或则320×320,该轻量化的模型我称之为yolov5s05。轻量化后的模型yolov5s05比yolov5s估算量降低了16倍,参数量降低了7倍。

下面是yolov5s05和yolov5s的参数量和估算量对比:

模型

input-size

params(M)

GFLOPs

yolov5s

640×640

7.2

16.5

yolov5s05

416×416

1.7

1.8

yolov5s05

320×320

1.7

1.1

yolov5s05和yolov5s训练过程完全仍然,仅仅是配置文件不一样而已;碍于篇幅,本篇博客不在赘言,详细训练过程请参考:《行人检查(人体检查)2:YOLOv5实现人体检查(含人体检查数据集和训练代码)》

4.人体检查模型Android布署 (1) 将Pytorch模型转换ONNX模型

训练好yolov5s05或则yolov5s模型后,你须要将模型转换为ONNX模型,并使用onnx-simplifier简化网路结构

#d:7:c:b:1:f:d:b:2:0:d:5:c:b:e:e:4:2:c:c:e:e:3:0:1:a:7:1:4:7:c:2#

GitHub:

Install: pip3 install onnx-simplifier

(2) 将ONNX模型转换为TNN模型

目前CNN模型有多种布署方法,可以采用TNN,MNN,NCNN,以及TensorRT等布署工具,鄙人采用TNN进行Android端上布署:

TNN转换工具:

#8:2:6:e:e:a:5:f:8:9:6:e:9:d:3:3:e:2:c:1:2:4:4:2:c:f:3:7:c:5:a:4#

(3) Android端上布署模型

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

#d:8:e:6:e:2:0:c:d:3:6:5:4:d:3:5:0:7:e:a:a:2:4:2:c:9:d:9:e:7:e:1#

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

#5:0:5:8:2:f:7:1:6:0:0:3:4:6:d:a:7:5:d:d:0:d:9:9:e:5:f:f:4:d:5:3#

(4) 一些异常错误解决方式

官方YOLOv5: ONNX > CoreML > TFLite">GitHub - ultralytics/yolov5: YOLOv5 in PyTorch > ONNX > CoreML > TFLite

如果你是直接使用官方YOLOv5代码转换TNN模型,部署TNN时会出现这个错误Permute param got wrong size,这是因为TNN最多支持4个维度估算,而YOLOv5在输出时采用了5个维度。你须要更改model/yolo.py文件

#e:d:d:9:a:5:d:e:8:3:f:2:3:4:c:f:c:1:1:7:1:0:9:d:7:2:e:1:9:8:5:2#

export.py文件设置model.model[-1].export = True:

#6:f:a:2:1:4:2:4:c:f:1:4:5:e:3:7:5:3:f:3:d:f:b:e:d:3:f:b:4:2:7:5#

#a:4:a:1:1:d:9:b:d:1:d:0:4:b:6:6:d:e:c:7:0:b:8:c:a:9:7:f:d:b:3:0#

这个问题,大部分是模型参数设置错误,需要按照自己的模型,修改C++推理代码YOLOv5Param模型参数。

#c:d:c:3:2:0:8:d:b:1:e:f:1:a:d:9:8:0:8:d:4:5:d:d:c:7:9:c:9:8:0:8#

input_width和input_height是模型的输入大小;vector anchors须要对应上,注意Python版本的yolov5s的原始anchor是

#0:1:8:6:e:e:0:1:e:b:c:e:c:7:9:6:0:5:c:4:0:b:f:9:c:8:6:4:9:b:a:8#

而yolov5s05由于input size由原先640弄成320,anchor也须要做对应调整:

#1:9:c:7:1:6:c:e:a:4:b:9:e:8:a:8:e:5:4:7:8:5:4:c:d:f:1:4:d:9:d:f#

因此C++版本的yolov5s和yolov5s05的模型参数YOLOv5Param如下设置

#d:e:3:c:6:6:6:1:2:4:a:d:d:4:a:d:5:6:d:7:7:d:a:f:d:6:f:b:4:0:e:c#

参考解决方式:解决dlopen failed: library “libomp.so“ not found_PKing666666的博客-CSDN博客_dlopen failed

5. 人体检查疗效

【Android APP体验】

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

#e:3:b:b:b:6:1:a:e:c:b:3:3:8:5:c:a:d:8:5:1:8:4:c:e:8:c:1:c:6:4:c#

#3:7:6:7:1:1:1:6:4:7:6:6:6:c:5:1:6:7:b:4:6:2:d:4:9:b:9:6:4:e:4:2#

#7:f:9:1:6:8:b:f:d:e:e:4:a:5:6:f:6:4:0:7:a:3:2:a:0:a:c:8:0:0:d:6#

#d:7:c:7:2:9:9:7:9:8:0:f:2:f:6:a:a:5:e:c:0:e:7:4:8:5:3:4:9:0:b:7#

6.项目源码下载

【Android APP体验】

【项目源码下载】行人检查(人体检查)3:Android实现人体检查(含源码,可实时人体检查)

整套Android项目源码内容包含:

提供快速版yolov5s05人体检查模型,在普通手机可实时监测辨识,CPU(4线程)约30ms左右,GPU约25ms左右提供高精度版本yolov5s人体检查模型,CPU(4线程)约250ms左右,GPU约100ms左右Demo支持图片,视频,摄像头测试所有依赖库都早已配置好,可直接build运行,若运行出现掉帧,请参考dlopen failed: library “libomp.so“ not found解决。

更多项目《行人检查(人体检查)》系列文章请参考:

行人检查(人体检查)1:人体检查数据集(含下载链接):行人检查(人体检查)2:YOLOv5实现人体检查(含人体检查数据集和训练代码):行人检查(人体检查)3:Android实现人体检查(含源码,可实时人体检查):行人检查(人体检查)4:C++实现人体检查(含源码,可实时人体检查):

#9:3:4:9:1:0:2:3:8:2:d:1:9:5:3:7:0:9:e:2:2:6:8:5:4:0:0:1:0:b:8:1#

svm cnn 行人检测
相关文章