目录
一、背景
二、配置环境
三、使用手机行为检测数据集
四、租用云端GPU进行模型训练
五、PC端验证训练效果
六、Aidlux端的模型推理测试
七、改进及拓展
现代社会“低头族”越来越多,过马路时低头玩手机,操作岗位上工作时玩手机,甚至有的骑车时也在玩手机等等,存在着不同程度的交通安全隐患、安全操作隐患等等。因此,开发出一个玩手机的行为检测系统,以规范人们的玩手机行为,还是具有很大意义的。
本项目是基于YoloV5做的玩手机行为检测,深加工后可落地于行人玩手机监测等安全交通、岗位玩手机等安全生产、儿童玩手机等智慧家居等实际应用场景。
该项目主要是应用VSCode(或Pycharm)进行代码调试,通过Aidlux手机App软件实现在边缘设备上的部署。
AIdlux主打的是基于ARM架构的跨生态(Android/鸿蒙+Linux)一站式AIOT应用开发平台。其具体介绍请参见文章《Aidlux边缘设备简介》。
VScode软件的安装、配置及使用和Aidlux边缘设备的软件安装及使用请参考文章《Aidlux&VScode编程调试及AI案例测试》,文中有详细步骤指导完成。
1.该项目使用的是具有8201玩手机图片的数据集,含有jpg格式的图像及与其相对应的xml和txt格式的标签。(有需要者可联系)
2. 将数据集清洗,并分成训练集与测试集。
①通过标签文件名对比图像文件名,获得对应的图像,去除没有标签的图像;也可根据图像文件名对比标签文件名,去除没有图像的标签;也可两者都进行。代码较简单,参见《图像数据集与标签数据集名称对比筛选的代码示例》,文中仅展示第一种方式。
②将数据集按8:2比例拆分为训练集与测试集,代码段参见《如何将原始数据集分为训练集与测试集》
具体如何使用云端网盘,租用服务器,和创建实例请参考文章《通过云服务器租用GPU进行基于YOLOV5的人体检测模型训练》,里边有详细操作步骤。
1将已经编写调试好的代码打包成zip格式的压缩文件,和刚刚做好的数据集打包成zip格式的压缩文件,传到云端网盘。
2.租用实例后,解压缩打包文件。
3.在“JupyterLab”下新建终端,并运行‘file_generate_txt.py’文件,生成现在训练集图像与测试集图像的path,注意在py文件中要把文件path修改到在网盘中对应的path。
最后的得到统计image path的train_txt.txt与label_txt.txt文件。
4.检查并修改data.yaml文件,如图所示,保证训练集与测试集path正确,修改检测种类和类型name。
5.修改train.py文件中的weight参数path、data文件path、hyp文件path和cfg文件path,本次训练用的是YoloV5s的模型配置和参数。 然后就可以开始训练了。
6.训练完成,可以在runs文件夹中看到训练过程中产生的参数文件。并将最优的模型参数文件‘best.pt’下载到本地,进行使用。
在PC端修改并运行'detect_image.py'文件,查看验证效果。注意代码中path的更改。
同样的,运行“detect_image.py”文件,可查看视频显示效果。
具体详细的操作步骤可参考《算法模型在Aidlux端的模型推理测试实现详解》
1.在tensorflow框架下,运行export.py文件,生成phone_best-fp16.tflite文件。
2.我们使用Netron,打开刚刚的yolov5n_best-fp16.tflite文件。点击最下方的输出单元,可以看到输出的信息。
3.将代码上传到Aidlux的Home下面,在VSCode中使用SSH,连接到Aidlux。
4.打开aidlux文件夹中的yolov5.py并修改,进行视频推理测试。
5.运行aidlux文件夹中的“yolov5.py”程序,在手机版本的Aidlux和PC端网页的Aidlux中,都可以看到推理的显示结果。
phone_check
该项目只是最基本的行人使用手机检测,结合人脸识别和人体行为追踪算法,可将信息记录并推送给相关人员。后面有机会会进一步更新。