ART-PI 嵌入式人形检测 附源码(RT-AK Demo)
Person detection
文章目录
- 1 模型
- 1.1 参考项目
- 1.2 模型文件
- 1.3 自己训练模型
- 2 RT-AK 使用
- 3 应用代码
- 4. 参考链接
让 AI 在你的板子上尽情舞蹈~
本次实验的是识别摄像头中的人,就一个人,而不是多个。
从多类别检测模型改编而来,只保留 person 这个类别,根据各位看官的能力完全可以改成识别多类
本次项目的篇幅将会较长,请各位看官耐心看完
源码地址:Project4-Person_detection_RT-AK
整体分为三部分:
- 模型
- RT-AK 使用
- 板子上的应用层代码实现
硬件平台 ART-Pi, 50M FLOPS。
我的模型(删减后的模型)最终部署在板子上是推理时间是56ms,不包括数据处理时间。
- pc 端推理一张图片:
$ pip install -r requirements.txt
$ python inference_yolo-s.py
- 以下是在 ART-PI 上的模型推理实现:
我的模型数据:map 21.58%
Model | MACC | Inference | Size |
---|---|---|---|
yolo-s.tflite | 6.5 M | 50ms | 144k |
1 模型
1.1 参考项目
参考项目:
Yolo-Fastest https://github.com/dog-qiuqiu/Yolo-Fastest
keras-YOLOv3-model-set https://github.com/david8862/keras-YOLOv3-model-set
原因:目前了解的全网最轻量级的目标检测网络,没有之一
现在不是了,出现了一个 ppyolo,百度产
Network | Model Size | mAP(VOC 2017) | FLOPS |
---|---|---|---|
Tiny YOLOv2 | 60.5MB | 57.1% | 6.97BFlops |
Tiny YOLOv3 | 33.4MB | 58.4% | 5.52BFlops |
YOLO Nano | 4.0MB | 69.1% | 4.51Bflops |
MobileNetv2-SSD-Lite | 13.8MB | 68.6% | &Bflops |
MobileNetV2-YOLOv3 | 11.52MB | 70.20% | 2.02Bflos |
Pelee-SSD | 21.68MB | 70.09% | 2.40Bflos |
Yolo Fastest | 1.3MB | 61.02% | 0.23Bflops |
Yolo Fastest-XL | 3.5MB | 69.43% | 0.70Bflops |
MobileNetv2-Yolo-Lite | 8.0MB | 73.26% | 1.80Bflops |
当然,Yolo Fastest 最小的模型也有 0.23 Bflops,想要在 ART-Pi 上顺利的跑起来,肉眼可见的丝滑程度,我是在做梦。。。
这时候有两个办法:
- 换一块板子,换一块算力更大的板子。
- 将模型改的小一点,能够在 ART-PI 上丝滑的跑起来。
这里我选择的是后者。
我改动的很简单,去掉特征金字塔输出,只保留一个输出,保证对大物体检测友好即可。同时删减网络结构。原来是109层,我是20+层网络结构。
纠正一个思想误区,由于一些很神奇的存在,网络并不是越深,FLOPS
就会越大,比如 DSCNN
。
第二个参考项目的意义是在于:将模型转变为 tflite
可食用模型
1.2 模型文件
我改动的模型配置文件:
./model/yolo-s_with_lrelu.cfg
原模型配置文件:
./model/VOC
为了防止在后期模型转换的过程中遇到不支持的算子:
leakyrelu
,我这里提供了一份relu
的模型训练配置文件预先训练好的模型:
./model/yolo-s.h5
507 k,量化的tflite
模型文件:./model/yolo-s.tflite
144 k
1.3 自己训练模型
请参考:dog-qiuqiu/Yolo-Fastest 项目
我自己也写过一份 快速上手 yolo-fastest 教程:
https://blog.csdn.net/weixin_37598106/article/details/112544854?spm=1001.2014.3001.5501
但是由于 up 主更新的比较快,可能有一些版本落后,仅供参考。
需要配置
darknet
训练环境,然后根据需求修改下cfg
文件即可准备数据集:
VOC 2007 + VOC 2012
wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar tar xf VOCtrainval_11-May-2012.tar tar xf VOCtrainval_06-Nov-2007.tar tar xf VOCtest_06-Nov-2007.tarwget https://pjreddie.com/media/files/voc_label.py # 修改文件,将里面的类别只保留 person 类别 python voc_label.pycat 2007_train.txt 2007_val.txt 2012_*.txt > train.txt
修改 ./model/voc_person.data
中的 train
和 valid
路径,注意,如果你不是训练 person
单类别,请一并修改 voc_person.names
文件
训练
$ ./darknet detector train <data_path> <cfg_path> # 举例, -dont_show 是不显示图片, -gpus 是指定 gpu 训练 $ ./darknet detector train voc_person.data yolo-s.cfg -dont_show -gpus 0, 1
测试
perons.jpg
位于./imgs
# test 1 image ./darknet detector test voc_person.data yolo-s.cfg yolo-s_last.weights person.jpg -thresh 0.5 -dont_show# mAP ./darknet detector map voc_person.data yolo-s.cfg yolo-s_last.weights -points 11
模型转换成
keras
,最后转成tflite
对应的代码仓库:
Lebhoryi/keras-YOLOv3-model-set
转自 david8862/keras-YOLOv3-model-set,我做了一些修改,请按照我的来,否则出错请自负ART-PI 嵌入式人形检测 附源码(RT-AK Demo)相关推荐
- 搜索提示的实现(仿百度):附源码和在线demo
这篇文章是我转载过来的,我现在做的搜索引擎项目也做了一个基于Jquery做的自动提示功能,这里就不贴了,下面我给出一个我转载的文章分享给大家,喜欢的拿去吧! 智能搜索提示的功能大家都用过,百度搜索的时 ...
- 基于matlab使用主动声纳系统进行水下目标检测(附源码)
一.前言 此示例演示如何模拟具有两个目标的主动单基地声纳方案.声纳系统由各向同性投影仪阵列和单个水听器元件组成.投影仪阵列呈球形.反向散射信号由水听器接收.接收到的信号包括直接和多路径贡献. 二.水下 ...
- 基于Pytorch的从零开始的目标检测 | 附源码
01. 引言 目标检测是计算机视觉中一个非常流行的任务,在这个任务中,给定一个图像,你预测图像中物体的包围盒(通常是矩形的) ,并且识别物体的类型.在这个图像中可能有多个对象,而且现在有各种先进的技术 ...
- OpenCvSharp (C# OpenCV) DNN模块加载自己训练的TensorFlow模型做目标检测(含手势识别、骰子识别、菜品识别)(附源码)
本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍OpenCVSharp DNN模块加载自己训练的TensorFlow模型做目标检测(含手势识别.骰子识别.菜品识别)! 前言: 下 ...
- Halcon转OpenCV实例--去除纸张中的颜色笔迹/墨迹(附源码)
导读 本文主要介绍一个去除纸张中颜色笔迹/墨迹的实例,并将Halcon实现转为OpenCV. 实例来源 实例来源于51Halcon论坛的讨论贴: https://www.51halcon.com/fo ...
- Entity Framework在Asp.net MVC中的实现One Context Per Request(附源码)
上篇中"Entity Framework中的Identity map和Unit of Work模式", 由于EF中的Identity map和Unit of Work模式,EF体现 ...
- VC++获取磁盘剩余空间(附源码)
VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 第23章:VC++获取磁盘剩余空间(附源码) 源代码demo已上传到百度网盘:永久生效 ,代码实现了获取任一磁盘的剩余空间,返回MB ...
- C++RTSP服务端(附源码)
VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 第16章:VC++ RTSP服务端(附源码) 源代码demo已上传到百度网盘:永久生效 ,文章尾部附 百度链接
- VC++电脑锁屏(附源码)
VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 第14章:VC++电脑锁屏(附源码) 源代码demo已上传到百度网盘:永久生效 ,文章尾部附 百度链接 源代码demo已上传到百度网盘 ...
最新文章
- 注意力不集中的判断标准
- STM32 基础系列教程 11 – ADC 轮询
- 驱动利器:数据驱动下的产品决策(上)
- 如何证明在素数p和2p之间存在另一个素数呢?简单却不完备的证明
- Nacos安装和服务注册
- 小心!你家的 IoT 设备可能已成为僵尸网络“肉鸡”
- Java核心类库-IO-File类介绍和路径分割符
- 南昌大学2021年811考研真题+答案详解
- 利用python的requests爬取高清壁纸
- 专访吴军:“腾讯无2B基因,谷歌太平庸”,“我说错了吗?”
- 洛谷P1725 琪露诺 题解
- spyder 更改默认工作目录的最优方法
- web -【在线聊天】
- c语言n层文字塔程序的结构图,精馏塔中由塔顶向下的第n-1,n,n+1层塔板,其气相组成关系为( )...
- JAVA系列 IO流 知识结构整理 建立合理的知识框架逻辑 输入输出流 理顺你的思维架构Fileoutput inputStream FileWriter FIleReader结构整理
- C++ Boost库:简介和第一个示例程序
- html5 中心点旋转,html5 canvas围绕中心点旋转
- 根据所选日期、当前日期计算一周的日期和星期,农历
- centOS 7下python2升级为python3
- 数学主题分类 - 中文(下)
热门文章
- 针对“扫雷“和“植物大战僵尸“游戏,分析,扫描,阳光值,植物,金币,僵尸的分析逆向
- 机器学习——经典降维算法与框架综述
- 学校计算机室应该配备哪种灭火器,学校教学楼应配备哪种灭火器
- 探索REALY,元宇宙赛道的潮流先锋
- bp神经网络权值调整公式,bp神经网络算法推导
- python逻辑运算符的优先级_Python逻辑运算符
- 什么样的人适合当软件工程师?
- R语言问题解决: 不存在叫‘xxx’这个名字的程辑包
- 解决gradle编译报Error:All flavors must now belong to a named flavor dimension.问题
- 代理模式——游戏代练
- 搜索提示的实现(仿百度):附源码和在线demo