导读:说起人工智能,首先映入眼帘的,一定会是:1997年国际象棋机器“深蓝”战胜世界冠军卡斯帕罗夫和2016年围棋棋王柯洁三次被AlphaGo击败的场景。这两次人工智能历史上的标识性事件,让人们开始感叹,人工智能的发展已经越来越接近各种机器人的电影大片了。人工智能应用在语音识别,图像人脸识别、智慧安防、工业视觉、无人驾驶等方面越来越接近人们的生活。本文也将走进生活,用YOLOv5算法和AidLux平台来实现课室人头计数系统。
2017年开始,“AIoT”开始逐渐被大众所熟知。边缘计算设备作为分析处理数据的基础支撑,在该领域中的作用也日益凸显。凭借小体积、高性能、低功耗等先天优势,ARM在边缘计算兴起这波浪潮中发展迅速,并汇集了苹果、高通、联发科等企业在移动智能设备市场“大杀四方”。但跟移动设备市场不同,AIoT领域存在着严重的应用场景碎片化问题,软件适配、优化成本和AI项目开发、迁移的门槛居高不下。导致强如高通这样的企业,在该领域内的应用落地案例也屈指可数。如今,这样的困扰不复存在。AidLux针对高通平台进行了深度适配和全面优化,在软件层面补足和提升了高通芯片在AIoT方面的能力,助力企业快速切入AIoT万亿市场。
AI开发依赖开发环境和框架,AidLux集成了全球10大主流AI框架(TensorFlow、PaddlePaddle、NCNN、TNN、MNN、PyTorch、Caffe、MXNet、MindSpore、OpenCV)和AI应用所依赖的各种科学计算库,并做了全面的环境部署、适配和整合优化,无需配置。
此外,AidLux进行CPU资源调度优化,多进程开展模型的预处理、AI推理和后处理,多进程推理多模型任务,使用CPU+GPU并行处理,并提供CPU+GPU+NPU综合调度,支持算子补全,兼容更多的模型转换和加速处理。AidLux还拥有统一编程接口,将不同框架实现和不同厂商硬件调用进行解耦合,仅用Python一门语言即可开发部署AI应用。统一接口和低代码开发能够降低编程门槛,有效地解决异构模型转化繁琐和开发复杂问题,显著减少学习成本和项目开发、迁移成本,大幅缩短项目落地周期。
结合可视化性能监控平台,用户可直观查看YOLOv5、movenet、resnet50、mobilenetv2等模型在基于高通SoC的硬件上加速效果。
YOLOv5模型加速效果
在实际生活中,为了准确的统计出人数貌似是一件费时费力的事,例如在课堂上统计出勤人数,一个个点名十分占用课堂时间,并且经常会出现一人分饰多角的情况,往往统计结果和实际出勤有很大的出入,因此运用AI视觉技术,再基于AidLux平台部署实现实时的人数统计将会有很大的应用需求。从可行性分析,操作流程十分的简单,不需要专门的技术人员进行部署,只需要准备一台闲置的安卓手机,并且下载AidLux平台,注册七牛云个人账户,再关注喵提醒公众号,便可实时统计人数,实时收到短信提醒,也可为十分的方便了,具体流程如下:
1、代码下载地址:
GitHub:https://github.com/Daniel4805/yolov5-master.git
百度云网盘:https://pan.baidu.com/s/1KYibXoZTSDdAa0_pHkHApA?pwd=brjo
2、根据代码中requirements.txt文件说明,下载依赖库:
pip install -r requirements.txt
1、打开train_code/get_labels.py,修改数据集路径:(最好使用绝对路劲,不容易出错)
运行后就可以看到类别数,以及标注的类别框的数量。
2、打开train_code/main.py文件,修改训练数据的路劲:
运行main.py文件,可以显示一些画有人头框的图片:
其中,0.2表示80%的数据进行训练,20%的数据进行验证:
3、在data文件夹下,新建一个head.yaml文件,作为训练人头数据集的参数设置:
4、修改train.py参数:
5、修改yolov5s.yaml:
1、运行train.py文件,既可开始训练:
可以看到一共要训练299个模型,训练速度跟电脑显存有很大关系
如果出现以下提示信息报错:
可能说明电脑磁盘没有分配虚拟空间给模型测试,我们可以打开高级系统设置,根据提示配置
2、修改三个参数,运行detect.py,对训练结果进行测试,在runs/detect/exp最后一个文件夹中得到检测的效果图片:
1、登录七牛云官网:https://www.qiniu.com/,注册一个账号。
2、点击左上角的折叠栏,选择“对象存储Kodo”:
3、进入对象存储的管理页面,再点击左面的“空间管理”,点击新建空间,并输入“存储空间名称”,访问控制修改为“公开”。
4、编写代码接口qiniu_test.py:
先下载qiniu库,再按如下修改qiniu配置参数,将access_ksy,secret_key,bucket_name修改成自己的。
pip install qiniu
对应位置如下:
填写上相应的信息后,在Pycharm软件中运行qiniu_test.py文件,可以得到上传的图片的url信息。
复制URL,可在网页中打开,查看图片:
图片也会上传至七牛云平台:
目前为止,我们已经训练好了YOLOv5的人头检测的模型,并且可以将本地的图片上传至云空间,获得图片的外链,此时,我们还需要将统计人数的信息发送至手机微信,这样才能方便查看统计结果,所以我们可以使用微信公众号喵提醒来查看统计后的结果。
1、先注册个人账户
2、然后给公众号发信息(什么信息都可以,目的是激活服务):
3、新建提醒:
写好标题和描述,通知方式选公众号(因为是免费的),喵码是自动生成的:
4、编写miaotixing_test.py接口:
值得注意的是,这里我们需要获取detect.py中统计出的人数再发送到手机上:
5、运行miaotixing_test.py,我们手机上就可以收到信息啦:
上面的流程基本上是在PC端完成的,但是在实际的应用场景中,移动端肯定是比PC端更便捷的,那么如何将PC端的代码嫁接到移动端呢?Aidlux(https://aidlux.com/)就是一个能很好的将PC端和移动端连接起来的平台,其中最主要的好处是可以将PC端上写的python代码直接部署到移动端,不需要再将python转java或者c++,十分的方便,大大的节省了算法的部署。通过搭载AidLux,高通芯片可以直接用于AIoT领域,用户仅使用Python即可根据需求单独调用CPU、GPU和DSP/NPU。
1、下载aidlux软件:
需要准备一台Android系统的手机,然后在应用商城中搜索aidlux即可下载,不过软件本身占用的空间比较大,所以要保证自己的手机有足够的空间可以下载。
2、将移动端的aidlux与PC端的web连接:(注意移动端要和PC端连接同一个WiFi才行)
打开aidlux软件后,点击cloud_ip后,可以看到手机界面上会跳出可以在电脑上登录的IP网址。在电脑的浏览器上,随便输入一个IP,可以跳出Aidlux的登录页面,默认登录密码是“aidlux”。登录后就可将手机的系统投影到电脑上,任何操作和代码编写都是完全数据共通的,这样我们就可以将PC端的操作,直接应用到Aidlux的App中了。
3、将PC端的代码迁移到移动端:
打开文件管理器 —> 进入home文件目录 —> 点击右上角“upload” —> 选择“Folder” —> 将yolov5-master文件全部上传
4、安装相应的依赖包
打开终端,输入如下命令,就可以下载qiniu库:
pip3 install qiniu -i https://pypi.tuna.tsinghua.edu.cn/simple
5、运行代码
打开刚刚上传的yolov5-master文件,找到aidlux文件,运行其中的yolov5.py
点击右上角的build —> run now
手机上就可以收到信息啦。