掌桥专利:专业的专利平台
掌桥专利
首页

基于Swin Transformer和ZED摄像头的多目标检测和测距方法

文献发布时间:2023-06-19 12:22:51


基于Swin Transformer和ZED摄像头的多目标检测和测距方法

技术领域

本发明涉及视频图像处理以及目标检测技术领域,具体来说,涉及基于SwinTransformer和ZED摄像头的多目标检测和测距方法。

背景技术

现代机器人的性能得到了不断地发展和提高,现在机器人已经广泛应用于工业生产、军事、生活服务、未知环境探索和支援救灾等各种领域。机器人能够对其所处的环境进行充分的认识,不仅仅具有感觉功能而且还具有自适应能力,能够结合自身判断和给定的指令确定合适的动作行为,其本质类似于一个不断完善的知识信息系统。智能机器人具有与外界环境相协调的能力,而其视觉系统正是这一能力所需要的关键部分。

双目是类人型机器人的必备装置,其对于机器人获取外部世界信息具有至关重要的作用。基于双目机器人的动态目标检测与跟踪系统,可以通过双目实时的定位外界目标,进而可以利用机器人运动控制算法对动态目标进行追踪。上述过程的关键正在于动态目标的精确定位,而基于视觉的动态目标检测与测距技术又是目标定位的关键所在,所以研究动态目标检测与测距技术尤为重要。

发明内容

针对相关技术中的问题,本发明提出基于Swin Transformer和ZED摄像头的多目标检测和测距方法,以克服现有相关技术所存在的上述技术问题。

为此,本发明采用的具体技术方案如下:

基于Swin Transformer和ZED摄像头的多目标检测和测距方法,该方法包括以下步骤:

S1、采用预设的训练超参数对Swin Transformer目标检测器进行训练,得到SwinTransformer目标检测模型;

S2、利用Swin Transformer目标检测模型和ZED摄像头实现多目标的实时检测及测距。

进一步的,所述S1中采用预设的训练参数对Swin Transformer目标检测器进行训练,得到Swin Transformer目标检测模型包括以下步骤:

S11、制作数据集:下载COCO数据集,将数据集打乱,并按照7:2:1比例抽取得到训练集、验证集及测试集;

S12、数据扩充:采用基础的图像扩充方式对训练数据进行扩充;

S13、设定训练超参数:设置Swin Transformer目标检测器的训练超参数;

S14、模型训练:根据训练超参数和制作好的数据集对Swin Transformer目标检测器进行训练,得到Swin Transformer目标检测模型。

进一步的,所述S12中对训练数据进行扩充包括:裁剪、随机旋转、水平翻转、颜色变换及针对目标裁剪策略的几种扩充方式;

所述S13中设置Swin Transformer目标检测器的训练超参数包括:训练每批图像数量、输入图像宽度、图像高度、图像通道数、冲量、初始学习率、权重衰减系数、学习率调整参数、最大迭代次数、优化器以及阈值。

进一步的,所述S2中利用Swin Transformer目标检测模型和ZED摄像头实现多目标的实时检测及测距包括以下步骤:

S21、初始化:对摄像头参数及Swin Transformer目标检测模型进行初始化处理;

S22、读取标志位判断是否退出程序:读取键盘状态并判断是否退出程序;

S23、读取图像:利用ZED双目摄像头读取左摄像头彩色图像,送入SwinTransformer目标检测模型,并判断是否成功读取图像,若是则执行S24,若否则返回S22;

S24、目标检测:利用Swin Transformer目标检测模型读取新的图像,预测得到图像中的目标的外接框、置信度以及类别置信度信息;

S25、目标测距:根据Swin Transformer目标检测模型预测结果和ZED摄像头深度图,计算每个目标的距离实现多目标测距;

S26、显示:在原图上画出目标检测到的多目标的外接框、目标类别以及置信度,并且标记计算得到的目标距离。

