本发明涉及目标跟踪技术领域,具体涉及一种基于yolov3的空中目标跟踪方法。
背景技术:
运动目标的识别和跟踪是计算机视觉领域的热点问题,在人机交互、视频跟踪、视觉导航、机器人以及军事制导等方面有广泛的应用。近年来,消费级无人机市场的快速增长,具有强大功能的消费级无人机价格不断降低,操作简便性不断提高,无人机正快速地从尖端的军用设备转入大众市场,成为普通民众手中的玩具。然而,功能越来越先进的新式无人机的不断涌现,也带来了安全和隐私方面的忧患,如无人机偷窥侵犯隐私权,在国家机关、军队驻地、机场周边等敏感区域飞行危害国家安全,以及无人机操作不当引发安全事故等等。
yolov3是深度学习方面的一种目标检测网络,在单帧图像的检测和识别层面应用很广,相比于传统目标检测方法,其优势在于更高的检测准确度及更快的检测速度。基于检测的目标跟踪是一种常用的目标跟踪方法,通过对每帧图像进行目标检测与识别,即可完成对视频序列的跟踪。但是,基于深度学习的yolov3对前期训练样本有很高的要求,如果一旦拍摄到的目标及背景图像不包含在训练样本里时,yolov3是无法检测到目标的,从而导致跟踪失败。
kcf是一种鉴别式追踪方法,这类方法一般都是在追踪过程中训练一个目标检测器,使用目标检测器去检测下一帧预测位置是否是目标,然后再使用新检测结果去更新训练集进而更新目标检测器。而在训练目标检测器时一般选取目标区域为正样本,目标的周围区域为负样本,当然越靠近目标的区域为正样本的可能性越大。但kcf算法在尺度变换、特征提取、目标丢失等方面仍有不足。
技术实现要素:
针对现有技术中的缺陷,本发明提供的一种基于yolov3的空中目标跟踪方法,克服了目标跟踪算法受光照、形变等的不良影响,提高了目标跟踪算法的准确性、鲁棒性以及适应性。
为了解决上述技术问题,本发明提供以下技术方案:
一种基于yolov3的空中目标跟踪方法,包括以下步骤:
s01:生成模型文件:将准备好的无人机图片作为样本图片,通过图像标注软件iabelimg对样本图片进行数据标注,然后通过yolov3算法进行训练,生成模型文件;
s02:通过采集模块实时拍摄检测目标的视频文件并发送到计算机,同时在计算机内通过实现基于runnable接口、实现callable接口或继承thread类的方式创建yolov3目标跟踪和kcf目标跟踪两个线程,同时执行步骤s03和步骤s05;
s03:yolov3目标跟踪线程调用步骤s01中生成的模型文件,进行目标检测,得到目标位置信息和置信度信息;
s04:将步骤s03中得到的目标位置信息发送给kcf目标跟踪线程,作为kcf目标跟踪线程的初始化参数,转到步骤s07,同时执行步骤s11;
s05:目标跟踪线程运行1秒后,启动kcf目标跟踪线程,判断kcf目标跟踪线程是否已经完成了kcf参数初始化,如果已完成kcf参数初始化,执行步骤s08,否则,执行步骤s06;
s06:通过手动设置检测框;
s07:完成kcf参数初始化;
s08:kcf目标跟踪线程对输入视频图像进行目标位置检测,通过循环矩阵的方式构建训练样本和检测样本,计算训练样本和检测样本之间的响应值,同时进行步骤s09和步骤s10;
s09:找出响应值最大的检测框作为目标,获取目标位置信息以及置信度信息,执行步骤s11;
s10:更新位置参数,此次得到的位置参数可以作为下一次响应值计算的初始参数,执行步骤s07;
s11:将yolov3目标跟踪线程和kcf目标跟踪线程得到的目标位置信息进行融合或比较,得到最终的目标位置信息。
进一步地,所述步骤s01中样本图像生成模型文件的过程包括以下步骤:
s0101:准备无人机样本图像;
s0102:通过图像标注软件labelimg对样本图像进行数据标注,生成与所标注图片文件名相同的xml文件;
s0103:修改学习率和迭代次数参数,用计算机gpu进行xml文件样本的训练,经过迭代生成模型文件。
进一步地,所述步骤s03中yolov3目标跟踪检测过程包括以下步骤:
s0301:输入一张任意大小图片,保持图片的长宽比不变并缩放至固定尺寸,形成归一化图像输入网络;
s0302:通过yolo的cnn网络将图片分成s*s个网格,每个网格检测中心点落在该网格范围内的目标,预测出b个预测框,每个预测框可对应(c+5)个值,其中,c为检测目标的类别数,5个值分别为预测框的坐标(x,y)、预测框的宽度w和高度h、以及存在检测目标的置信得分
s0303:通过非极大值抑制(nms)算法筛选出置信的分
进一步地,所述s08中kcf目标跟踪检测过程包括以下步骤:
s0801:输入视频;
s0802:输入单张图像;
s0803:判断是否是第一帧图像,如果是第一帧图像,执行步骤s0804,如果不是第一帧图像,进行步骤s08010;
s0804:初始化目标矩形框的位置,根据目标位置,通过循环矩阵构造训练样本;
s0805:提取搜索矩形框处图像的hog特征;
s0806:通过傅里叶变换将样本的训练转换成岭回归问题;
s0807:进行离散傅里叶变换,计算训练样本的权重系数;
s0808:进行参数更新;
s0809:判断是否有视频输入,如果有视频输入,执行步骤s0802,否则,完成目标检测过程;
s0810:在目标位置处通过循环位移的方式构造检测样本;
s0811:对检测样本提取hog特征,并进行傅里叶变换;
s0812:计算检测样本的互相关矩阵;
s0813:计算检测样本的响应值,并将检测样本作为置信度,更新位置信息;
s0814:判断检测样本的响应值是否大于0.75,如果大于0.75,执行步骤s0805,否则,执行步骤s0815;
s0815:不进行参数更新。
进一步地,所述步骤s11中融合或比较yolov3目标跟踪线程和kcf目标跟踪线程,得到最终目标位置信息的过程包括如下步骤:
s1101:接收yolov3目标跟踪线程和kcf目标跟踪线程的目标位置信息及相应的置信度;
s1102:判断目标位置信息的数量是否有两个,如果目标位置信息有两个,执行s1104;否则,如果目标位置信息有一个,执行步骤s1103;
s1103:输出该目标位置信息;
s1104:比较两个目标位置信息的置信度,选择置信度大的目标位置信息作为最终的目标位置信息,执行步骤s1103。
由上述技术方案可知,本发明的有益效果:通过yolov3目标检测算法与kcf目标跟踪算法相结合,将yolov3目标检测算法获得的目标位置信息发送给kcf目标跟踪算法,并将此目标位置信息作为初始化kcf目标检测算法的参数,从而修改相关滤波kcf算法的更新机制,同时结合了yolov3目标检测算法的三种尺度进行检测的特性,从而有效解决了小目标的检测与跟踪问题,克服了目标跟踪算法受光照、形变等的不良影响,提高了目标跟踪算法的准确性、鲁棒性、适应性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1为本发明的流程图;
图2为本发明中yolov3数据集训练生成模型文件的流程图;
图3为本发明中yolov3目标跟踪检测的流程图;
图4为本发明中kcf目标跟踪检测的流程图;
图5为本发明中融合或比较目标位置信息和置信度得到最终目标位置信息的流程图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。
请参阅图1所示,本实施例提供的一种基于yolov3的空中目标跟踪方法,包括以下步骤:
s01:生成模型文件:将准备好的无人机图片作为样本图片,通过图像标注软件iabelimg对样本图片进行数据标注,然后通过yolov3算法进行训练,生成模型文件;
s02:通过采集模块实时拍摄检测目标的视频文件并发送到计算机,同时在计算机内通过实现基于runnable接口、实现callable接口或继承thread类的方式创建yolov3目标跟踪和kcf目标跟踪两个线程,同时执行步骤s03和步骤s05,所述采集模块为摄像头;
s03:yolov3目标跟踪线程调用步骤s01中生成的模型文件,进行目标检测,得到目标位置信息和置信度信息;
s04:将步骤s03中得到的目标位置信息发送给kcf目标跟踪线程,作为kcf目标跟踪线程的初始化参数,转到步骤s07,同时执行步骤s11;
s05:目标跟踪线程运行1秒后,启动kcf目标跟踪线程,判断kcf目标跟踪线程是否已经完成了kcf参数初始化,如果已完成kcf参数初始化,执行步骤s08,否则,执行步骤s06;
s06:通过手动设置检测框;
s07:完成kcf参数初始化;
s08:kcf目标跟踪线程对输入视频图像进行目标位置检测,通过循环矩阵的方式构建训练样本和检测样本,计算训练样本和检测样本之间的响应值,同时进行步骤s09和步骤s10;
s09:找出响应值最大的检测框作为目标,获取目标位置信息以及置信度信息,执行步骤s11;
s10:更新位置参数,此次得到的位置参数可以作为下一次响应值计算的初始参数,执行步骤s07;
s11:将yolov3目标跟踪线程和kcf目标跟踪线程得到的目标位置信息进行融合或比较,得到最终的目标位置信息。
在实际使用中,通过yolov3目标检测算法与kcf目标跟踪算法相结合,将yolov3目标检测算法获得的目标位置信息发送给kcf目标跟踪算法,并将此目标位置信息作为初始化kcf目标检测算法的参数,从而修改相关滤波kcf算法的更新机制,同时结合了yolov3目标检测算法的三种尺度进行检测的特性,从而有效解决了小目标的检测与跟踪问题,克服了目标跟踪算法受光照、形变等的不良影响,提高了目标跟踪算法的准确性、鲁棒性、适应性。
参阅图2所示,所述步骤s01中样本图像生成模型文件的过程包括以下步骤:
s0101:准备12000张无人机样本图像,包括近目标图像和远目标图像,其中,10000张为训练样本图像,2000张为测试样本图像;
s0102:通过图像标注软件labelimg对12000张无人机样本图像进行数据标注,生成与所标注图像文件名相同的xml文件;
s0103:修改学习率和迭代次数参数,用计算机gpu进行xml文件样本的训练,经过4000次迭代生成模型文件。
在实际使用中,通过采用12000张无人机图像并将无人机样本图像分为近目标图像和远目标图像完成训练无人机数据集的过程,丰富了训练样本的容量和类型,使yolov3目标检测算法只检测无人机目标,对图像检测从而达到跟踪的目的。
参阅图3所示,所述步骤s03中yolov3目标跟踪检测过程包括以下步骤:
s0301:输入一张任意大小图片,保持图片的长宽比不变并缩放至固定尺寸,形成归一化图像输入网络;
s0302:通过yolo的cnn网络将图片分成s*s个网格,s可以分为13、26和52三种不同的尺寸,即cnn网络可以将图片分成13*13、26*26和52*52三种不同尺寸的网格,每个网格检测中心点落在该网格范围内的目标,预测出b个预测框,每个预测框可对应(c+5)个值,其中,c为检测目标的类别数,5个值分别为预测框的坐标(x,y)、预测框的宽度w和高度h、以及存在检测目标的置信得分
s0303:通过非极大值抑制(nms)算法筛选出置信的分
在实际使用中,yolo的cnn网络可以在三种不同的尺度上进行检测,从而有效解决了小目标的检测与跟踪问题,能够准确、快速的完成空中目标的检测与跟踪。
参阅图4所示,所述步骤s08中kcf目标跟踪检测过程包括以下步骤:
s0801:输入视频;
s0802:输入单张图像;
s0803:判断是否是第一帧图像,如果是第一帧图像,执行s0804,如果不是第一帧图像,进行步骤s08010;
s0804:初始化目标矩形框的位置,根据目标位置,通过循环矩阵构造训练样本,使数据变成循环矩阵的形式,并转换到频域,避免矩阵求逆,提高处理速度;
s0805:提取搜索矩形框处图像的hog特征;
s0806:通过傅里叶变换将样本的训练转换成岭回归问题,降低计算的复杂度比较低,以防止过拟合,同时,求解中避免矩阵求逆和矩阵乘积,提高了kcf算法的跟踪速度;
s0807:进行离散傅里叶变换,计算训练样本的权重系数;
s0808:进行参数更新;
s0809:判断是否有视频输入,如果有视频输入,执行步骤s0802,否则,完成目标检测过程;
s0810:在目标位置处通过循环位移的方式构造检测样本;
s0811:对检测样本提取hog特征,并进行傅里叶变换;
s0812:计算检测样本的互相关矩阵;
s0813:计算检测样本的响应值,并将检测样本作为置信度,更新位置信息;
s0814:判断检测样本的响应值是否大于0.75,如果大于0.75,执行步骤s0805,否则,执行步骤s0815;
s0815:不进行参数更新。
在实际使用中,目标跟踪的整个过程是根据第一帧图像和初始化位置完成样本的训练,然后对第二帧进行样本检测,得到目标的位置后,将重新训练和更新参数,继续对下一帧进行检测,整个跟踪是一个迭代更新的过程,目标跟踪过程中的外观模型基于上一帧的参数进行更新,所以kcf目标检测过程通过对参数和模板进行实时更新来增强算法的稳定性。
参阅图5所示,所述步骤s11中融合或比较yolov3目标跟踪线程和kcf目标跟踪线程,得到最终目标位置信息的过程包括如下步骤:
s1101:接收yolov3目标跟踪线程和kcf目标跟踪线程的目标位置信息及相应的置信度;
s1102:判断目标位置信息的数量是否有两个,如果目标位置信息有两个,执行步骤s1104;否则,如果目标位置信息有一个,执行步骤s1103;
s1103:输出该目标位置信息;
s1104:比较两个目标位置信息的置信度,选择置信度大的目标位置信息作为最终的目标位置信息,执行步骤s1103。
在实际使用中,通过yolov3目标跟踪线程和kcf目标跟踪线程检测的目标位置信息及置信度的比较和融合,选择置信度大的目标位置信息作为最终的检测结果,使检测得到的目标位置达到最优的状态。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。