一种基于局部直线匹配的遥感图像旋转舰船目标检测方法与流程

    专利2022-07-08  135


    本发明属于深度学习领域,具体涉及一种基于局部直线匹配的遥感图像旋转舰船目标检测方法。



    背景技术:

    目前,目标检测已被广泛应用于军事和民用等领域中。深度卷积神经网络可以利用目标数据集对要检测的目标进行自主学习,并完善自己的模型。yolov5是一种单步目标检测算法,此算法不需要使用区域候选网络rpn来提取候选目标信息,而是直接将提取候选区和进行分类这两个任务融合到一个网络中,通过网络来产生目标的位置和类别信息,是一种端到端的目标检测算法。因此,单步目标检测算法具有更快的检测速度。

    yolov5模型是采用分网格直接回归目标坐标和分类目标的方法进行目标检测,主要利用水平矩形边界框定义目标位置,通过边界框参数的回归对目标进行定位。这种方法对于待定位目标对象是人、小动物等小型目标时结果是足够准确的,但是对于目标对象是舰船、车辆、道路等具有角度或弧度等特殊的旋转目标是不适合的,针对此类旋转目标,可以使用基于密集子区域切割的方法进行检测,但由于舰船的长宽比较大的形态特点,检测结束后使用常规的子区域合并方法会导致虚警率较高。



    技术实现要素:

    本发明针对现有技术的不足,提出一种基于局部直线匹配的遥感图像旋转舰船目标检测方法,该方法将舰船目标分为头尾headtail和船身body两个类别,通过对训练集中目标的headtail和body分别进行密集子区域切割来获取密集的子目标,进而使用yolov5算法对训练集进行训练。在测试集中首先利用训练好的yolov5模型获取到所有子目标的中心位置、长宽信息、置信度和类别信息,并利用非极大值抑制算法对围绕相同网格点的多个检测信息进行过滤;接着根据body子目标的中心点利用层次凝聚聚类进行局部子区域划分,去除干扰;然后在局部子区域中利用霍夫变换进行直线检测并拟合body子目标的候选线段;最后将候选线段与对应的headtail子目标数据进行匹配,剔除虚警,完成待测图像的目标检测。

    步骤(1)、训练集数据预处理

    利用图像标注工具对训练集图像中待检测的目标进行标注。首先获取图像中目标的中心点坐标(x,y)、目标的宽度w、高度h以及目标的角度信息angle。然后根据设置的切割步长step和目标的高度h,确定目标切割的子目标个数n:

    n=h/step 1

    计算子目标的长度h_vec和宽度w_vec:

    h_vec=[h*cos(angle)/2,h*sin(angle)/2]

    w_vec=[w/2cos(3π/2 angle),w/2sin(3π/2 angle)]

    根据目标的中心点坐标(x,y)与目标宽度w、高度h计算出目标的左上、右上、右下和左下四个顶点的坐标(x1,y1),(x2,y2),(x3,y3),(x4,y4):

    接着根据子目标的个数n得到相邻子目标的中心点的间隔(dcx,dcy):

    dcx=(x3-x1)/n

    dcy=(y3-y1)/n

    根据间隔大小和目标的顶点位置得到第i个子目标的中心点坐标(xi,yi),其中0<i<n:

    xi=x1 dcx*(0.5 i)

    yi=y1 dcy*(0.5 i)

    最后根据子目标的中心点坐标和长度h_vec、宽度w_vec,将目标中间3/4长度的区域标注为body,另外1/4长度在目标前后区域进行均分,标注为headtail,使用子目标的位置信息分别对两个类别的目标进行切割,获取到headtail和body的密集子目标。

    步骤(2)、训练yolov5网络

    使用yolov5算法对预处理后的训练集进行训练。根据密集子目标的标注框的高度和宽度,利用k-近邻聚类方法对子目标的标注框进行聚类后分为9类,获取9类锚点框的大小,以此设置yolov5网络的锚点框参数。提取密集子目标的中心点信息、高度和宽度,输入yolov5网络中进行循环训练,直到损失函数不再降低,获取此时权重文件。

    步骤(3)、测试集目标预测

    利用步骤(2)训练得到的权重文件,设置yolov5网络对测试集图像进行测试,获取所有预测得到的headtail和body子目标的预测信息,包括中心点坐标(xc*,yc*),长度h*,宽度w*,置信度conf和类别信息cls。

    步骤(4)、过滤多余的检测信息

    根据步骤(3)得到的子目标预测信息,使用非极大值抑制对围绕相同子目标的多个锚点框进行过滤,每个子目标仅保留置信度最高的检测信息。

    步骤(5)、局部区域划分

    使用层次凝聚聚类算法对步骤(4)过滤后的body子目标的中心点进行局部区域划分,去除干扰。

    层次凝聚聚类算法主要将训练样本集中的每个数据点都当作一个聚类;然后计算每两个聚类之间的距离,对距离最近的或最相似的两个聚类进行合并;重复计算与合并,直到得到的当前聚类数为合并前聚类数的10%,完成局部区域划分。

    步骤(6)、进行直线检测。

    对步骤(5)划分后的各个局部区域分别进行霍夫变换,检测并拟合body子目标的候选线段。

    步骤(7)、匹配body子目标候选线段和headtail子目标数据

    根据所检测目标的大小设置合适的阈值,当body子目标候选线段所对应的headtail子目标总数小于阈值时,视其为虚警并剔除;当其大于阈值时,保留该数据。对保留下来的所有预测的子目标中心点进行多项式拟合,得到子目标中心点坐标的函数关系,由该函数获取到拟合直线的角度angle;取所有预测的子目标的中心点坐标的最大值(xcmax*,ycmax*)和最小值(xcmin*,ycmin*)和的平均值(xc,yc),作为预测整体目标的中心点坐标:

    xc=(xcmax*-xcmin*)/2

    yc=(ycmax*-ycmin*)/2

    再根据所有预测的子目标的中心点坐标的最大值(xcmax*,ycmax*)和最小值(xcmin*,ycmin*),利用勾股定理计算出预测目标的高度hc:

    根据获取到的所有预测的子目标的宽度w*的平均值wmean*,利用拟合直线的角度angle,根据三角函数求出目标宽度wc:

    wc=max(wmean*cos(angle)-wmean*sin(angle))

    由此获得预测目标的中心点(xc,yc),高度hc,宽度wc,角度angle信息,根据这些信息在预测图片中画出预测框即完成船舰的预测。

    本发明具有以下有益效果:对待检测目标进行子区域密集切分时,增加了对舰船头尾headtail和船身body的标注,对测试图片上获取到的body子目标的中心点使用层次凝聚聚类进行局部子区域划分,去除干扰,对划分得到的局部区域利用霍夫变换进行直线检测,最后将直线检测后的点拟合成线段并将其与headtail子目标数据进行匹配,剔除虚警,完成对具有角度等特殊目标的检测,降低了虚警率,提高了检测的有效性。

    附图说明

    图1为本发明的流程图。

    具体实施方式

    下面结合具体实例对本发明做进一步的分析。

    本实施例将一组采集的舰船目标图像划分为训练集和测试集。如图1所示,使用一种基于局部直线匹配的遥感图像旋转舰船目标检测方法完成目标检测任务的具体步骤如下:

    步骤(1)、训练集数据预处理

    利用图像标注工具对训练集图像中待检测的目标进行标注。首先获取图像中目标的中心点坐标(x,y)、目标的宽度w、高度h以及目标的角度信息angle。然后根据设置的切割步长step和目标的高度h,确定目标切割的子目标个数n:

    n=h/step 1

    计算子目标的长度h_vec和宽度w_vec:

    h_vec=[h*cos(angle)/2,h*sin(angle)/2]

    w_vec=[w/2cos(3π/2 angle),w/2sin(3π/2 angle)]

    根据目标的中心点坐标(x,y)与目标宽度w、高度h计算出目标的左上、右上、右下和左下四个顶点的坐标(x1,y1),(x2,y2),(x3,y3),(x4,y4):

    接着根据子目标的个数n得到相邻子目标的中心点的间隔(dcx,dcy):

    dcx=(x3-x1)/n

    dcy=(y3-y1)/n

    根据间隔大小和目标的顶点位置得到第i个子目标的中心点坐标(xi,yi),其中0<i<n:

    xi=x1 dcx*(0.5 i)

    yi=y1 dcy*(0.5 i)

    最后根据子目标的中心点坐标和子目标的长度h_vec、宽度w_vec,将目标中间3/4长度的区域标注为body,另外1/4长度在目标前后区域进行均分,标注为headtail,使用子目标的位置信息分别对两个类别的目标进行切割,获取到headtail和body的密集子目标。

    步骤(2)、训练yolov5网络

    使用yolov5算法对预处理后的训练集进行训练。根据密集子目标的标注框的高度和宽度,利用k-近邻聚类方法对子目标的标注框进行聚类后分为9类,获取9类锚点框的大小,以此设置yolov5网络的锚点框参数。提取密集子目标的中心点信息、高度和宽度,输入yolov5网络中进行循环训练,直到损失函数不再降低,获取此时权重文件。

    步骤(3)、测试集目标预测

    利用步骤(2)训练得到的权重文件,设置yolov5网络对测试集图像进行测试,获取所有预测得到的headtail和body子目标的预测信息,包括中心点坐标(xc*,yc*),长度h*,宽度w*,置信度conf和类别信息cls。

    步骤(4)、过滤多余的检测信息

    根据步骤(3)得到的子目标预测信息,使用非极大值抑制对围绕相同子目标的多个锚点框进行过滤,每个子目标仅保留置信度最高的检测信息。

    步骤(5)、局部区域划分

    使用层次凝聚聚类算法对步骤(4)过滤后的body子目标的中心点进行局部区域划分,去除干扰。

    层次凝聚聚类算法主要将训练样本集中的每个数据点都当作一个聚类;然后计算每两个聚类之间的距离,对距离最近的或最相似的两个聚类进行合并;重复计算与合并,直到得到的当前聚类数为合并前聚类数的10%,完成局部区域划分。

    步骤(6)、进行直线检测。

    对步骤(5)划分后的各个局部区域分别进行霍夫变换,检测并拟合body子目标的候选线段。

    步骤(7)、匹配body子目标候选线段和headtail子目标数据

    根据所检测目标的大小设置合适的阈值,当body子目标候选线段所对应的headtail子目标总数小于阈值时,视其为虚警并剔除;当其大于阈值时,保留该数据。对保留下来的所有预测的子目标中心点进行多项式拟合,得到子目标中心点坐标的函数关系,由该函数获取到拟合直线的角度angle;取所有预测的子目标的中心点坐标的最大值(xcmax*,ycmax*)和最小值(xcmin*,ycmin*)和的平均值(xc,yc),作为预测整体目标的中心点坐标:

    xc=(xcmax*-xcmin*)/2

    yc=(ycmax*-ycmin*)/2

    再根据所有预测的子目标的中心点坐标的最大值(xcmax*,ycmax*)和最小值(xcmin*,ycmin*),利用勾股定理计算出预测目标的高度hc:

    根据获取到的所有预测的子目标的宽度w*的平均值wmean*,利用拟合直线的角度angle,根据三角函数求出目标宽度wc:

    wc=max(wmean*cos(angle)-wmean*sin(angle))

    由此获得预测目标的中心点(xc,yc),高度hc,宽度wc,角度angle信息,根据这些信息在预测图片中画出预测框即完成船舰的预测。

    上述实施例并非是对于本发明的限制,本发明并非仅限于上述实施例,只要符合本发明要求,均属于本发明的保护范围。


    技术特征:

    1.一种基于局部直线匹配的遥感图像旋转舰船目标检测方法,其特征在于:该方法具体包括以下步骤:

    步骤(1)、训练集数据预处理

    利用图像标注工具对训练集图像中待检测的目标进行标注;首先获取图像中目标的中心点坐标(x,y)、目标的宽度w、高度h以及目标的角度信息angle;然后根据设置的切割步长step和目标的高度h,确定目标切割的子目标个数n:

    n=h/step 1

    计算子目标的长度h_vec和宽度w_vec:

    h_vec=[h*cos(angle)/2,h*sin(angle)/2]

    w_vec=[w/2cos(3π/2 angle),w/2sin(3π/2 angle)]

    根据目标的中心点坐标(x,y)与目标宽度w、高度h计算出目标的左上、右上、右下和左下四个顶点的坐标(x1,y1),(x2,y2),(x3,y3),(x4,y4):

    接着根据子目标的个数n得到相邻子目标的中心点的间隔(dcx,dcy):

    dcx=(x3-x1)/n

    dcy=(y3-y1)/n

    根据间隔大小和目标的顶点位置得到第i个子目标的中心点坐标(xi,yi),其中0<i<n:

    xi=x1 dcx*(0.5 i)

    yi=y1 dcy*(0.5 i)

    最后根据子目标的中心点坐标和子目标的长度h_vec、宽度w_vec,将目标中间3/4长度的区域标注为body,另外1/4长度在目标前后区域进行均分,标注为headtail,使用子目标的位置信息分别对两个类别的目标进行切割,获取到headtail和body的密集子目标;

    步骤(2)、训练yolov5网络

    使用yolov5算法对预处理后的训练集进行训练;根据密集子目标的标注框的高度和宽度,利用k-近邻聚类方法对子目标的标注框进行聚类后分为9类,获取9类锚点框的大小,以此设置yolov5网络的锚点框参数;提取密集子目标的中心点信息、高度和宽度,输入yolov5网络中进行循环训练,直到损失函数不再降低,获取此时权重文件;

    步骤(3)、测试集目标预测

    利用步骤(2)训练得到的权重文件,设置yolov5网络对测试集图像进行测试,获取所有预测得到的headtail和body子目标的预测信息,包括中心点坐标(xc*,yc*),长度h*,宽度w*,置信度conf和类别信息cls;

    步骤(4)、过滤多余的检测信息

    根据步骤(3)得到的子目标预测信息,使用非极大值抑制对围绕相同子目标的多个锚点框进行过滤,每个子目标仅保留置信度最高的检测信息;

    步骤(5)、局部区域划分

    使用层次凝聚聚类算法对步骤(4)过滤后的body子目标的中心点进行局部区域划分,去除干扰;

    层次凝聚聚类算法主要将训练样本集中的每个数据点都当作一个聚类;然后计算每两个聚类之间的距离,对距离最近的或最相似的两个聚类进行合并;重复计算与合并,直到得到的当前聚类数为合并前聚类数的10%,完成局部区域划分;

    步骤(6)、进行直线检测;

    对步骤(5)划分后的各个局部区域分别进行霍夫变换,检测并拟合body子目标的候选线段;

    步骤(7)、匹配body子目标候选线段和headtail子目标数据

    根据所检测目标的大小设置合适的阈值,当body子目标候选线段所对应的headtail子目标总数小于阈值时,视其为虚警并剔除;当其大于阈值时,保留该数据;对保留下来的所有预测的子目标中心点进行多项式拟合,得到子目标中心点坐标的函数关系,由该函数获取到拟合直线的角度angle;取所有预测的子目标的中心点坐标的最大值(xcmax*,ycmax*)和最小值(xcmin*,ycmin*)和的平均值(xc,yc),作为预测整体目标的中心点坐标:

    xc=(xcmax*-xcmin*)/2

    yc=(ycmax*-ycmin*)/2

    再根据所有预测的子目标的中心点坐标的最大值(xcmax*,ycmax*)和最小值(xcmin*,ycmin*),利用勾股定理计算出预测目标的高度hc:

    根据获取到的所有预测的子目标的宽度w*的平均值wmean*,利用拟合直线的角度angle,根据三角函数求出目标宽度wc:

    wc=max(wmean*cos(angle)-wmean*sin(angle))

    由此获得预测目标的中心点(xc,yc),高度hc,宽度wc,角度angle信息,根据这些信息在预测图片中画出预测框即完成船舰的预测。

    技术总结
    本发明公开了一种基于局部直线匹配的遥感图像旋转舰船目标检测方法。本发明对目标进行子区域密集切分时增加了对舰船头尾和船身的标注,对测试图片上获取到的body子目标的中心点使用层次凝聚聚类进行局部子区域划分,减少干扰,然后对划分得到的局部区域利用霍夫变换进行直线检测,最后将直线检测后的点拟合成线段并将其与headtail子目标数据进行匹配,剔除虚警,完成对具有角度等特殊目标的检测。可以用于旋转舰船目标,有效降低检测结果的虚警率。

    技术研发人员:陈华杰;吕丹妮;白浩然
    受保护的技术使用者:杭州电子科技大学
    技术研发日:2020.11.06
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-19227.html

    最新回复(0)