1. 背景
在基于深度神经网络的诸多算法中,目标检测算法是计算机视觉和数字图像处理领域的一个重要方向,其广泛应用于智能视频监控、自动驾驶、工业检测等领域,这些应用领域都将目标检测算法作为基础算法,通过该算法自动识别图像内容,将识别的内容信息作为后续算法的前提。
在政通的城管视频智能分析项目中,也是采用目标检测算法对城管图片实现自动识别并上报功能,减少人力成本的消耗,同时依托公司独有的城管数据集和项目落地经验,不断提升事件的识别精度。
图1.视频智能分析系统
2、识别总体流程
如图2,是视频智能分析平台上报的事件图片,该图片上报的是无照经营游商事件。
图2.城管事件图片
那么视频城管算法是如何工作,最后生成该事件图片呢?
如图3所示,首先视频帧经过目标检测算法生成带有目标框的图片,该图片包含人、车、游商等目标的位置和类别信息;然后将这些目标信息经过逻辑判断,生成无照经营游商事件图片。
图3.视频智能分析主要流程
从图3中可以知道,目标检测算法是整个视频分析的关键算法,是生成事件图像的基础。
接下来,我们就来揭开这个关键算法的神秘面纱。
3、目标检测算法
3.1、前言
目前基于深度神经网络的目标检测算法主要有三类方向:
- 一类是两阶段的目标检测算法(Tow-stage detector),该类算法准确率相对较高,但是运行速度较慢,不符合我们城管识别的速度需求;
- 一类是基于transformer的目标检测算法,该类算法对小目标的识别精度不够,同时运行速度也较慢,因此也不符合我们的速度要求;
- 最后是单阶段的目标检测算法(One-stage detector),该类算法牺牲少量准确率,换来识别速度的大幅提升,符合我们的需求,因此我们采用的是该类算法,具体来说是采用yolov5目标检测算法。
图4.目标检测算法发展历程
3.2、yolov5目标检测算法
下图5为yolov5目标检测算法,该算法主要分为输入、主干网络、衔接网络、预测输出四个部分,每个部分都有独特的作用,下面将分别进行分析。
图5.yolov5目标检测算法
3.2.1、输入
yolov5算法输入的一张原始图片,然后采用mosaic方法进行数据增强,mosaic方法的主要思想是将四张图片进行随机裁剪,再拼接到一张图上作为训练数据。这样做的好处是丰富了图片的背景,增加算法的稳定性,并且四张图片拼接在一起变相地提高了batch_size。
图6.mosaic方法效果图
3.2.2、主干网络
输入图片经过mosaic方法后就进入主干网络部分,该部分主要作用是对图像进行特征提取,同时主干网络尽量选用参数量较小的结构,以提高运行的速度并保证识别准确率。
图7.主干网络提取特征效果图
3.2.3、衔接网络
特征在经过主干网络后,会继续在衔接网络中运行,衔接网络采用FPN+PAN的结构,其主要作用是增加特征的丰富性,增强特征的语义信息和定位信息,增加的这些信息有助于提高算法预测的准确率。
图8.FPN+PAN结构
3.2.4、预测输出
特征经过衔接网络后,通过一个卷积,最后进行输出,输出有三个分支,大小维度分别是bs*3*80*80*(numclass+5)、 bs*3*40*40*(numclass+5) 、bs*3*20*20*(numclass+5) ,然后对这些输出的数值提取出目标框,主要是将输出的数值进行反编码计算,映射到原图的目标框,最后将计算到的目标框采用nms方法进行过滤,过滤后的最终结果就是城管的目标检测结果。
图9.预测输出
4、目标检测结果
如图10所示,该图就是原视频帧经过目标检测算法后输出的结果,输出的结果中包含每个目标的位置和置信度,经过目标检测算法处理的图片最后通过逻辑判断即可自动识别出图片是否包含事件。下图经过目标检测算法后,识别出有一个目标是游商,后续经过逻辑判断,该目标就是无照经营游商事件,因此最终输出的是图2的事件图片。
图10.目标检测结果效果图
5、总结
本文通过一张带有事件框的城管图片,引出我们视频智能分析项目背后的算法原理。该原理主要采用yolov5目标检测算法,既保证的事件识别的准确率,又保证算法的运行速度,该算法是工业部署中经常采用的算法。
本文只是简单的介绍了yolov5目标检测算法的各个组成部分以及作用,更详细的实现细节需要进一步的学习,同时本文提到的目标检测四个部分是计算机视觉研究的重要领域,每个部分都有许多论文,因此本文只是对这些部分做一次概括,让初学者有个基本概念。
作者:调参侠
来源:微信公众号:政通技术团队
出处:https://mp.weixin.qq.com/s/MAWqXzX5QFl7SBWgAm_Cwg
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除