进一步的,所述S21中对摄像头参数及Swin Transformer目标检测模型进行初始化处理包括以下步骤:

S211、对摄像头参数进行初始化处理;

S212、为Swin Transformer目标检测模型新建一个新的子线程;

S213、对Swin Transformer目标检测模型进行初始化处理。

进一步的,所述S211中对摄像头参数进行初始化处理具体包括以下步骤:

设置摄像头采集模式为WVGA;

设置摄像头的帧率为100;

设置采集图片的大小为672x386。

进一步的,所述S213中对Swin Transformer目标检测模型进行初始化处理具体包括:读取模型配置文件config和权重文件checkpoint。

进一步的,所述S22中读取键盘状态并判断是否退出程序包括以下步骤:

读取键盘状态,判断是否有键盘输入q或Esc,若是设置退出标志为真,关闭SwinTransformer目标检测模型,关闭子线程,退出主程序;若否则执行S23。

进一步的,所述S24中利用Swin Transformer目标检测模型读取新的图像,预测得到图像中的目标的外接框、置信度以及类别置信度信息包括以下步骤:

S241、加载Swin Transformer目标检测模型;

S242、判断退出标志是否为真,若为真则关闭Swin Transformer目标检测模型,退出线程,若为假则执行S243;

S243、判断是否有新的输入图像,若没有则延时1ms返回S242,若有新的输入图像则进入S244;

S244、图像格式转换,将Opencv3的Mat型图像转化为Swin Transformer目标检测模型的image类型;

S245、将转化过的image类型图像输入Swin Transformer目标检测模型,预测得到图像中的目标的外接框、置信度以及类别置信度信息;

S246、更改数据标志位为检测结束,传给主线程,返回S242。

进一步的,所述S25中根据Swin Transformer目标检测模型预测结果和ZED摄像头深度图,计算每个目标的距离实现多目标测距包括以下步骤:

S251、根据Swin Transformer目标检测模型预测目标框,获得目标的类别、目标框的左上角坐标以及目标长宽(x,y,w,h);

S252、利用ZED摄像头获得每个像素点距离的深度图像Dst;

S253、获取目标框左上角、右上角、左下角、右下角以及中心点的邻域3x3的深度值;

S254、对目标框左上角、右上角、左下角、右下角以及中心点深度像素进行中值滤波;

其中,滤波公式为ddst(x,y)=med{Dst(x+k,y+l),(k,l∈[-l,1])},式中ddst代表中值滤波计算结果,Dst代表深度图,med意味在集合中取中间值,x和y代表横纵坐标,k和l为横纵坐标上的遍历值,在区间[-1,1]之间;

S255、取目标框中心点滤波后的深度值作为目标的距离,实现多目标测距;

其中,深度值的公式为ddst(x+w/2,y+h/2),式中,ddst代表中值滤波计算结果,x和y代表横纵坐标,w和h为预测框的宽和高。

本发明的有益效果为:本发明提供了一种基于Swin Transformer和ZED摄像头的多目标检测及测距方法,融合Swin Transformer目标检测和ZED双目测距,有效地解决了终端设备实时实现多目标检测和多目标测距的难点;相比于传统的检测和测距方法,该方法能对目标进行快速、智能化检测与提取,并计算目标距离,适用于小车避障、无人机跟踪等工业场景。

附图说明

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

图1是根据本发明实施例的基于Swin Transformer和ZED摄像头的多目标检测和测距方法的流程示意图;

图2是根据本发明实施例的基于Swin Transformer和ZED摄像头的多目标检测和测距方法的算法示意图;

图3是根据本发明实施例的基于Swin Transformer和ZED摄像头的多目标检测和测距方法中针对目标的剪裁策略的结构示意图;

图4是根据本发明实施例的基于Swin Transformer和ZED摄像头的多目标检测和测距方法中主线程流程图;

