一种基于YOLOV5算法的船舶多目标追踪方法

文档序号:26310503发布日期:2021-08-17 13:49阅读:1258来源:国知局
一种基于YOLO V5算法的船舶多目标追踪方法

本发明涉及机器视觉领域,特别是涉及一种基于yolov5算法的船舶多目标追踪方法。



背景技术:

目标追踪是对连续帧图像的时间序列中的运动目标进行检测、提取、识别和跟踪,获得追踪目标的位置和运动轨迹,实现对运动目标的行为理解,以完成更高一级的检测任务。根据追踪目标的数量可以将追踪算法分为单目标跟踪与多目标跟踪。相比单目标追踪而言,多目标追踪问题更加复杂和困难。多目标追踪主要任务是在给定视频中同时对多个感兴趣目标进行定位,维持各感兴趣目标的id并记录他们的轨迹。

针对于海上特定环境,首先,船舶会受到航行时风波涌流的影响,造成摄像头无法稳定获取固定视角的图像数据,导致在目标识别较为困难从而对船舶的多目标检测产生较大误差;其次,海上气候多变使摄像头在获取图像数据时产生不同光影画面,致使传统的目标检测算法实施的过程中不能理想的检测到目标,且传统的目标检测算法难以克服船舶在行驶过程中检测目标出现的重叠与遮挡等问题所带来的影响;最后,船舶多目标追踪的问题更多的在于其基础上目标检测的准确性,在目标追踪的算法当中,目标检测的精度影响着追踪的效果。

船舶多目标追踪方法是海上船舶智能监控系统的核心,现有的海上船舶智能监控系统仅能实现船舶检测工作,且速度慢、精度低、实时性不好,无法实现目标船舶的追踪。现有的目标追踪方法仅能满足陆上以及其他相对稳定的检测环境中,海上船舶航行环境复杂多变,其无法保证检测精度和实时性。因而提高海上目标检测与追踪的精确性有着重要意义。



技术实现要素:

本发明的目的是提供一种基于yolov5算法的船舶多目标追踪方法,以解决上述现有技术存在的问题,能够对船舶多目标进行实时检测、跟踪。

为实现上述目的,本发明提供了如下方案:

本发明提供一种基于yolov5算法的船舶多目标追踪方法,包括以下步骤:

s1,采集船舶图像数据,对采集到的所述船舶图像数据进行图像预处理,基于预处理完毕的图像构建数据集,将所述数据集划分为训练集、验证集和测试集;

s2,基于所述训练集和所述验证集,对yolov5网络进行训练,获得yolov5检测模型,基于所述测试集对所述yolov5检测模型进行测试,获得测试结果,基于所述测试结果对yolov5检测模型进行评价,评价合格后则结束测试;

s3,对所述yolov5检测模型进行处理,生成yolov5船舶追踪模型,基于所述yolov5船舶追踪模型对船舶进行追踪并进行实时性验证。

优选地,所述s1中的船舶图像数据包括:从包括船舶相关图像数据的开源数据集;通过摄像头对船舶进行拍摄而获得的图像数据。

优选地,所述开源数据集包括但不限于:coco数据集、voc数据集和seaship船舶数据集。

优选地,所述s1中的图像预处理的具体方法为:从采集的所述船舶图像数据中筛选出coco数据集和voc数据集中含有船舶的图片,对筛选出的图片、seaship船舶数据集及通过摄像头获取的图片进行标注并合并。

优选地,所述yolov5网络包括backbone部分、neck部分和prediction部分,在所述s2中,获得所述yolov5检测模型的方法具体为:

s2.1,将训练集中的图像进行标准化预处理,并将预处理后的图像输入所述backbone部分,获得不同尺度的特征图;

s2.2,将所述不同尺度的特征图输入所述neck部分,进行上采样和特征融合后获得不同尺度的张量数据;

s2.3,将所述不同尺度的张量数据输入所述prediction部分,基于损失函数及反向传播对梯度进行计算,实时进行梯度更新并利用所述验证集进行验证,获得所述yolov5检测模型。

