融入深度学习的垂钓行为检测方法
2020-03-15张远学陶青川王维
张远学,陶青川,王维
(四川大学电子信息学院,成都 610065)
0 引言
近些年来,河流等场景下的智能视频监控在防止水灾、保护水资源、捕获异常行为等方面发挥着重要作用[1],基于视频图像的垂钓的行为检测能够有效地避免因不文明、违规的垂钓行为引起的环境污染以及存在的安全隐患,在河长制全面推行过程中具有巨大的应用价值。
随着人工智能技术的快速发展,目前实现本文提出的检测非法垂钓检测功能常见方法有两种,其一为直接收集市面上各类鱼竿的图片样本,通过深度学习的方法直接对样本训练生成模型文件,然后利用我们的深度学习框架(TensorFlow、Caffe、PyTorch...)加载训练好的模型来实现对实时视频流图像中的钓竿识别从而判断是否有垂钓事件发生;其二为直接对视频流图像进行直线检测从而判断是否有垂钓事件发生。但是这两类方法都存在各自的问题,方法一中由于摄像机拍摄的户外视频场景通常比较开阔,我们的鱼竿在视频图像中更是比较细小,直接利用深度学习方法对钓竿等细小目标的检测的话效果往往不理想,另外目前国内外还没有人或单位发表过类似的检测算法,市面上并不能找到鱼竿的样本,自己制作鱼竿样本的话会花费大量的人力物力,故直接采用深度学习的方法是行不通的。在方法二中,采用传统机器学习的方法直接检测视频流中直线的话会存在两个严重缺陷,第一个缺陷为,由于监控视频的分辨率一般比较大(1280×720或更大的分辨率),而现有的边缘检测算法都比较耗时,故在实时视频监控系统中实现这么耗时的算法是无法保证视频的实时性的;第二个缺陷为,实际的河流区域场景千差万别,河流边的树枝,堤岸边缘等非常多的物体都可被直线检测算法检测到,这些未知的含有直线形状的物体会对我们的钓竿检测造成巨大的干扰。故本文提出一种融入深度学习的垂钓检测方法。
由于垂钓事件一定会伴随着湖泊与人两类目标,而人这类目标在网络上有非常多的样本可以收集到,同时若有垂钓事件的话则鱼竿一定位于湖泊和人之间的一定大小的区域内,且根据实际调查,钓鱼场景下人与湖泊之间的一定比例范围内几乎不会有除鱼竿外的其他含直线类目标,故本文提出先采用深度学习方法实现湖泊与人的分割,然后结合传统机器视觉方法对人与湖泊之间的一块矩形区域做直线检测从而实现本文提出的垂钓检测功能。
1 垂钓行为检测整体流程
实现本文垂钓行为检测的第一步是先要从视频场景中识别到同时存在人和河流这两类目标。本文采用从网上爬取大量类似场景下人员的图片与自己实际采集的河流样本制作的数据集进行网络模型训练,然后通过深度学习框架TensorFlow加载训练得到的模型对图像进行分割[2],得到每帧视频图像的分割图。在分割图中会用不同颜色标识人、河流、背景这三类目标。第二步是在同时存在人和河流的分割图中按照一定比例划取人与河流之间一个矩形区域,然后在该区域中采用本文提出的高精度高速率直线检测算法EDLines来检测划取的矩形区域内是否有直线。系统的整体流程如图1所示。
2 垂钓行为检测方法
2.1 DeepLab V3+实现人与河流的分割
本文采用基于图像像素级预测的语义分割网络deeplabV3+对水岸场景下的特定目标进行分割[3],相比于FCN等语义分割网络,本文所选用的网络分割结果边缘信息更精细,分割速度更快。
图1 垂钓行为检测流程图
(1)LTDNet网络结构
DeepLab V3+基于之前的模型架构,为了融入多尺度信息,使用与SegNet、FCN相同的encoder-decoder架构。使用XCeption[4]作为深层卷积神经网络,并在此网络结构中,首次使用深度可分离卷积提高计算速度,减少计算量[5]。本文研究的是一个三分类问题,而原网络中的最后一个卷积层的通道数是21,故将通道数替换为3,分别对应的是背景,河流以及人。
图2 网络示意图
由于本文研究的垂钓行为检测是在实时的视频下进行的,为了使算法具有实时性,减少时间的消耗,在不影响算法的准确度的情况下,本中将Xception模型中的entery flow添加一个新的block,Middle flow卷积层减少到24层,同时更改部分卷积的通道数;在Decoder中,首先增加两路low_level feature用于丰富细节信息,将连接后的特征map更改为一层128通道的3×3卷积处理,经过简单的上采样后输出分割结果图。
(2)DeepLab V3+分割结果
文中使用5124张不同像素的河边垂钓图像进行离线训练上文提到的网络模型,通过加载训练得到的pb模型文件对图像进行分割得到分割图如图3所示,其中黑色代表背景,黄色代表河流目标,绿色代表人。从效果图中可以看出该深度学习网络模型能够非常准确地实现目标分割,知道了人与河流的位置之后,就可以在人与河流之间进行钓竿检测了。
图3 深度学习分割效果图
2.2 EDLines检测钓竿
根据钓竿外形特征,因此对钓竿的检测可以近似于对图像中直线的检测。现有的研究方法中几乎都是采用canny、sobel等算子与Hough或(概率 Hough)变换相结合的直线检测方案,该方案需要调节的参数比较多,且计算代价比价大,方法相对复杂。本文提出一种快速、无参数的线段检测方法EDLines,可以产生稳定,精确的检测效果,其运行速度比现在常用的直线检测算法LSD还要快十倍,非常适合应用于对实时性要求较高的监控系统。另外还可通过亥姆霍兹原理Helmholtz principle来对该方法提取到的直线进行验证,以消除虚假线段。
(1)ED算法简介
ED算法执行边缘检测大致分为如下四个过程:
①使用高斯核对图像进行卷积以抑制噪声并使图像平滑,本文采用5×5且σ=1的高斯核。
②计算平滑图像梯度大小和方向。这一步我们可以选择一个常见的算子(如,Prewitt、sobel、Feldman)。
③从梯度幅度和方向图中提取锚点。关于锚点的提取,不同的应用可以有不同的提取方案,本文采用的提取方案为:以步骤2中梯度幅度图的极大值(八邻域内)作为锚点。
④通过设计好的智能路由算法结合梯度方向图信息(边界方向的法线方向与梯度方向重合)连接各锚点(注意:不一定所有的锚点会出现在最终的边缘图中)。
整个过程流程图如图4所示:
图4 DS算法提取线特征过程
对应于不同的实际场景可以选择合适的高斯平滑滤波模板,由于实际垂钓事件发生时钓竿通常会与水平面成20°到60°夹角,故本研究的沿对角方向的边缘是比较重要的,故本文采用了一个5×5的检测对角边缘的模板来做第一步的图像平滑滤波。梯度幅值的计算中会设置一个阈值,低于该阈值的幅值都会被赋予零值,通过调节阈值的大小可以略掉那些变化平滑的边缘和一些噪声,只留下那些明显的边缘。在上面的最后一步完成锚点连接后可以判断所提取到的线段长度与角度是否满足预期从何来确定是否保留该线段。
智能路由算法简介
此处先给出路由停止规则:
(1)当我们移动到边缘的边界处时(即当前梯度幅值经阈值处理后为零值)。
(2)路由过程中遇到一个先前被遍历过的边缘像素。
由于本文所研究对象对角方向的边缘是比较重要的,故本文提出下图5(b)与5(c)两种路由方式。我们假设一水平边界穿过锚点(x,y),下面给出其向左路由过程(向右同理,此处不再赘述):
我们的路由过程一直向左移动一直到满足上面给出的任意一条路由停止规则,在每一轮迭代循环过程中,我们只需关注左侧三个直接相邻的像素即可,例如,(x-1,y-1),(x-1,y),(x-1,y+1),然后选中三个像素值最大的一个。如果处理右侧,同理只需考虑(x+1,y-1),(x+1,y),(x+1,y+1)三个像素点即可。图 5(a)给出了一个从(8,4)点开始的详细路由过程。
图5
3 实验结果和分析
3.1 钓竿检测结果
采用EDLines进行钓竿的检测的结果。如图6所示,通过人和河流目标的位置可以确定钓竿检测矩形框区域b,通过边缘提取得到c,d是经过ED算法处理后的二值图像,e是通过线段提取后得到的钓竿结果图,即检测的钓竿与实际的钓竿几乎重合,满足文中的要求。
图6 结合深度学习的钓竿检测
2.2 垂钓行为检测统计
由于垂钓行为是一个持续性事件,故文中将河岸场景下垂钓视频数据切分成单位时间为5秒的150个视频片段进行垂钓行为算法测试。若在5秒内发出垂钓行为报警信息,则认为算法正确,否则为漏报。同时,准备相同条件下的50个非垂钓视频片段进行EDLines算法检测。结果如表1所示。
表1 垂钓行为检测结果
通过表1中的检测结果可以算出该算法的召回率为98.5%,这个精读的检测是非常可观的。
3.3 与现有的直线检测算法进行比较
选取3个不同场景下具有代表性的垂钓图像与传统的霍夫直线检测、文献[8]和传统的最小二乘法进行实验对比,为了方便进行后期描述,分别将各自的算法设为算法1、算法2、算法3以及文中算法,最终的钓竿检测结果如图7所示。
由图7的对比图可以看出,在具有强波纹、波浪以及水面上具有浮萍等情况下,canny算子提取的边缘存在无效边缘的干扰,导致算法1,算法3几乎无法进行钓竿的检测;算法2先根据二值图像中所有边缘点梯度方向的统计分布特征确定钓竿的大致方向,再通过设定阈值消除无效的点集的干扰,得到的是一组直线集,但在强波纹或波浪情况下,检测效果不是很好;在垂钓环境存在波纹等不可控因素干扰下,四个算法中,只有本文算法能够较准确地检测到水面上的钓竿。
4 结语
图7 钓竿检测效果对比图
文中提出融入深度学习的河边垂钓行为检测方法,对不同河流场景的适应性较强,能够克服纹波、水浪等不可控因素的干扰,实现了对河边垂钓行为的准确检测,为水利智能监控提供了新的方法。本文提出的改进的deeplabV3+网络模型不仅可以应用于人和河流的分割,还可以应用在实际生活中的各类目标分割,具有极大的推广价值。另外本文提出的改进的快速高精度EDLines直线检测算法只需简单修改上文所提到的ED算法中的线段提取部分就可以应用与许多其他需要提取直线的场合(如车道线、斑马线、遥感影像直线等场合),这部分同样具有极高的研究意义。