600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 基于Yolov5+Aidlux的人流量统计测试

基于Yolov5+Aidlux的人流量统计测试

时间:2022-04-01 05:30:40

相关推荐

基于Yolov5+Aidlux的人流量统计测试

最近几天跟着AI界的大V江大白体验了一把基于Yolov5框架实现人流统计,觉得现在实现AI真的是触手可及,至少之前没有这么觉得过。个人转行进入教育行业将近4年,在此期间虽然也自娱自乐搞一些AI项目,但是部署到现实场景的还是少之甚少,特别是这次用一部Android手机就能实现人流统计的部署让我发现了更多好玩的事情,也期待能做出更多有意义的事情。言归正传,今天就来一个粗略的复盘,因为最近比较忙,待过了这阵儿再挤时间详细梳理一下。

上面的截图是之后会梳理的部分,今天先说个大概:⼈体检测+⼈体追踪+线段统计的⽅式,针对视频实现⼈流量统计,并通过喵提醒告知⼈流统计的数量。

一、准备工作

框架:Yolov5

平台:Aidlux

Aidlux是什么?没听说过是不是,我也是第一次用。喏,介绍附在这里了。

AIdlux系统是基于ARM架构的跨生态(Android/鸿蒙+Linux)一站式AIOT应用开发平台。实际应用到现场的时候,通常会以几种形态:GPU服务器、嵌入式设 备(比如Android手机、人脸识别闸机等)、边缘设备。GPU服务器等,而Android 嵌入式设备的底层芯片,通常是ARM架构。而Linux底层也是ARM架构,并且Android又是 基于Linux内核开发的操作系统,两者可以共享Linux内核。因此就产生了从底层开发一套应用系统的方式,在此基础上同时带来原生Android和原生Linux使用体验。所以在基于Linux系统和ARM架构上,我们可以在安卓手机上直接下载Aidlux软件,使用安卓手机充当边缘设备,进行代码的调试与案例的实现。感兴趣的老铁可以移步这里探秘(/)哈。

今天我们的任务就是通过下面的简易图来实现。

工欲善其事必先利其器,我们需要做一下准备。

准备一台笔记本、一部Android手机,需要网络或者手机热点即可。

笔记本需要我们安装编程调试工具VSCode,官网下载安装即可;

安卓手机需要安装AidLux软件,打开应用市场搜索AidLux下载安装即可,注意我们的Android手机需要满足以下的条件:

●Android 版本≥6.0.1

●cpu 支持arm64-v8a架构

●手机存储空间充足

●1.0以上版本需要安装空间>600M

●初始化空间>1.7G

二、目标检测(yolov5⼈体检测模型)

PC端

Android手机端

在我们的模型中,设定标签为person,上图中绿色框圈出来的部分就是检测到的人,我们对检测结果标定了标签和置信度(检测结果是人的概率)。

代码比较长,这里就不贴了,需要源码的可以后台留言【人流统计】。

三、目标追踪(Bytetrack多目标追踪算法)

一般来说,目标追踪主要分成两个类别:一种是多目标追踪,一种是单目标追踪。多目标追踪主要是针对视频中所有的目标都进行检测+追踪分析。两种追踪算法应用的场景各不相同,多目标追踪主要针对的是多个目标的运动轨迹,而单目标追踪主要针对的某一个目标的运动轨迹。

这里选用的是Bytetrack多目标追踪算法,原理这里不再一一赘述,感兴趣的老铁去下面的链接里探秘吧!

带你⼊⻔多⽬标跟踪(⼀)领域概述

/p/62827974

带你⼊⻔多⽬标跟踪(⼆)SORT&DeepSORT

/p/62858357

带你⼊⻔多⽬标跟踪(三)匈⽛利算法&KM算法

/p/62981901

带你⼊⻔多⽬标跟踪(四)外观模型 Appearance Model

/p/63189011

ByteTrack: Multi-Object Tracking by Associating Every Detection Box阅读笔记

/p/421264325

上图中,每个⼈体框上⽅⽩⾊的字体,是⼈体检测框的分数;蓝⾊的字体,是每个⼈体track_id的值。

四、实现人流数量统计(人体检测+人体追踪+线段统计)

区域

越线

关于人流量统计,我们首先要做的就是标定出统计区域,如上图一,可以是标定出一块儿区域,它可以是门的区域、工作台区域,或者是禁区区域;图二可以是越线区域,街道人流量等等。

那我们要做的就是统计经过某一区域的人流量或者是越线的人流量。那该如何确定某个人进入了指定区域呢?这就用到我们知道每个⼈在移动轨迹中的状态,通过状态我们就可以知道了,⽐如某个⼈当前⼀帧的状态是-1,后⼀帧的状态变成1时,说明刚刚进⼊进入到了指定的区域。我们就进行记数。

# 3. 人体和违规区域的判断(人体状态追踪判断) track_info = is_passing_line(pt, line_points) if tid not in track_id_status.keys():track_id_status.update( {tid:[track_info]}) else:if track_info != track_id_status[tid][-1]:track_id_status[tid].append(track_info) # 4. 判断是否有track_id越界,有的话保存成图片 # 当某个track_id的状态,上一帧是-1,但是这一帧是1时,说明越界了 if track_id_status[tid][-1] == 1 and len(track_id_status[tid]) >1:# 判断上一个状态是否是-1,是否的话说明越界,为了防止继续判别,随机的赋了一个3的值 if track_id_status[tid][-2] == -1:track_id_status[tid].append(3)count_person += 1

如果我们想收到人流量的信息通知的话,可以使用喵提醒,什么是喵提醒?我也是第一次用,你按照下面的提示了解一下吧!

注册账号之后,我们按照提示填写新建提醒的相关信息,点击最后的“保存”,⻚⾯会⾃动加载,中间的部分会跳出⾃⼰账号专属 对应的“喵码”和“⽹址”,上⾯的代码中主要⽤到喵码的功能。

然后需要注意的是,上面代码中的id需要修改成⾃⼰的,否则是无法接受到消息的, 另外text信息,也可以修改成自己想要提示的信息。

统计效果

至此,我们的基于Yolov5+Aidlux的人流量统计功能就完成了。

五、小结(智慧场景划分+智慧城市AI项⽬开发交付流程)

最后总结一下人流量统计功能类似的使用场景以及智慧城市AI项⽬开发交付⽅式,直接上图:

智慧城市的场景划分

算法划分

应用实例

应用实例

应用实例

智慧城市AI项⽬开发交付流程通常包括以下环节:

① 数据采集:现场数据采集、数据标定、数据集校验;

② 模型训练:设计模型、训练模型;

③ 模型部署:模型转化、模型量化、模型裁剪、模型微调;

④ ⼯程化开发:视频编解码、视频结构化开发、多任务开发管理;

⑤ 业务开发:根据项⽬的需求,设计业务规则,完成相应业务逻辑处理代码的编写调试;

⑥ 项⽬部署:制作安装包或者docker镜像,安装部署在⽬标平台上,现场测试;

通常来说,从①③是算法⼈员⽅⾯的⼯作,主要涉及Python⽅⾯算法的使⽤;⽽④主要是⼯程化⽅⾯的⼯作,主要涉及C++⽅⾯的开发;⽽⑤⑥主要是中台开发的⼯作,主要涉及Python、Java⽅⾯的开发。当然,其中还有AI软件的产品设计、UI设计、前端开发等没有罗列出来。

六、结语(未完待续,随时交流)

接下来我会挤时间来梳理出更详细的复盘总结教程,有问题欢迎随时沟通交流。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。