图5是根据本发明实施例的基于Swin Transformer和ZED摄像头的多目标检测和测距方法中ZED摄像头初始化示意图;

图6是根据本发明实施例的基于Swin Transformer和ZED摄像头的多目标检测和测距方法中Swin Transformer目标检测模型初始化示意图;

图7是根据本发明实施例的基于Swin Transformer和ZED摄像头的多目标检测和测距方法中Swin Transformer检测器子线程流程图。

具体实施方式

为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。

根据本发明的实施例,提供了基于Swin Transformer和ZED摄像头的多目标检测和测距方法。

现结合附图和具体实施方式对本发明进一步说明,如图1-7所示,根据本发明实施例的基于Swin Transformer和ZED摄像头的多目标检测和测距方法,该方法包括以下步骤:

S1、采用预设的训练超参数对Swin Transformer目标检测器进行训练,得到SwinTransformer目标检测模型;

其中,所述Swin Transformer是一种以Transformer为基本单元的神经网络目标检测模型,Transformer是用以完成机器翻译等学习任务的一种全新网络结构,其完全使用注意力机制来实现序列到序列的建模,具有计算复杂度小、并行度高、容易学习长程依赖等优势。Swin Transformer通过引入卷积神经网络中常用的层次化构建方式构建层次化Transformer实现目标检测任务。

Swin Transformer模型的设计参照了卷积神经网络的分层特征表示,整个模型分为不同层,每层对上一层输出的特征图进行降采样,其中分层特征是由移动窗口计算的。移位窗口通过将自注意力计算限制在不重叠的本地窗口同时还允许跨窗口连接来提高效率。这种分层架构在各种尺度上建模具有灵活性,并且相对于图像大小也具有线性计算复杂性。预测层时采用多尺度预测,针对不同的感受野可以检测到图中大、中、小的目标物体。

Swin Transformer需要通过数据训练得到神经网络的参数。此处设置输入图像为672x386。将COCO数据集进行划分并对训练数据进行扩充,使用Swin Transformer目标检测器训练得到Swin Transformer目标检测模型,完成目标检测模型的训练。

具体的,所述S1中采用预设的训练参数对Swin Transformer目标检测器进行训练,得到Swin Transformer目标检测模型包括以下步骤:

S11、制作数据集:下载COCO数据集,将数据集打乱,并按照7:2:1的比例抽取得到训练集、验证集及测试集;

S12、数据扩充:采用基础的图像扩充方式对训练数据进行扩充;

对训练数据采用基础的几个图像扩充方式:裁剪、旋转、水平翻转以及亮度变换。并且在扩充的同时,保留目标框的标记,对于目标框发生偏移或者变换,通过公式计算对目标框的大小和坐标进行改变,保证图像变换之后能保留目标框的标记,实现自动扩充,减少人力。具体方式为:

1)样本统一尺寸:将所有的样本图片统一缩放到672x386的尺寸,便于适应实时检测图像的大小。

2)样本裁剪:如上述本方法的样本图片尺寸都会resize到672x386一个长方形大小。本方法用一个较大的长方形的框(随机指定0.8到0.9倍原图这么大)在原图的随机位置裁剪出一个图像块,这样可以保证目标大概率在裁剪的图像中,并提高模型的泛化性。

3)随机旋转:对原图在0-15度之间随机选择一个角度,让图像旋转这个角度并加入训练集。对于神经网络来说旋转的图片也是新的数据,由于在数据扩充之后还要在自动在原图之上标记,如果旋转角度过大则容易造成目标大范围的偏移,根据目标框的变换为了保障目标都能框住,所以相较于原框宽高都会大一些,当旋转角度α越大框的变化越大,造成框的误差也更大,而在15度以内框的偏移和大小变化较小,能控制外接框的误差在可控范围。

4)水平翻转:水平翻转可以使样本图扩大一倍,也可以和其他扩充方式联合使用,本方法将随机旋转的图片和镜像翻转同时使用。

