前面我们学习了aidlux的相关课程,并在课程的最后实现了人流统计算法的部署实战:道阻且长:人体检测+人体追踪的人流统计AI项目在android端部署落地的实战心得。
以及自己做的:道阻且长:基于AidLux+Android的智慧交通项目部署实战1
智慧交通是一个很大的方向,利用检测到的车辆可以做很多内容,比如车辆违规泊车检测,视频效果可以看:基于AidLux+Android的智慧交通项目部署实战2_哔哩哔哩_bilibili
最终可以实现检测到视频或者摄像头视频流中违规泊车的车辆并标定该车辆,作出警告等操作。
以下是在aidlux平台投影到网页端的效果,非常方便友好,编辑操作文件时很方便,也方便模型迁移调试以及部署等操作。
代码思路:
1.车框信息:
1.前面我们都实现了人流统计,那么车辆统计只需要更改模型就能实现,根据前第三节课的内容把自己训练的车辆模型或者官方模型转换成tflite格式并加载使用,要注意因为输出不一样了,所以要更改输出,这里我用的coco数据集,将输出out_shape改成[1 * 25200 * 85 * 4],数据维度转换改成(1,25200,85)[0]
修改输出size
修改输出size
2.获取coco数据集中的车辆框结果,包含行人框,一共是pred[0], pred[1], pred[2], pred[3], pred[5], pred[7],分别代表coco_class的'person', 'bicycle', 'car', 'motorcycle', 'bus', 'truck'。
2.设置判定区域:
1.因为我们在实际应用的过程中不是所有的区域都需要判定,所以我们可以把需要判定的区域用四个点标起来,具体实现方法可以参考第四课内容。
参考这里的代码利用点与判定区域四个点的向量关系判定车辆是否在需要检测的区域内。
3.设置判定标准:
1.具体的思路就是判定一段时间内(比如3s)前后帧中是否有车辆位置一致,即该车辆是否有移动,即可判断该车辆是否泊车了,所以需要初始化几个参数,用来存储前帧的结果memorys,判断间隔,时间戳,等等。
2.用当前帧的车辆框信息去跟上一个时间段帧中的车辆框信息对比,判断是否有车辆未移动。并将未移动的车辆框信息保存到stop_det中,方便后续操作。
4.标定违规泊车车辆:
1.前面我们已经获得违规车辆信息stop_det,所以只需要在图像中画出来即可,并用cv2.imwrite保存告警图片,标定违规车辆。
2.由于我们设置了区域,所有detect出来的坐标是相对区域的坐标,要在原图中显示需要加上区域的左上角坐标。
最后可以看到效果图,有了这个信息可以做很多扩展。我用红色框出违规泊车车辆并在其上方加上文字illegally parking
在vscode中打开抓取的elert.jpg,可以看到违停车辆被成功标定
应用场景:
该模型直接利用了coco数据集的yolo模型,可以识别卡车,轿车,自行车,摩托车,电动车,公交车的,基本够正常的需求使用,当然也可以自建数据集训练,识别效果还是非常准确的,而且搭配aidlux的平台,识别速度非常快,基本几秒钟响应,可以做到人还没离车,就抓拍到违规泊车并警报。