一种基于机器学习的船行波快速自动识别方法及装置
技术领域
本发明涉及船行波形,具体涉及一种基于机器学习的船行波快速自动识别方法及装置。
背景技术
目前对船形波研究仍处于初期阶段,不同大小,吃水和水深所产生的船行波形有所不同,如何从风浪背景中分离出船形波特征并识别是目前难点。如图1所示,研究表明,船形波呈现一种Kelvin船行波结构,主要分为横向波(transverse wave)和离散波(divergent wave)。离散波边缘和航线方向成约19度82分的夹角。
研究发现,在固定测点测量过往船只形成的船形波谱有一些显著的特征,包括和横向波和离散波对应的波谱结构,以及一些船舶导致的非线性波对应的谱结构(见图2)。通过这些特征肉眼能很清晰地从风浪背景中分辨出船行波。
目前的船只自动识别方法成本均较大,传统的船舶识别的方法基本集中在光学影像识别技术和安装船舶自动识别系统(Automatic Identification System,简称AIS系统)来实现。图像识别主要有基于光学成像和遥感图片的识别技术,不论是光学成像还是遥感图片,其成像成本均比较高,识别成功率不足94%(Liu,et al.,2021)。安装AIS系统除成本较高之外,它是一种主动识别机制,在关闭AIS系统情况下无法记录其轨迹,为一些主观逃避检测行为提供机会。
发明内容
为了解决上述背景技术所存在的至少一技术问题,本发明实施例提供了一种基于机器学习的船行波快速自动识别方法及装置。
为实现上述目的,本发明采用如下技术方案:
第一方面,本发明实施例提供了一种基于机器学习的船行波快速自动识别方法,包括:
步骤1:获取需识别的波谱数据,并将该波谱数据输入至船行波识别模型中;
步骤2:船行波识别模型识别出该需识别的波谱数据是否是船行波;
步骤3:将经识别的波谱数据更新至船行波识别模型,以不断学习更新船行波识别模型的识别能力;
步骤4:重复上述步骤1-3。
进一步地,所述船行波识别模型通过如下方式建立:
获取船形波水面波动数据,并将该数据变换为波谱数据,再利用船行波谱特征,识别船行波过程,对船行波和非船行波分别进行标记,作为模型训练样本;
利用标记好的训练样本对多层感知器模型进行训练,样本训练前,需进行正则化变换训练完毕后固化模型,得到船行波识别模型。
进一步地,所述多层感知器模型包括2个隐藏层,第一层5个神经元。
进一步地,所述获取船形波水面波动数据,并将该数据变换为波谱数据包括:
原始数据为压力式传感器采集的波面压力变化数据,采样频率为2Hz,通过压力与水深变化关系转换为水面波动时间序列数据;
以20分钟为时间窗口对水面波动时间序列进行分段处理,通过短时傅里叶变换转换为波浪谱数据。
进一步地,所述短时傅里叶变换主要参数取值为汉明窗参数为20s,15s窗口叠加,得到分辨率为5s×0.05Hz的波谱数据。
进一步地,所述压力与水深变化关系为H=P/ρg,H为水深,P为该水深出测得的压力值,ρ和g分别为水的压力和重力加速度。
第二方面,本发明实施例提供了一种基于机器学习的船行波快速自动识别装置,包括:
数据获取模块,用于获取需识别的波谱数据,并将该波谱数据输入至船行波识别模型中;
识别模块,用于存储船行波识别模型,以通过船行波识别模型识别出该需识别的波谱数据是否是船行波;
更新模块,用于将经识别的波谱数据更新至船行波识别模型,以不断学习更新船行波识别模型的识别能力。
进一步地,所述船行波识别模型通过如下方式建立:
获取船形波水面波动数据,并将该数据变换为波谱数据,再利用船行波谱特征,识别船行波过程,对船行波和非船行波分别进行标记,作为模型训练样本;
利用标记好的训练样本对多层感知器模型进行训练,样本训练前,需进行正则化变换训练完毕后固化模型,得到船行波识别模型;
所述多层感知器模型包括2个隐藏层,第一层5个神经元。
进一步地,所述获取船形波水面波动数据,并将该数据变换为波谱数据包括:
原始数据为压力式传感器采集的波面压力变化数据,采样频率为2Hz,通过压力与水深变化关系转换为水面波动时间序列数据;
以20分钟为时间窗口对水面波动时间序列进行分段处理,通过短时傅里叶变换转换为波浪谱数据;
所述所述短时傅里叶变换主要参数取值为汉明窗参数为20s,15s窗口叠加,得到分辨率为5s×0.05Hz的波谱数据。
进一步地,所述压力与水深变化关系为H=P/ρg,H为水深,P为该水深出测得的压力值,ρ和g分别为水的压力和重力加速度。
本发明的有益效果在于:
本发明通过利用机器监督学习,通过压力式或者声学式波面测量仪器,在固定点采集船行波造成水面波动的时间序列数据,通过大量样本训练得到船行波识别模型,可以精准识别过往船只。训练样本采集多样性,该模型可以识别不同类型、不同船舶运动状态和不同风浪背景下的船行波。
附图说明
图1为Kelvin船形波结构图;图中,黑实线代表离散波和横向波系统的波峰线。虚线代表船形波边缘;
图2为为穿行波能量分析图;
图3为单隐藏层多层感知器网络示意图;
图4为本实施例提供的基于机器学习的船行波快速自动识别方法的主要步骤流程图;
图5为MLP和SVM学习曲线比较图;
图6为本实施例提供的基于机器学习的船行波快速自动识别方法原理图;
图7为test3中随机打乱后样本示例图;
图8为test4中随机打乱后样本示例图;
图9为快速傅里叶变化后的水面波动谱数据示例图;
图10为本实施例提供的基于机器学习的船行波快速自动识别装置的组成示意图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述:
机器学习发展迅速,通过对大量数据的监督学习,机器学习方法能学会某种特定事物的特征,学习完后能独立识别该事物,已经在汽车自动驾驶和人脸识别等场景下广泛应用。机器学习按照是否需要输入被标记的样本来训练模型可以分两类:监督学习和无监督学习。本发明实施例所用到的监督学习方法目前已经发展了许多模型:线性模型,支持向量机,决策树模型和多层感知器(MLP)模型等。多层感知器模型是基于人脑神经模式发展的(Kamranzad et al.,2011),是一种前向结构的人工神经网络,映射一组输入向量到一组输出向量。如图3所示,MLP可以被看作是一个有向图,由多个的节点层所组成,每一层都全连接到下一层。除了输入节点,每个节点都是一个带有非线性激活函数的神经元(或称处理单元)。一种被称为反向传播算法的监督学习方法常被用来训练MLP。多层感知器遵循人类神经系统原理,学习并进行数据预测。它首先学习,然后使用权重存储数据,并使用算法来调整权重并减少训练过程中的偏差,即实际值和预测值之间的误差。主要优势在于其快速解决复杂问题的能力。多层感知的基本结构由三层组成:第一输入层,中间隐藏层和最后输出层,输入元素和权重的乘积被馈给具有神经元偏差的求和结点,主要优势在于其快速解决复杂问题的能力。它可以学习非线性函数样本来识别有n个特征向量的事务。
实施例1:
参阅图4所示,本实施例提供的基于机器学习的船行波快速自动识别方法主要包括如下步骤:
步骤1:获取需识别的波谱数据,并将该波谱数据输入至船行波识别模型中;
步骤2:船行波识别模型识别出该需识别的波谱数据是否是船行波;
步骤3:将经识别的波谱数据更新至船行波识别模型,以不断学习更新船行波识别模型的识别能力;
步骤4:重复上述步骤1-3。
具体地,该船行波识别模型通过如下方式建立:
1波浪谱数据采集分析
收集波面数据,通过短时傅里叶变换(参考matlab中spectrogram函数)得到船行波谱数据,再利用船行波谱特征,人为识别船行波过程,对船行波和非船行波分别进行标记,作为模型训练样本。
为了识别清晰,水面波动数据采样频率需达到2Hz;水面波动谱转换时间和频率分辨率要达到5s×0.05Hz,这样才能保证识别正确率在92.5%以上。训练和识别的数据应采用一样的观测频率和谱转换参数。
2训练机器学习模型
利用标记好的样本对多层感知器(MLP)模型进行训练,样本训练前,,训练完毕后固化模型,从而得到船行波识别模型。本次船形波自动识别所用的MLP模型为2层隐藏层,第一层有五个神经元节点,第二层有2个神经元节点,分层数量和神经元数量要通过试算得到合适的组合,避免过度拟合出现。通过输入已经识别的船形波谱数据进行训练,得到能自动识别船行波的固化模型。如图5所示,通过交叉验证,本次船形波自动识别所用的MLP模型平均精度可以达到95.42%,再训练样本数为750个左右时,该精度已经基本稳定。
具体地,上述获取船形波水面波动数据,并将该数据变换为波谱数据包括:
原始数据为压力式传感器采集的波面压力变化数据,采样频率为2Hz,通过压力与水深变化关系转换为水面波动时间序列数据;该压力与水深变化关系为H=P/ρg,H为水深,P为该水深出测得的压力值,ρ和g分别为水的压力和重力加速度。
以20分钟为时间窗口对水面波动时间序列进行分段处理(以20分钟为时间窗口分段观测数据能有效保障船行波在截取的时间段之中),通过短时傅里叶变换,转换为波浪谱数据。短时傅里叶变换主要参数取值为:汉明窗参数为20s,15s窗口叠加,能得到分辨率为5s×0.05Hz的波谱数据。如此,即可以准确有效地获取得到波谱数据。
大量波动过程都是普通风浪背景过程,浪高都较小,为了避免大量同类型波动过程的重复训练,将波高最大值不超过0.25米的波动过程剔除。
如此,通过上述步骤,即图6所示所建立的船行波识别模型能够准确、高效地识别出船行波。
下面结合4组测试实验来进行上述船行波识别模型对谱的敏感性分析:
一结论
一共做了4组测试试验,test1和test2通过控制谱的时间和频率的分辨率,来检验识别模型对不同分辨率波谱的正确率;test3和test4通过在原波谱的基础上自制波谱,来检验模型的识别正确率;
基本结论:
1从test1-2可知,模型对分辨率的敏感性不大,从分辨率10*201到191*201,识别正确率在0.902~0.925之间。
2从test3-4可知,自制的两个谱作为样本可以看出,错误率分别为11.96%和17.06%,比test1-2的结果稍偏大。
二试验步骤
前面已经得出结论,多层感知器模型(MLP)方法识别短时傅里叶变换波谱(Spec_STFT)数据,识别准确率最高,所以敏感性分析主要考虑MLP和Spec_STFT的结合。
短时傅里叶变换用窗函数(window),各段之间重叠的采样点数(Noverlap)和计算离散傅里叶变换的点数(Nfft)来控制Spec_STFT时间和频率的分辨率。三个参数间的设置相互影响,为了讨论波谱分辨率的敏感性分析,采取只改变window长度,Noverlap=window-10 or Noverlap=window/2,Nfft=window来设计敏感性试验。
交叉验证最终识别率
自制谱数据试验:
test3
样本制作方法:采用test中window=300的算例,波谱的分辨率为t201*f151,将每行的的每个时间的值随机打乱,如图7所示,波谱的云图则由变成图中的中间子图变成底部子图形式。新的到的伪波谱用test1中的样本训练的模型来识别,总数2726个样本,326个被错误识别为船行波的波谱,错误率为326/2726=11.96%,
test4
样本制作方法:采用test中window=300的算例,原波谱的分辨率为t201*f151。将下半部分分为三个部分,从左至右为别标记为a1,a2,a3,再按照a3,a1,a2的顺序重新排列,最后矩阵上下倒置,具体如图8所示。
新的到的伪波谱用test1中的样本训练的模型来识别,总数2726个样本,465个被错误识别为船行波的波谱,错误率为17.06%。
由此可见,本实施例所建立的船行波识别模型的识别准确率高
本实施例所提供的方法可适用两种不用的应用场景:1实时波浪谱识别;2波浪谱数据后识别。两种场景使用波谱识别技术一致,只是涉及到前端数据处理方法有所不同。
在实施船只识别区域安装实时波浪观测系统,压力式波浪监测,采样频率至少2Hz。波浪采集系统以主航道距离可以在500-1000m(距离主航道越远,主航道上小型船舶所产生的较小船行波被准确识别的几率更小)。通过接收波面压力信息,按固定时间窗口分段,转换为连续的波浪谱数据。
本试验采用珠江口采集的船行波数据为实例样本进行分析。
步骤1:训练样本准备
1、原始数据为压力式传感器采集的波面压力变化数据,采样频率为2Hz,通过压力与水深变化关系(H=P/ρg,H为水深,P为该水深出测得的压力值,ρ和g分别为水的压力和重力加速度)转换为水面波动时间序列数据。
2、以20分钟为时间窗口对水面波动时间序列进行分段处理(统计发现,定点观测船行波过程一般远小于20分钟,所以以20分钟为时间窗口分段观测数据能有效保障船行波在截取的时间段之中),通过短时傅里叶变换,转换为波浪谱数据。短时傅里叶变换主要参数取值为:汉明窗参数为20s,15s窗口叠加,能得到分辨率为5s×0.05Hz的波谱数据(图9为船形波转换成谱后实例)。
大量波动过程都是普通风浪背景过程,浪高都较小,为了避免大量同类型波动过程的重复训练,将波高最大值不超过0.25米的波动过程剔除。
3、人为识别并标记船行波和非船行波波浪谱过程,包含船行波过程的样本标记为1,不包含船行波过程的样本标记为0。
步骤2:机器学习模型训练
通过比较,多层感知器(Multi-layer Perceptron)模型最适合识别船行波。本试验采用的多层感知器模型有2个隐藏层(第一层5个神经元,第二层2个神经元),通过交叉验证,平均精度可以达到95.42%。再训练样本数为750个左右时,该精度已经基本稳定。训练后固化该模型并保存。
步骤3:船形波识别过程,并累计数据不断学习更新模型识别能力
输入被识别船行波过程,识别船行波。将识别结果标记后,与步骤1中样本结合成新的学习样本,不断训练模型,提高模型识别精度。
综上,本发明通过利用机器监督学习,通过压力式或者声学式波面测量仪器,在固定点采集船行波造成水面波动的时间序列数据,通过大量样本训练得到船行波识别模型,可以精准识别过往船只。训练样本采集多样性,该模型可以识别不同类型、不同船舶运动状态和不同风浪背景下的船行波。本发明具有如下技术优势:
1、实现手段简单,目前波浪采集系统已经产品化,可以安装在岸边区域,采用实时传输和定期回收数据两种形式;
2、通过采集越来越多的船形波谱数据,该模型能不断进化,识别更加准确;
3、不影响船舶航行,而且采用主动识别方法
4、识别准备率高,随着样本增加,准确性将不断提高。
实施例2:
如图10所示,本实施例提供了一种基于机器学习的船行波快速自动识别装置,包括:
数据获取模块101,用于获取需识别的波谱数据,并将该波谱数据输入至船行波识别模型中;
识别模块102,用于存储船行波识别模型,以通过船行波识别模型识别出该需识别的波谱数据是否是船行波;
更新模块103,用于将经识别的波谱数据更新至船行波识别模型,以不断学习更新船行波识别模型的识别能力。
具体地,所述船行波识别模型通过如下方式建立:
获取船形波水面波动数据,并将该数据变换为波谱数据,再利用船行波谱特征,识别船行波过程,对船行波和非船行波分别进行标记,作为模型训练样本;
利用标记好的训练样本对多层感知器模型进行训练,样本训练前,需进行正则化变换训练完毕后固化模型,得到船行波识别模型;
所述多层感知器模型包括2个隐藏层,第一层5个神经元。
所述获取船形波水面波动数据,并将该数据变换为波谱数据包括:
原始数据为压力式传感器采集的波面压力变化数据,采样频率为2Hz,通过压力与水深变化关系转换为水面波动时间序列数据;
以20分钟为时间窗口对水面波动时间序列进行分段处理,通过短时傅里叶变换转换为波浪谱数据;
所述所述短时傅里叶变换主要参数取值为汉明窗参数为20s,15s窗口叠加,得到分辨率为5s×0.05Hz的波谱数据。
所述压力与水深变化关系为H=P/ρg,H为水深,P为该水深出测得的压力值,ρ和g分别为水的压力和重力加速度。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。