5)颜色抖动:将图片转入HSV空间,在HSV颜色空间尝试随机改变图像原有的饱和度和明度(即,改变S和V通道的值)或对色调进行微调(小范围改变该通道的值)。

6)针对目标的剪裁策略:原理如图3所示,针对目标检测任务的特殊性,考虑到原图标注框的位置,在研究过程中形成了新的扩充策略:保持一定覆盖面积比并以原标注框位置为基准随机抖动。记原目标框A位置信息为[xmin,ymin,xmax,ymax],对坐标进行扩大化随机抖动后的标注框B的位置信息为[xmin-Δxmin,ymin-Δymin,xmax+Δxmax,ymax+Δymax]。当框A和大框B面积的比值大于0.5,则按框B在原图中的位置进行截取并存入训练集。

S13、设定训练超参数:设置Swin Transformer目标检测器的训练超参数;

设置良好的超参能使神经网络拟合的更快更好,训练超参数如下表1所示。一个epoch代表着将所有数据训练一遍,其中在27个epochs和33个epochs的时候学习率乘以学习率调节参数0.1降低学习率。

表1训练时超参数设定

S14、模型训练:根据训练超参数和制作好的数据集对Swin Transformer目标检测器进行训练,得到Swin Transformer目标检测模型。

S2、利用Swin Transformer目标检测模型和ZED摄像头实现多目标的实时检测及测距。

其中,基于Swin Transformer和ZED摄像头的多目标测距方法流程为:ZED摄像头实时采集图像并计算深度图,使用训练得到的模型对采集得到彩色图像预测图像中的多目标位置和目标类别,结合深度图。

ZED摄像头可以实时采集图像,目标检测和双目测距是两个不同的任务,测距需要确定目标框的位置才能给出来,原则上目标检测在双目测距之前,但目标检测所需的时间远远大于双目测距所需的时间。为保证效率提高,开一个线程做目标检测,主线程负责图像的采集、传输、测距。

主函数流程图如图4所示,首先对ZED摄像头参数和Swin Transformer目标检测模型初始化,参数的输入可通过main函数的argv传入形参,这样在linux执行程序时就可以传入所需参数。主函数的线程执行双目测距的程序,用一个while循环执行代码的主体部分,如果在键盘上输入q或Esc,程序判断有退出标志则直接退出,zed摄像头采集到新的数据则取出,并取出深度图像,根据Swin Transformer目标检测得到的目标框计算出摄像头和每个目标的距离,然后在原图上画出边界框、目标名称、识别置信度和目标的距离并显示。为方便我们有时需要对某一帧图片仔细分析,设置当按下键p时则做while循环暂停,直到再次按下键p时则继续运行。

具体的,所述S2中利用Swin Transformer目标检测模型和ZED摄像头实现多目标的实时检测及测距包括以下步骤:

S21、初始化:对摄像头参数及Swin Transformer目标检测模型进行初始化处理;

程序初始化分为两步,摄像头初始化和Swin Transformer目标检测模型初始化。摄像头初始化如图5所示,首先设置摄像头采集模式和帧率,为保证数据处理的流畅和速度,采集模式设置位WVGA,帧率设为100,采集图片的大小为672x386。

Swin Transformer目标检测模型初始化流程如图6所示,首先需要读取模型配置文件config和权重文件checkpoint,为保证程序实时采样监测,新建一个新的线程给SwinTransformer检测器,然后启动Swin Transformer检测器。每当摄像头获取图像给检测器时,Swin Transformer完成检测并返回检测结果。

S22、读取标志位判断是否退出程序:读取键盘状态并判断是否退出程序;

所述S22中读取键盘状态并判断是否退出程序包括以下步骤:读取键盘状态,判断是否有键盘输入q或Esc,若是设置退出标志为真,关闭Swin Transformer目标检测模型,关闭子线程,退出主程序;若否则执行S23。