优选地,所述s2中测评价合格的要求为:所述yolov5检测模型的所述测试结果的平均精度均值大于等于设定值。

优选地,所述s3中对所述yolov5检测模型进行处理的方法具体为:采用deepsort算法进行处理。

优选地,所述s3中的方法:

s3.1,对所有待追踪目标进行检测,完成检测后构建deepsort跟踪器,对所述yolov5船舶追踪模型输入带有船舶的视频帧并进行处理;

s3.2,处理完毕且第一帧视频图像输入所述yolov5船舶追踪模型后,将检测到的目标初始化并创建新的所述deepsort跟踪器,标注id;

s3.3,第一帧后的任一帧输入所述yolov5船舶追踪模型时,基于所述deepsort算法,获得所有目标的状态预测和当前帧的所述检测框的交并比,并获得所述交并比的最大唯一匹配,作为目标检测框;

s3.4,基于置信度对所述检测框进行过滤,删除置信度不够高的检测框及特征,基于所述当前帧匹配到的所述目标检测框更新所述deepsort跟踪器,计算状态更新,获得更新值并输出,将所述更新值作为所述当前帧的追踪框。

优选地,所述s3.1中的处理方法为:初始化各个参数并去掉检测置信度小于0.7的检测框;通过非极大值抑制法去除检测中重叠的所述检测框并确认所述deepsort追踪器的状态正常。

优选地,所述s3.4中,若所述当前帧中没有匹配到的目标,则重新初始化所述deepsort跟踪器。

本发明公开了以下技术效果:

本发明提出一种基于yolov5、deepsort算法的船舶多目标追踪方法,本发明基于自组建数据集和yolov5网络训练出检测模型,所述模型可实现目标检测功能,然后基于训练好的yolov5检测模型利用deepsort算法进行处理,从而实现对多目标的实时追踪;

本发明可实现对海上六类船舶(矿船、普通货船、散货船、集装箱船、渔船、客船)的多目标的实时检测和跟踪,利用deepsort算法保证多目标追踪的实时性,所述deepsort算法基于目标检测算法,将每一帧的目标检测出来,然后使用deepsort算法中匈牙利匹配算法将相邻帧之间检测到的目标进行关联,通过目标检测结合帧间的数据关联来实现船舶多目标追踪,且目标检测器性能越好,最终的追踪输出效果也会更好。因此该方法利用了yolov5算法来作为deepsort算法的目标检测器。yolov5使用了pytorch框架能够非常方便地训练自己的数据集,与传统的检测算法相比,yolov5算法优点在于模型小、速度快、检测精度高。本发明能够对海上船舶多目标进行实时检测和追踪,在船舶防撞避碰方面有着重要的意义,提高了船舶航行的安全性,节省了人力和物力。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明的流程示意图;

图2是本发明的船舶图像标注的示意图;

图3是本发明基于yolov5目标检测模型训练评价参数pr图;

图4是本发明基于yolov5目标检测模型训练评价参数图;

图5是本发明中交并比的示意图。

具体实施方式

现详细说明本发明的多种示例性实施方式,该详细说明不应认为是对本发明的限制,而应理解为是对本发明的某些方面、特性和实施方案的更详细的描述。

应理解本发明中所述的术语仅仅是为描述特别的实施方式,并非用于限制本发明。另外,对于本发明中的数值范围,应理解为还具体公开了该范围的上限和下限之间的每个中间值。在任何陈述值或陈述范围内的中间值以及任何其他陈述值或在所述范围内的中间值之间的每个较小的范围也包括在本发明内。这些较小范围的上限和下限可独立地包括或排除在范围内。

除非另有说明,否则本文使用的所有技术和科学术语具有本发明所属领域的常规技术人员通常理解的相同含义。虽然本发明仅描述了优选的方法和材料,但是在本发明的实施或测试中也可以使用与本文所述相似或等同的任何方法和材料。本说明书中提到的所有文献通过引用并入,用以公开和描述与所述文献相关的方法和/或材料。在与任何并入的文献冲突时,以本说明书的内容为准。

