基于YOLO算法,我们制作了一个安全帽佩戴状态检测系统。具体的算法实现流程我已经放在了上一节。
安全帽佩戴状态检测系统设计是本项目的核心,因此此部分是项目研究小组最为关注也是投入最多精力的部分。本系统安全帽佩戴状态检测部分结构框架如图所示: 视频监控模块:保证对车间的实时拍摄,实现车间无盲区、图像清晰、可快速控制摄像头移动和变焦。系统目前选用能自动变焦的高清球机,并固定安装在车间合适位置。 图像采集模块:系统通过 RTSP 视频传输协议进行视频流传输,检测时可通过控制高清球机采集需要的图像,并输送给图像处理模块。 图像处理模块:利用基于深度学习的最新的YOLO v4算法,实时监测工人安全帽的佩戴状态。 数据存储模块:保存检测过程中采集的未佩戴安全帽的图像以备工人和管理员核实结果; 将违规记录存储到数据库中以便用户查看。 结果展示模块:管理人员可通过PC程序实时查看检测结果以及违规记录。
系统将高清球机采集到的实时图像,传入算法模型中进行处理。管理员在PC端可以随时查看各车间实时处理的检测图像,以及违规人数。 当检测到人未佩戴安全帽时,系统根据具体情况输出不同的报警信息,报警功能具体参见递进式警报功能实现。
请参见基于keras的YOLO V3 和YOLO V4训练自己的模型(一),https://blog.csdn.net/qq_43673584/article/details/109210958 此处不再赘述。
根据实际生产环境需要,我们需要对实时监控数据流进行检测。我们利用opencv调用摄像头,读取每一帧图像,将其传入目标检测网络检测,并将检测结果呈现。
本文所用的检测格式为RGB格式,CV2读取的时候会使用BGR格式,因此在检测的时候要利用cv2.cvtColor进行转换。在输入时将BGR转化RGB格式,在输出的时候将RGB转化成BGR格式,拼接成视频。
FPS简单来理解就是图像的刷新频率,也就是每秒多少帧。假设目标检测网络处理1帧要0.02s。此时FPS就是50。目前市面上常用的监控设备FPS值是25,我们的算法在GTX1060的显卡设备上FPS可以达到26,完全满足实时检测的要求。
opencv-Python4.1.2.30 Pillow6.2.1 numpy==1.17.4
这里没有办法放视频,之后可以把网盘链接放在评论区。