S23、读取图像:利用ZED双目摄像头读取左摄像头彩色图像,送入SwinTransformer目标检测模型,并判断是否成功读取图像,若是则执行S24,若否则返回S22;

ZED作为双目摄像头,会根据左右两个摄像头获取彩色图像并自动计算每个像素点的深度信息,这里只需要获取左摄像头的彩色图像并送入Swin Transformer目标检测模型。

S24、目标检测:利用Swin Transformer目标检测模型读取新的图像,预测得到图像中的目标的外接框、置信度以及类别置信度信息;

Swin Transformer目标检测模型获得图像推断图像中存在哪些目标,主线程设置有数据标志位,当标志位为真时,代表Swin Transformer目标检测模型空闲中,可以输入新的图像;若标志位为假,则意味着Swin Transformer目标检测模型在忙碌,不用输入新的图像。检测子线程流程图如图7所示,具体步骤包括:

S241、加载Swin Transformer目标检测模型,需要Swin Transformer框架解释文件配置文件config;

S242、判断退出标志是否为真,若为真则关闭Swin Transformer目标检测模型,退出线程,若为假则执行S243;

S243、判断是否有新的输入图像,若没有则延时1ms返回S242,若有新的输入图像则进入S244;

S244、图像格式转换,将Opencv3的Mat型图像转化为Swin Transformer目标检测模型的image类型;

S245、将转化过的image类型图像输入Swin Transformer目标检测模型,计算得到此帧图像的多目标信息,该目标信息为一个21x12x3x(4+1+c)的张量,即将输入图像分成21x12块,每一块图像会预测3个外接框,每个外接框包含坐标信息(x,y,w,h)、是否含有目标以及每个类别置信度等信息;整合以上信息经过极大值抑制就能得到图像的多目标检测结果;

S246、更改数据标志位为检测结束,传给主线程,返回S242。

S25、目标测距:根据Swin Transformer目标检测模型预测结果和ZED摄像头深度图,计算每个目标的距离实现多目标测距;

所述S25中根据Swin Transformer目标检测模型预测结果和ZED摄像头深度图,计算每个目标的距离实现多目标测距包括以下步骤:

S251、根据Swin Transformer目标检测模型预测目标框,获得目标的类别、目标框的左上角坐标以及目标长宽(x,y,w,h);

S252、利用ZED摄像头获得每个像素点距离的深度图像Dst;

S253、获取目标框左上角、右上角、左下角、右下角以及中心点的邻域3x3的深度值;

S254、对目标框左上角、右上角、左下角、右下角以及中心点深度像素进行中值滤波;

其中,滤波公式为ddst(x,y)=med{Dst(x+k,y+l),(k,l∈[-1,1])},式中ddst代表中值滤波计算结果,Dst代表深度图,med意味在集合中取中间值,x和y代表横纵坐标,k和l为横纵坐标上的遍历值,在区间[-1,1]之间;

S255、取目标框中心点滤波后的深度值作为目标的距离,实现多目标测距;

其中,深度值的公式为ddst(x+w/2,y+h/2),式中,ddst代表中值滤波计算结果,x和y代表横纵坐标,w和h为预测框的宽和高。

S26、显示:在原图上画出目标检测到的多目标的外接框、目标类别以及置信度,并且标记计算得到的目标距离。

综上所述,借助于本发明的上述技术方案,本发明提供了一种基于SwinTransformer和ZED摄像头的多目标检测及测距方法,融合Swin Transformer目标检测和ZED双目测距,有效地解决了终端设备实时实现多目标检测和多目标测距的难点;相比于传统的检测和测距方法,该方法能对目标进行快速、智能化检测与提取,并计算目标距离,适用于小车避障、无人机跟踪等工业场景。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。

相关技术
  • 基于Swin Transformer和ZED摄像头的多目标检测和测距方法
  • 基于ZED视觉的游泳运动员出水高度的检测系统及方法
技术分类

06120113269400