在不背离本发明的范围或精神的情况下,可对本发明说明书的具体实施方式做多种改进和变化,这对本领域技术人员而言是显而易见的。由本发明的说明书得到的其他实施方式对技术人员而言是显而易见的。本申请说明书和实施例仅是示例性的。

关于本文中所使用的“包含”、“包括”、“具有”、“含有”等等,均为开放性的用语,即意指包含但不限于。

本发明中所述的“份”如无特别说明,均按质量份计。

实施例1

一种基于yolov5算法的船舶多目标追踪方法,包括以下步骤:

(1)船舶图像数据采集与数据集处理;对采集到的船舶图像数据进行筛选和标注并自组建数据集,将数据集划分为训练集、验证集、测试集;

(2)利用自组建数据集中的训练集和测试集对yolov5网络进行训练,获取基于yolov5网络的船舶检测模型以及权重文件;

(3)利用步骤(2)训练后的yolov5检测模型对测试集进行检测,输出检测结果,并对检测模型进行评价;

(4)基于步骤(2)训练后的yolov5检测模型,经deepsort算法处理,生成追踪模型;

(5)对步骤(4)生成的deepsort追踪模型进行实时性验证。

优选地,所述步骤(1)中具体方法如下:

(2-1)通过摄像头获取船舶图像数据;

(2-2)将开源图像数据集中带有相应船舶标签的图像数据,通过标签筛选程序进行筛选,筛选出其中含有船舶标签的图像数据;

(2-3)使用图像标注程序对步骤(2-1)中获取的船舶图像数据以及步骤(2-2)中筛选出的图像数据进行标注,将标注完成后的图像数据进行合并,生成新的自组建数据集;

(2-4)将步骤(2-3)中的自组建数据集整理成训练所需要的数据集格式,并将数据集划分为训练集、验证集、测试集。

优选地,所述步骤(2)中利用自组建数据集中的训练集和测试集对yolov5网络进行训练来获取基于yolov5网络的船舶测试模型的过程如下:

优选地,根据自组建数据集中标注的图像数据类别来修改yolov5网络的配置文件,重新设置类别数目,对训练集中的图片进行标准化预处理并将处理后的图像输入yolov5网络backbone部分得到三种不同尺度的特征图,将三种不同尺度的特征图输入neck部分进行上采样和特征融合后分别得到三种不同尺度的张量数据,接着输入prediction部分经过损失函数及反向传播求梯度计算,实时进行梯度更新并利用验证集验证,最终得到基于yolov5网络的船舶检测模型以及权重文件。

优选地,所述步骤(3)中对检测模型进行评价,以map作为检测模型精度指标,可由程序直接生成,表示均值平均精度。

优选地,所述步骤(4)中具体步骤如下:

(5-1)在追踪之前,对所有目标已经完成检测,输入视频帧并进行处理,初始化各个参数并去掉检测置信度小于0.7的检测框;通过非极大值抑制去除检测中重叠的检测框并确认deepsort追踪器的状态正常;

(5-2)第一帧进来时,将检测到的目标初始化并创建新的deepsort跟踪器,标注id;

(5-3)当后面帧进来时,先经deepsort算法得到由前面帧的追踪框产生的状态预测,求跟踪器所有目标状态预测与本帧检测的检测框的iou(交并比),通过deepsort算法得到iou(交并比)最大的唯一匹配,再根据置信度对检测框进行过滤,删除置信度不够高的检测框及特征;

(5-4)用本帧中匹配到的目标检测框去更新deepsort跟踪器,计算状态更新并将更新值输出,作为本帧的追踪框。对于本帧中没有匹配到的目标重新初始化跟踪器。

优选地,所述步骤(5)中以fps作为deepsort追踪模型实时性验证指标,所述fps表示每秒处理追踪图片的张数。

实施例2

图1为本发明的流程示意图,本发明首先对采集到的船舶图像数据进行筛选和标注并自组建数据集,将数据集划分为训练集、验证集、测试集;利用自组建数据集中的训练集和验证集对yolov5网络进行训练,获取基于yolov5网络的船舶检测模型以及权重文件;利用训练后的yolov5检测模型对测试集进行检测,输出检测结果,并对检测模型进行评价;基于训练后的yolov5检测模型,经deepsort算法处理,生成追踪模型;对生成的deepsort追踪模型进行实时性验证。

