美林数据技术专家团队分享,基于Jetson Nano的抽烟检测相关实践

随着大数据、人工智能技术的不断发展,视频监控技术越来越广泛应用于“智慧城市”、“平安城市”等公共安全项目,相比基于云端的视频分析服务,人们更倾向于在靠近视频源头的边缘设备如智能摄像头上直接运行模型,以降低网络延迟、带宽占用、部署成本及保护隐私。本文以抽烟检测为例,来阐述在Jetson Nano这种计算资源有限的设备上,提供近端智能分析服务的相关实践。
对于抽烟的检测,在计算机视觉场景属典型的小目标检测,这类目标通常分辨率低、信息少、噪音多,会给检测带来较大的困难,首先,我们先来回顾一下基于深度学习的小目标检测常用的一些方法。
小目标检测常用技术
小目标检测常用技术有以下几种:
基于多尺度滑动窗口的方法
通过对原图构建不同分辨率的图像金字塔,并用分类器在不同层滑动来检测不同尺度的目标;
基于数据增强的方法
其基本思想是通过增加图像中小目标的数量来提升模型的效果,具体可采用过采样的策略或是通过复制小目标区域再粘贴的方法;
基于特征金字塔FPN的方法
其考虑网络不同层的特征图对信息的表达程度不一样,浅层感受野较小,更适合小目标检测;
基于拼图的方法
在不改变原图大小的情况下,对图片进行按照网络输入分辨率进行切分,组成一批数据,传入网络进行检测;
基于切图的方法
其基本思想是选择真值尺度和锚框接近的目标进行训练,代表方法有SNIP和SNIPER等;
基于自适应锚框的方法
根据特定的任务来调优预先设置的锚框,如可采用KMeans聚类算法来对数据集的边框做聚类分析,找到合适的锚框尺寸。
具体针对抽烟场景,“烟”本身长宽比例较为特殊,且无明显特征,并经常有手遮挡的情况,因此,在实践中,我们一方面采用自适应锚框的方法来适应烟的比例,同时配合数据增强的方法来增加烟的数量,另一方面,采用“先检测手,再检测烟”这种基于两阶段的检测方法。由于我们是在边缘设备上运行模型,模型过大会造成实时性较差,这种两阶段的方法,可以极大降低目标检测难度,即可以用简单的模型来实现,并可以很好地消除误检。

基于两阶段的抽烟检测流程
美林数据技术专家团队分享,基于Jetson Nano的抽烟检测相关实践_第1张图片

基于两阶段的抽烟检测流程如上图所示,第一阶段采用基于Yolov4-tiny的手检测模型,从整幅图片中定位出手所在的区域,这样可极大减少后续抽烟检测的计算量;第二阶段,考虑到目标本身所包含的判别信息,采用语义分割模型来对烟所在区域的像素进行区分,这样可充分利用周围像素的相关信息。具体采用基于U-Net的烟语义分割模型,进而判断是否有烟的存在,最终,完成抽烟的判定。
为了加速模型在Jetson Nano上的运行速度,我们基于TensorRT模型优化加速框架,生成针对Nano GPU硬件优化的模型文件,具体流程如下:
美林数据技术专家团队分享,基于Jetson Nano的抽烟检测相关实践_第2张图片

由于第一阶段采用的检测模型为Yolov4-tiny,而TensorRT中对其中的一些层的算子不支持,要生成优化模型,需要结合DeepStream部署框架及TensorRT相关标准,实现对应IPluginV2和IPluginCreator的接口:
美林数据技术专家团队分享,基于Jetson Nano的抽烟检测相关实践_第3张图片

美林数据技术专家团队分享,基于Jetson Nano的抽烟检测相关实践_第4张图片

基于Jetson Nano的抽烟检测模型部署
抽烟检测对接实时视频流,在部署时采用DeepStream框架进行部署:
美林数据技术专家团队分享,基于Jetson Nano的抽烟检测相关实践_第5张图片

首先对于输入视频流,采用H264等解码器结合硬件进行解码,然后输入模型,模型部分借助DeepStream的nvinfer接口来加载经TensorRT优化后的模型,并结合OSD展示检测框、类别等,最终经EGL等Sink进行桌面展示。其中,对于检测结果,可借助GstPlugin接口进行结合业务进行整合:
美林数据技术专家团队分享,基于Jetson Nano的抽烟检测相关实践_第6张图片

在抽烟检测场景,我们基于此实现对于烟分割结果中烟类别的获取、烟所在区域的获取及抽烟违规的判定,并生成对应的检测元信息,经消息转换及消息Broker实现检测结果的发送。

综上,利用基于深度学习的小目标检测相关方法,借助Nano GPU硬件及DeepStream等软件框架,可实现边缘端的抽烟实时检测,满足智能监控分析场景的实时性要求,并很好地降低了带宽消耗、保护数据隐私,同时可结合云端存储,实现事中实时报警、事后可追溯。

你可能感兴趣的:(人工智能,计算机视觉,深度学习)