冼允廷 邱伟健
摘 要:研究船舶的目标跟踪对提高水上目标视频图像智能监管的水平有着至关重要的作用,系统通过深度学习SSD模型进行对船舶目标定位检测,使用修正的KCF算法对检测到的船舶目标进行跟踪。把深度学习的方式引入船舶目标检测领域,与传统检测方法相比精准率大大提高,同时提出了一个修正的KCF算法对多船舶目标进行跟踪,较好地解决了目标漏检与重复统计的问题。对大量船舶目标样本进行训练学习后,船舶检测定位精准,检测成功率达到91%以上,船舶跟踪算法快速稳定,检测与跟踪算法达到30帧每秒,船舶目标流量统计准确率达到95%以上,整个系统框架满足实时性的要求。
关键词:船舶跟踪; 船舶检测与统计; 深度学习; 水上交通
中图分类号: U664.121
文献标志码: A
Abstract:The research on ship tracking from video surveillance plays a vital role in improving the intelligence of maritime safety regulation. We applied a deep learning method-SSD to detect and locate ship targets, then proposed a modified KCF algorithm to track and count these targets. By introducing deep learning methods, the accuracy of ship detection is greatly improved comparing with the traditional methods. An improved KCF algorithm can realize to track more than one ships. It solves the problem of ship detection and statistics and without missing. Benefits from the modified KCF algorithm, omission and duplication failure are effectively relieved while maintaining real-time processing speed. According to the experiments we performed, the accuracy of traffic flow data reaches 95%.
Key words:Ship tracking; Ship detection and statistics; Deep learning; Water traffic
0 引言
船舶目标跟踪与流量统计是水上交通智能化研究的一个重点,一直以来都是以雷达及AIS系统作为水上船舶目标管理信息化的主要手段;近年来由于水上高清视频监控发展的越来越快,视频图像更加让监管人员能直观地了解现场情况,有利于现场事故救援,方便违规事件调查取证等,所以基于视频图像的智能监管系统也越来越受到水上监管部门的重视。目前在国内外对船舶航道方面的智能监控平台并不多见,但由于水上交通运输量大,运费较陆上便宜,水上交通也日渐繁忙,因此建立一套能够对船舶检测、跟踪、统计及识别等智能化的视频监控平台,对减少交通事故,保障航行安全,提高信息化和智能化水平有着深遠的意义和广阔的前景。
1 船舶目标跟踪与流量统计概况
目前在这方面研究有,王江等[1]提出了利用摄像机成像模型构建像平面与世界坐标变换关系来测量运动船舶目标参数,并使用了一种基于优化Vibe的背景更新方法来实现船舶检测和跟踪,但该方法对摄像机参数依赖程度高,船舶目标检测容易受到光照变化影响;蔡丹等[2]在混合高斯模型的基础上进一步对背景更新进行了改进来检测船舶目标,然后使用卡尔曼滤波及Camshift算法进行船舶跟踪,但对于多目标跟踪及天气变化的适应性不强;王培玉[3]等提出了一种复杂码头环境下的船舶检测与跟踪,首先是采用Canny算子提取水岸边界,然后针对水域进行船舶目标检测,这种算法容易出现对小目标漏检或者误检的情况。以上都是目前在船舶目标检测跟踪研究方面的传统图像处理做法,基本上是建立在背景差分割目标的基础上[4,5],这类算法有一个重要的缺陷,就是水面不是一个静态的背景,波浪及水面反射都在时刻发生变化,因此背景差方法虽然在陆地交通车辆检测跟踪方面获得了较大的成功,但在水上的应用就难以取得令人满意的成果,受光照变化、水波变化影响较大,跨场景应用鲁棒性较差。周靓[6]在航道监控中船舶的检测与跟踪文中使用了河面网格直方图为特征并进行支持向量机训练得到船舶目标定位,提出了机器学习的方法对船舶进行检测,虽然比传统的背景差算法更具鲁棒性,但仍然出现受岸边背景影响导致误检的情况;王贵槐等[7]在无人船上安装摄像头来对采集图像对前方船舶的检测,采用深度学习的方法来针对船舶样本进行训练和检测,经过测试在晴天、阴天及傍晚等情况下都有较高的查准率,深度学习能够通过大量船舶样本训练出船舶的特征,能很好的区分岸边及水纹等背景物体,且受光照变化影响较低,所以深度学习是解决水上船舶目标检测的一个重要突破手段。
近年来机器学习发展迅猛,深度学习更是在图像视频处理上取得了惊人的成就[12],为了避开传统方法的不足,本系统重点在深度学习上进行船舶目标检测及跟踪上的研究,首先使用SSD深度学习对船舶目标进行学习训练,当训练达到一些批次后收敛得到船舶目标检测网络模型,通过网络模型便可以进行船舶定位检测[7],然后再通过KCF跟踪方法来进行船舶目标跟踪[8],但在多船舶目标跟踪上KCF容易发生目标丢失以及邻近目标跟踪框匹配错误等问题,系统采用修正的KCF跟踪方法,解决了船舶目标跟踪目标丢失及匹配错误等问题,大大提高了船舶流量统计的准确率。
2 基于深度学习的船舶目标检测模型
船舶目标检测是指在输入图像中识别并提取出船舶对象,性能良好的目标检测算法将为后续的目标跟踪以及流量统计提供坚实的基础。基于深度神经网络的SSD(Single Shot Multibox Detector, SSD)算法[9]是非基于区域推荐的目标检测算法的代表,是目前检测速度和检测效果最好的算法之一[13],具有很强的实时性,因此系统将采用SSD算法来构建船舶目标检测模块。
2.1 SSD模型结构
SSD网络是一个端到端(End to End)的深度卷积神经网络,将目标检测和分类集成到一个网络中。SSD网络结构如图1所示。
SSD网络前半部分特征提取网络,通过改造作为图像分类优秀架构的VGG-16[10]来构建,同时为了充分利用不同层包含的信息,特征提取网络还将不同深度的多个层的特征图都送入后半部分的预测网络,从而实现多尺度特征提取;SSD网络后半部分是由卷积层构建的预测网络。预测网络不再采用全连接层与层构建分类器的经典设计,而全部取替为由一组大小为3×3×P的卷积核所构成的卷积层(假设输入的特征图的尺寸为M×N×P)。采用核大小为3×3的卷积核可限制预测网络的感受野在卷积核的感受野中,从而避免受到关注区域之外的信息的干扰,引入噪声导致偏差[11]。预测网络输出每个候选框对应的四个坐标偏移量和可能属于的每一个物体类的概率预测值(设共有C类),即一个(C+4)维的预测向量。
SSD网络训练时先进行前向传播,即依次进行特征提取,在特征图的每个像素位置生成一组候选框并与标签信息中的真实框进行匹配,预测网络计算出匹配成功的候选框的预测向量;然后计算联合损失函数,进行反向传播,调整各层权重参数。
2.2 SSD算法运行过程
SSD算法会在进行预测的每一张特征图的每一个像素位置上生成一组候选框,然后让预测网络在此基础上预测对应的位置偏移量和类别概率,从而实现对候选框的修正,让它更加贴合真实目标所在的位置。这样就避免设立一个独立的RPN网络,对于提升网络运行效率和性能有很大帮助;
同时并非所有的候选框会被都送入预测网络进行位置偏移预测,而是先将这些候选框与真实框按照一定匹配策略进行匹配。匹配策略就是:以两者的IOU作为匹配标准,如果IOU高于一定阈值就认为匹配成功,视为正样本,否则视为匹配失败,视为负样本,而只有正样本才会被送入预测网络进行训练。
2.3 损失函数
SSD网络将对于每一个默认框的目标位置偏移预测和类别概率预测都视为回归问题,用一个多任务损失函数将两者的损失联合起来。其中采用了smoothL1损失函数作为位置损失函数,采用损失函数作为置信度损失函数,并使用权重因子α来平衡两者的比例,避免任一部分所占比例过大。联合损失函数如公式(1)所示。
使用脊回归加上贝叶斯修正能使得算法对物体的追踪效果提高一定的准确度。由于在实际的应用当中,在远距离观测下船舶的行驶速度是相对较慢的,所以追踪算法在应用在船舶方面会取得较好的效果,主要原因是因为船舶行驶速度慢,使用追踪算法在前一帧采样出来的样本会有比较好的性质,训练出来的分类器会精度会更高。
4 KCF跟踪修正及船舶跟踪统计流程
由于KCF跟踪窗口是固定不变的,而随着船舶的运动,船体在逐渐增大或者减小,误差逐渐累计会导致KCF跟踪失败,目标框发生漂移,无法精准匹配跟踪目标船舶。为了解决这一问题,我们提出了跟踪修正的方法,具体整个跟踪及統计流程图如图2所示:
1.视频初始化:视频初始化就是读入视频的一个开始流程,把视频序列的具体帧图片抽取出来,用来作为算法处理的数据;
2.SSD检测:根据上述SSD的算法进行船舶目标检测,返回目标数量、位置等参数,形成“当前跟踪目标列表”;
3.KCF跟踪:根据KCF原理对SSD检测到的船舶目标进行跟踪;
4.跟踪修正:修正条件,在文中我们是每隔100帧对跟踪目标进行一次修正,即对帧数N进行取模运算,当N%100=0时,则进行修正,修正过程是使用SSD算法对当前帧重新进行目标检测,得到一个“最新目标列表”,然后将“最新目标列表”与“当前跟踪目标列表”中的目标对象进行匹配去重。具体而言就是从“当前跟踪目标列表”中取出一个目标A,计算其与“最新目标列表中”所有未匹配的新目标对象的交并比,使得交并比最大的新目标称为目标B,然后将目标A的目标信息更新为目标B的目标信息,调整目标跟踪窗口的大小以及位置,从而修正KCF跟踪过程中产生的误差。同时将目标B设为已匹配,不再参与后续的匹配过程。
5.流量统计:在船舶航行的航道中设置一条检测线,当跟踪的船舶目标的中心点经过检测线时,即中心点与检测线的距离小于某个阈值,便给跟踪目标打上已统计的标签,同时统计船舶数量。
通过上述步骤进行了KCF跟踪修正,让跟踪框能更适应目标大小的变化,让跟踪框能精确的跟随船舶目标移动而不发生漂移及匹配错误,有了准确的船舶目标跟踪,从而使得目标流量统计更精准。
5 实验及结果
5.1 SSD检测算法实验
为了提升SSD检测算法在实际河道图像上的检测效果,我们准备了针对性的数据集,并将SSD算法检测的物体类别数目设为1,即只检测船舶目标。
我们的数据集是从实际的河道采集的,包含多种天气条件下(阴天、晴天等),多种拍摄距离(远景,近景)下的图像,具有足够的场景丰富性。数据集总共有8 000张图片,其中训练集有6 500张,测试集有1 500张。数据集样本示例如图3所示。
经过多次反复调参和训练,最终模型的性能指标如表1所示。
性能指标参照SSD算法论文中衡量模型的指标[9],由于我们采用针对性的数据集,并且检测的目标的类别只有船舶一类,所以我们的检测性能略好于SSD算法论文中的实验结果。
直观地,从检测效果图4和图5可见,大部分的船舶目标都能被检测出来,同时候选框能够紧密贴合船舶目标,检测效果良好,精确率达91%以上。
当雾天等不良气象条件使得图像中的船舶特征变得模糊,使得检测效果下降;采用广视角拍摄方式采集河道图像时,距离较远的船只在图片上所占的像素范围较小,会让算法难以判定船舶目标的存在,同样会使得检测效果下降。以上两者是误检、漏检的两大原因,如图6所示。
5.2 KCF跟踪算法与跟踪修正实验
采用修正流程对KCF算法进行改进以提高跟踪效果。即先使用SSD算法获取船舶目标初始位置,然后启用KCF算法进行跟踪,每跟踪100帧之后使用SSD算法重新检测并进行跟踪修正。同时,对于一些可能碰到的问题,我们添加了如下的修正规则:
① 由于检测过程中有可能有新的目标进入检测区域,我们将未被KCF追踪的目标匹配的新检测到的船舶视为新出现的目标船舶,也将这些目标框输入KCF进行追踪。
② 由于SSD也存在误检的情况,我们也设计了一些逻辑进行预先判断,比如如果目标船舶的长度小于阈值就不进行跟踪处理(可能目标过小无法跟踪),如果SSD新检测到的目标船舶被KCF中的目标覆盖,则可能是SSD误将大船检测成多艘小船,这种情况也直接丢弃。
使用修正后的KCF算法对测试视频的前25 000帧进行连续跟踪,视频中出现每一个船舶目标都分配了唯一的编号,并将每一帧的目标中心点都打印在图片上,中间一帧結果图如图7所示。
从图中可以看出目标编号始终保持一致,没有发生编号对调等前后不一致的情况;每一艘船都有一条自己的完整的历史轨迹,表明能够稳定地追踪目标;同时候选框能够紧密贴合船舶目标。
5.3 流量统计实验
在跟踪的基础上,流量统计就相对容易,我们先在合适位置手动设置虚拟检测线,如果目标船舶中心点与检测线的距离小于阈值,则说明有船经过,我们只需要将该船标记为已计数的船并更新流量统计信息即可。同时,我们既然已经知道了船的运动轨迹,也可以通过速度方向判断船的行驶情况,分为上水和下水分别进行统计。为了展示流量统计结果,选取流量统计测试视频中的某一帧及一分钟后的另一帧实验图片展示如图8所示。
随着船舶不断运动,计数器的值也发生相应变化,实现了准确的流量统计,准备率达95%以上。
6 总结
本系统是基于机器学习的图像视频船舶目标跟踪与统计,过程中首先使用深度学习SSD目标检测的方法对船舶目标进行精确的定位,然后使用修正的KCF来进行目标的跟踪以及统计,解决了跟踪过程中目标不稳定以及统计漏检与重复计数的问题;实验中取得了较好的效果,船舶目标在远处及近处都能精确检测,并且每条船舶都标号进行稳定跟踪,跟踪过程标号不会改变,这样有效的保证了目标统计的准确性。
从实验结果来看,深度学习在水上交通目标智能检测方面的应用效果是远远胜于传统的检测方法,而且它对光照不敏感,跨场景应用能力强,不会受到岸边环境以及水波浪变化的影响,稳定性高,这些优点是传统的图像处理方法所不能达到的,所以深度学习在水上监管领域上有着广阔的应用前景。
参考文献
[1] 王江,廖娟,陈星明,等.运动船舶参数视频检测算法[J].南京大学学报(自然科学),2015,51(2):227-233.
[2] 蔡丹,段先华,高海壮.水上运动船舶的检测与跟踪[J].计算机与数字工程,2017,45(7):1313-1317.
[3] 王培玉,李 峰,周书仁等.复杂码头环境下的船舶检测与跟踪算法[J].计算机工程与科学,2017,39(5):992-998.
[4] Kryjak T, Komorkiewicz M, Gorgon M. Real-time background generation and foreground object segmentation for high-definition colour video stream in FPGA device[J]. Journal of Real-Time Image Processing, 2014, 9(1): 61-77.
[5] 刘龙. 基于海事监控平台的船舶目标检测与自动跟踪系统的研究[D].长沙:湖南大学,2014.
[6] 周靓. 航道监控中船舶的检测与跟踪[D].南京:南京理工大学,2012.
[7] 王贵槐,谢朔,初秀民,等.基于深度学习的水面无人船前方船只图像识别方法[J]. 船舶工程,2018,40(4):19-22.
[8] Henriques J F, Caseiro R, Martins P, et al. High-speed tracking with kernelized correlation filters[J]. IEEE transactions on pattern analysis and machine intelligence, 2014, 37(3): 583-596.
[9] Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]. European conference on computer vision. Springer, Cham, 2016: 21-37.
[10] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.
[11] 翁昕. 目标检测网络SSD的区域候选框的设置问题研究[D].西安:西安电子科技大学,2017.
[12] 周俊宇,赵艳明.卷积神经网络在图像分类和目标检测应用综述[J].计算机工程与应用,2017,53(13):34-41.
[13] 李旭冬,叶茂,李涛.基于卷积神经网络的目标检测研究综述[J].计算机应用研究,2017,34(10):2881-2886.
(收稿日期: 2019.11.08)