(1)船舶图像数据采集:图像来源主要包括开源数据集和通过摄像头获取的船舶图像数据,其中开源数据集主要采用coco数据集及voc数据集中包含船舶相关的图像数据和seaship船舶数据集。

(2)数据集处理:筛选出coco数据集及voc数据集中含有“boat”类标签的图片;如图2所示,通过图像标注软件对筛选出的图片以及摄像头获取的船舶图片进行标注,然后将标注好的图片与其他图像数据整理成新的自组建数据集,自组建数据集标注了六个类别,包括:orecarrier(矿船)、generalcargoship(普通货船)、bulkcargocarrier(散货船)、containership(集装箱船)、fishingboat(渔船)、passengership(客船)。

(3)设置训练过程中的权重参数,利用自组建数据集中的训练集和验证集对yolov5网络进行训练,获取基于yolov5网络的船舶检测模型以及权重文件。

根据gpu显存大小来设置batch、epoch等一系列训练参数,如果显存太小可适当降低batch;在训练过程中,通过调整epoch、learning-rate等参数,尝试提高模型准确率,降低loss。epoch为文件中的max-batches参数,即最大训练迭代次数,learning-rate初始设置一个比较大的数值,能加快收敛。当loss曲线震荡或者下降速度减慢时,暂停训练,调整一个更小的learning-rate继续进行训练。模型中的主要参数以及各个参数的作用如表1所示。

表1

根据自组建数据集中标注的图像数据类别来修改yolov5网络的配置文件,重新设置类别数目,对训练集中的图片进行标准化预处理并将处理后的图像输入yolov5网络backbone部分得到三种不同尺度的特征图,将三种不同尺度的特征图输入neck部分进行上采样和特征融合后分别得到三种不同尺度的张量数据,接着输入prediction部分经过损失函数及反向传播求梯度计算,实时进行梯度更新并利用验证集验证,最终得到基于yolov5网络的船舶检测模型以及权重文件。

(4)利用训练后的yolov5检测模型对测试集进行检测,通过损失函数计算每个检测框的类别得分、置信度得分,map(均值平均精度)等对检测模型进行评价,由程序直接生成,评价结果如图3、图4所示,其中以map作为检测模型精度指标。fps可达到70帧左右,能够满足实时性的要求。

(5)步骤(4)中基于训练后的yolov5检测模型,经deepsort算法处理,生成船舶追踪模型。在追踪之前,对所有目标已经完成检测,输入视频帧并进行处理,初始化各个参数并去掉检测置信度小于0.7的检测框;通过非极大值抑制去除检测中重叠的检测框并确认deepsort追踪器的状态正常;第一帧进来时,将检测到的目标初始化并创建新的deepsort跟踪器,标注id,所述deepsort跟踪器为deepsort算法中的封装类,可实现状态预测,状态更新,匹配跟踪结果与检测结果的功能;当后面帧进来时,先经deepsort算法得到由前面帧的追踪框产生的状态预测。求跟踪器所有目标状态预测与本帧检测的检测框的iou(交并比),将iou通过deepsort算法得到iou最大的唯一匹配,再根据置信度对检测框进行过滤,删除置信度不够高的检测框及特征;用本帧中匹配到的目标检测框去更新deepsort跟踪器,计算状态更新并将更新值输出,作为本帧的追踪框。对于本帧中没有匹配到的目标重新初始化跟踪器。

首先,deepsort将检测器输出的预测框作为输入,获取检测框的特征并进行特征的提取,根据实际需求以及当前计算资源设定合适的检测窗口大小。

