基于网格化的船舶航迹异常检测算法
2019-03-28刘亚帅管志强
刘亚帅,曹 伟,管志强
(中国船舶重工集团公司第七二四研究所,南京211153)
0 引 言
由于海上异常军事目标的航迹多表现为位置异常与航向异常,所以为了能够检测出异常航迹,识别出异常船舶,需要首先构建出正常船舶航路的位置与航向模型,然后在此模型下与待检测航迹进行对比检测。
当前,船舶自动识别系统(Automatic Identification System,AIS)[1]的广泛应用为基于 AIS数据构建正常船舶航路模型及检测异常航迹提供了海量数据储备。纵观国内外基于AIS数据对航路建模的研究,多基于单一目标的小样本进行。例如,Pallotta等[2]采用改进后的 DBSCAN (density⁃based spatial clustering of appli⁃cations with noise)聚类算法进行航道挖掘,Guillarme等[3]采用轨迹分割聚类的方法实现轨迹数据的聚类,Osekowska 等[4⁃6]将势场的概念应用于船舶航道的提取,宁建强等人[7]采用一种细粒度网格化的方法对海上船舶航道进行提取。这些方法在海量数据背景下都会导致样本描述整体出现偏差的可能性增大,甚至发生错误和遗漏[8]。
为了基于海量AIS数据实现正常船舶航路的建模,从而实现异常航迹的检测,本文提出了一种基于网格化的船舶航迹异常检测算法。该算法首先采用了一种网格化压缩方法对原始航迹进行压缩处理,去除冗余数据;然后基于网格化重构了航迹方向属性,为压缩后的航迹增加了方向属性;之后采用分类处理的思路和变阈值设计方法实现了航路建模;最后设计了一种基于滑窗检测的方法,实现了异常航迹的检测。实验结果表明,该算法可以有效实现部分类型的异常航迹检测。
1 异常检测算法的总体架构
本文基于网格化的船舶航迹异常检测算法的总体架构,如图1所示。
图1 船舶航迹异常检测算法总体流程
由于从数据库中抽取的原始AIS数据存在大量噪声信息,所以本文首先通过从MMSI(Maritime Mobile Service Identity)号及经纬度角度对其进行筛选去噪。
定义1空窗期
由于主观或客观环境的干扰导致目标离开监控窗口,监测仪器在一段相当长的时间内丢失对这个目标的跟踪,而且在再次跟踪到该目标时无法忽略中间缺失过程产生的误差。这段缺失过程就是该目标的一个空窗期。
由于同一MMSI号的航迹存在多个空窗期,为了满足后续网格化压缩处理中对轨迹数据连续性的要求,需要将同一MMSI号对应的AIS数据根据空窗期分割成若干连续的航迹,即航迹切割。
2 网格化航路建模
为了基于海量AIS数据实现正常航路的建模,本节通过以下3步进行处理:
(1)为了从海量AIS数据中提取出有用的航迹信息,去除冗余信息,本节提出一种网格化压缩的方法直接剔除了航迹数据中的冗余信息,提取出航迹数据中的有用信息;
(2)由于压缩后的航迹缺失了航迹的航向属性,而后续异常检测过程需要航向信息,所以本节基于网格化为航迹重构了航向属性;
(3)在上述两步的基础上,本节在重构的8个航向上分别建立了8个航向上的航路模型。
2.1 网格化压缩
定义2网格化压缩方法
如公式(1)所示,已知一条连续的航迹是S,其中(loni,lati)是航迹S的第i个航迹点的经纬度坐标;然后,通过坐标变换,使得(lon′i,lat′i)等于航迹点(loni,lati)所在网格中心点的坐标,从而形成航迹S′;最后,对航迹S′按照点迹的先后顺序进行去重压缩,最终得到压缩后的航迹S″,而且n>m。
网格化压缩具体操作流程如下所述:
(1)如图2所示,对研究区域W根据经纬度值划分成大小为step的网格(图中A′是A的放大);
(2)将落在网格中的所有航迹点的经纬度坐标都压缩成为网格中心点的经纬度坐标(对于落在网格边界线上的点统一移到左侧或上侧的格子中),即将所有落到A′格子中的点都压缩到中心点处;
(3)将每一条连续的航迹按照时间属性(UDT_TM)进行排序,并对经纬度采用一阶差分的算法进行计算;
(4)将经纬度差分为零的点去掉,至此实现了网格化压缩。
图2 网格化压缩过程图
2.2 航向属性重构
定义3航向属性重构规则
设初始轨迹点为P0(Lon0,Lat0),下一轨迹点位置为P1(Lon1,Lat1),根据矢量的定义法则,P0点的矢量方向(Lon1⁃Lon0,Lat1⁃Lat0)。 图 3 是一个九宫格编码格,9号格为初始轨迹点P0,下一轨迹点P1将会落到剩余的轨迹格中的任意一个格中,则P0的方向编码为P1点落到的格子对应的编码号。
图3 九宫格编码图
在定义3的基础上,首先假设一条航迹(如图4所示),则轨迹点a的轨迹方向编码为7,轨迹点b的轨迹方向编码为2,轨迹点c的轨迹方向编码为1。这样这条轨迹方向的整体编码形式就是7⁃2⁃1。依此原理对所有压缩后的点迹进行航向属性重构。
图4 假设轨迹图
2.3 正常航路建模
为了便于后续从不同航向角度对航迹进行异常检测,本节首先按照重构的航向属性的8个编码值将航迹数据分成8个数据集,之后在每个数据集上分别建立该航向上对应的航路模型,以此实现不同航向上的航路建模。具体算法流程如图5所示。
图5 正常航路建模流程图
定义4核心密度网格
在网格密度值计算中,一般直接对每个网格中点迹数量进行计数从而作为其相应的密度。同时规定,若某个网格中的点迹数(即网格密度)大于等于设置的密度阈值,则该网格被称为核心密度网格,否则称为噪声网格。
定义5密度阈值设置方法
设航向i(i=1,2,…,8)上的网格密度值集合为DIi(Di1,…,Dij,…,Din),其中Dij是航向i上的第j个网格中的密度值(Dij>0),则如公式(2)所示,其中μi为航向i上的网格密度值的均值,σi为航向i上的网格密度值的标准差,TDi为航向i上的密度阈值,m为一个系数(m>0)。
由于本文是通过提取核心密度网格作为正常航路模型,所以需要设置密度阈值来过滤噪声网格。因为重构的8个航向上的数据分布存在差异,为了适应不同航向上数据分布的特点,本文采用定义5的方法分别设置不同航向上的密度阈值TDi,之后通过阈值判决实现不同航向上的航路建模。
诗意美是《雨巷》最为突出的特点之一。“艺术作品的形式美,归根结底,也正是这样一种生命感应的产物”。诗歌作为一种充满艺术性的作品形式,与其他体裁相比,简洁而又含蓄,却能将作者的心绪、感受完美地诠释;精练的语言,短小的篇幅,却能引人遐想。
3 航迹异常检测
本文采用的异常检测流程如图6所示。
图6 异常检测流程图
为了便于航迹与航路模型对比,首先需要对航迹也进行网格化压缩及航向重构,其压缩方法和航向重构方法与航路建模中的一致。之后设置滑窗大小为N2,对滑窗内的航迹采用滑窗异常检测方法进行检测(见定义 6)。
定义6滑窗异常检测方法
首先采用滑窗N2对航迹按照时间顺序截取矩阵A,其中矩阵A中航迹所在位置的元素值为1,其余位置的元素值为0(如图7所示)。同时采用滑窗分别对8个模型截取矩阵B1至B8,其中Bm矩阵对应模型中核心密度网格的元素值为α(α>0),其余元素为β(β<0)。
图7 窗口截取矩阵过程
如公式(3)所示,其中P为整个滑窗中的航迹异常度,M是模型的个数,本文中取M=8,N是滑窗的大小,ωm中是每个模型输出异常度的权值,fm(Ym)是一个sigmoid函数,其输出值是每个模型对应的异常度,Ym是矩阵A与矩阵Bm点乘之后并求和的结果。
通过比较滑窗内的航迹异常度P与异常度阈值ThP来检验滑窗内的航迹是否异常。当P低于ThP时表示航迹异常,则结束检测并输出异常;当P高于ThP时表示航迹正常,则进一步判断该条航迹是否已检测完成,如果检测完成,将结束检测并输出正常;如果未检测完成,将向下一时间节点处移动滑窗继续检测,依次循环直到检测完成。
4 实验过程及结果分析
4.1 实验环境及数据
本实验使用的是基站采集的厦门港口海域近一个月的AIS数据,其总量达到300 496 123条数据。
4.2 实验结果分析
4.2.1 网格化压缩效果分析
本文采用 0.02°×0.02°网格进行划分,这样既可以充分压缩又不会丢失转向信息。由于数据量太大,受硬件平台的限制,无法对原始数据进行一次性压缩,所以将1个月的数据分割成3个数据集分别进行处理。表1所示是3次数据压缩的效果,其压缩的倍数都在250~300倍之间。
表1 数据压缩效果表
4.2.2 航迹异常检测效果
本实验中采用表1中的前20天数据构建航路模型,采用最后10天数据进行航路检测。参数设置:航路模型构建中,密度阈值设置中(即公式(2)中)的m=0.3;异常检测中α=1,β=-1,ωm=1 且ThP=0.5。 实验中通过对这10天中较长的3 018条待检测航迹进行异常检测,检测出38条异常航迹,检测过程耗时63.86 s。其中较明显异常航迹有26条,图8所示是其中部分异常航迹。
图8 部分异常航迹展示
图8(a)~(d)中船舶航迹发生异常转向问题,尤其是图8(a),所以该类异常航迹主要表现为转向异常;图8(e)中正常船舶不可能在短时间内发生如此大的位移,所以该类异常航迹表现为伪装异常;图8(f)~(h)由于航迹进入异常区域,所以该类异常表现为区域异常。
除了以上图8中检测出来的异常,实验中还将部分正常航迹误判为异常航迹(如图9所示)。这主要是由于基站雷达存在威力范围,在雷达威力边缘区域收集的AIS数据较少,使得其航迹密度值较低,很容易将其误判成噪声区域,从而使得部分航行到该区域的正常航迹误判成异常航迹。
图9 部分误判航迹展示
5 总结及展望
为了基于海量AIS数据实现正常船舶航路的建模,从而实现异常航迹的检测,本文提出一种基于网格化的船舶航迹异常检测算法。该算法针对原始AIS数据中存在冗余信息并严重影响后续处理效率和航道模型建立的问题,提出了一种网格化压缩方法,有效去除了航迹数据中的冗余数据,提高了海量数据处理的计算效率。由于压缩后的航迹数据缺少航向信息,不利于后续异常检测中航向的检测,本文在网格化的基础上重构了船舶航向属性,为压缩后的航迹增加方向属性,同时也有效去除了原始航迹中航向抖动的问题,为后续航向异常检测提供条件。之后本文采用分类处理的思想在重构的8个航向上分别构建正常航路模型,为异常检测提供了模型条件。最后本文借助构建的8个航向的正常航路模型采用一种滑窗检测方法,通过计算滑窗内航迹的异常度实现最终的航迹异常检测。实验结果显示可以有效提取出部分类型的异常航迹。该算法为船舶航迹异常检测提供了一种算法支持。
本文虽然可以检测部分类型的异常检测,但是对于超出雷达威力范围的航迹容易出现误判,尤其当密度阈值TDi选取较大时越发明显;同时由于异常检测阈值ThP是一个经验值,不便于后续迁移到其他数据进行应用,所以需要进一步阈值的设置进行实验探索研究及理论证明。