接下来,预测当前状态和不确定性,使用卡尔曼滤波创建目标的观测模型对每条轨迹进行状态预测。对每一个轨迹,计算当前帧距离上次匹配成功帧的差值,基于上一时刻的状态对当前时刻的状态和不确定性进行预测。更新轨迹的计数器,每预测一次,该计数器加1,如果后续该轨迹成功匹配了检测结果,该计数器清零、同时对计数器设定了一个上限,当超过上限值时,当前轨迹删除,认定跟踪目标离开画面。因此计数器是表示了这条轨迹连续多少次未和检测结果匹配,用于判断此条轨迹是否离开了画面。如果检测结果没有和现有的轨迹匹配上,将这个检测结果初始化成一个新的轨迹,设定为不确定性,若连续几帧匹配成功,状态更新为确定性状态。若未匹配上检测结果,变为删除状态,轨迹集合中删除。

其次,更新匹配结果,追踪器中会保存所有的轨迹,每一次的检测目标与生成的轨迹通过匹配进行关联,通过求解的代价矩阵进行关联匹配,完成检测结果的分配问题。通过计算特征距离,接着计算马氏距离以及进行门控阈值控制,得到最终的代距离得到的代价矩阵,通过特征匹配以及门控矩阵等,对丢失时间较短的目标优先进行匹配。使用协方差距离或者余弦距离计算检测目标与轨迹的相似度,通过距离度量轨迹的表观特征与检测结果的表观特征,来更加准确预测id,在余弦距离小于阈值的时候认为匹配成功。使用匈牙利算法进行目标匹配,并将当前所有轨迹根据匹配结果进行三个状态(删除、匹配、暂定)的分类。

最后,输出结果,状态为confirmed的轨迹的location及其轨迹id。源码中是轨迹对象是不包含类别的,因此输出的轨迹也是没有类别的,在deepsort中的轨迹就是不同的目标对象,不区分类别。输出的是confirmed的轨迹,轨迹转换为confirmed条件是需要连续帧使用iou匹配策略匹配检测结果。

(6)对基于yolov5算法生成的deepsort追踪模型进行实时性验证,fps可达到30帧左右,能够满足海上船舶多目标追踪实时性的要求。

交并比是预测边界框和参考边界框的交集和并集之间的比率。要获得交集和并集的值,首先把预测边界框覆盖在参考边界框之上。现在对于每个类别,预测边界框和参考边界框的重叠部分叫做交集,而两个边界框跨越的所有区域叫做并集。

然后,iou可以这样计算,如图5所示。

利用iou分辨检测结果是否正确。最常用的阈值是0.5:如果iou>0.5,那么认为这是一个正确检测,否则认为这是一个错误检测。

为模型生成的每一个检测框计算其iou值(置信度阈值化之后)。利用该iou值以及我们的iou阈值(例如0.5),为图片中的每一个类计算其正确检测的数量(a)。

对于每一张图片,都有参考标准的数据,可以告诉我们在图片中某个特定类别的真实目标数量(b)。而且我们已经计算了正确预测的数量(a)(truepositives)。因此现在我们可以用这条公式计算模型对该类别的精确率(a/b)。

给定的图片中类别c的精确率=图片中类别c的真正类数量/图片中类别c所有目标的数量。

对于一个给定的类别,对验证集中的每张图片都计算它的精确率。假设验证集中有100张图片,并且知道每张图片都包含了所有的类别。这样对于每个类别,会有100个精度率的值(每张图片一个值)。对这些100个值进行平均。这个平均值叫做该类的平均精度(averageprecision)。

某个类别(c)的平均精度=验证集中该类(c)的所有精确率的和/含有该类别(c)目标的图像数量。

现在,假设在整个数据集中有20个类别。对每一个类别,都会进行相同的操作:计算iou->精确率(precision)->平均精度(averageprecision)。所以会有20个不同的平均精度值。利用这些平均精度值,可以很轻松地判断模型对任何给定的类别的性能。

为了只用一个数字来表示一个模型的性能,对所有类别的平均精度值计算其均值(average/mean)。这个新的值,就是平均精度均值map(meanaverageprecision):

平均精度均值=所有类别的平均精度值之和/所有类别的数目。

所以,平均精度均值即数据集中所有类别的平均精度的均值。

以上所述的实施例仅是对本发明的优选方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1