本发明属于计算机视觉技术领域,具体涉及了一种基于3d模型训练yolo神经网络的方法。
背景技术:
近年来,随着卷积神经网络和深度学习的不断发展,目标检测技术迅猛兴起,目标检测是指能够正确识别图像中的指定物体并能够对其进行定位,由于目标检测技术的实用性和通用性,其应用领域十分广泛。
当今目标检测技术主要基于深度卷积神经网络,目前较流行的一种网络结构是yolo(youonlylookonce)网络,其特点是检测速度快,检测精度高,训练yolo神经网络一般需要大量带物体位置标注的图片,所以在应用yolo神经网络时第一步就是采集和标注大量的包含待检测目标图片,为了保证最后取得的深度学习模型的泛化性,收集数据时需要结合具体应用场景,需要考虑到数据的多样性,导致数据的采集难度增加,此外在标记数据时,则要通过人工一一辨识图片中的物体,效率低下,成本高昂,这也成为了将目标检测技术应用于具体业务时的一大障碍。
技术实现要素:
发明目的:为了克服训练数据采集和标注成本高的问题,本发明提供一种基于3d模型训练yolo神经网络的方法,并通过在场景图渲染过程中,随机化物体3d模型的中心点所在坐标、euler角、纹理参数及场景背景模型,使得yolo模型的泛化性得到提高,并降低了yolo模型的过拟合,采用此方案后,训练图片及物体标注信息获取的成本将极大的降低。
技术方案:为实现上述目的,本发明采用的技术方案为:
一种基于3d模型训练yolo神经网络的方法,首先、构建待测物体3d模型及场景背景模型并结合形成场景图,随机化物体3d模型的中心点所在坐标、euler角、纹理参数及场景背景模型,对场景图渲染多次得到原始数据集;其次、由原始数据集中标记五元组中边框界的左上顶点坐标、右下顶点坐标与图像宽高计算得到边界框的中心点坐标、宽、高与图像宽高的相对比例,从而转换得到yolo神经网络标准数据集;最后,建立所得数据集与yolo神经网络结合后的损失函数,使用随机梯度下降算法求损失函数近似最小值,得到待检测物体的yolo目标检测模型。具体包括以下步骤:
步骤1、收集待测物体信息及场景信息,构建待测物体3d模型及场景背景模型,将两者结合形成完整的场景图(sensegraph),在渲染过程中,随机化待测物体3d模型的中心点所在坐标、euler角、纹理参数及场景背景模型,每次随机化后进行场景渲染将得到一张图片和对应的标注,进行n(n>10000)次随机化后得到的图片集与对应的标注集构成原始数据集;
构建原始数据集的方法如下:
步骤11,建立输出图像的渲染模型:
输出图像的渲染模型如下:
i=r(mo,mb,po,eo,to,pw,ew,hi,wi,l)
式中,i是输出图像,r为场景渲染函数,mo为待测物体模型,mb为去除去待测物体之外的整个场景背景模型,mo和mb共同构成场景图m,po,eo,to分别为mo在m中的中心点坐标、euler角、纹理参数,pw,ew分别为图像窗口(imagewindow)在m中的中心点坐标,euler角。hi,wi为输出图像i的高度与宽度,也即图像窗口的高度与宽度,l为场景图m的光照条件;
步骤12,根据渲染模型构建图片集和标注集,从而得到原始数据集:
在渲染模型中,对参数pw,ew,hi,wi取定值,对参数mo,mb,po,eo,to,l分别取其预定义值域中的随机值,则对于特定的mo,mb,po,eo,to,l,由渲染模型中可得一张唯一的输出图像i,i中包含mo所对应的物体,进行n次随机取值,可得到n张不同的含有对应待检测物体的输出图像。
对于任意一张输出图像,以图像左上顶点为原点o,竖直方向为x轴,向下为x轴正方向,水平方向为y轴,向右为y轴正方向,以x轴为图像的高度方向,以y轴为图像的宽度方向建立坐标系;图像的高度为hi,宽度为wi,图像右上顶点的坐标为(0,wi),左下顶点的坐标为(hi,0),图像中待检测物体的外接边界框高度为hb,宽度为wb,边界框的左上顶点,右下顶点,中点坐标分别为p1=(x1,y1),p2=(x2,y2),pc=(xc,yc)。
待测物体一共有n个类别,将其编号为0~n-1。在渲染过程中,对于任意一张输出图片i,同时可得到图片i对应的标注信息,标注信息由一个五元组构成,形式为(c,x1,y1,x2,y2),其中c为对应物体的类别编号,x1,y1为物体的边界框左上坐标,x2,y2为物体的边界框右下顶点坐标,由n张输出图片和对应的n个标注五元组构成原始数据集sraw。
步骤2、由原始数据集中标记五元组中边框界的左上顶点、右下顶点坐标与图像宽高计算得到边界框的中点坐标、宽、高与图像宽高的相对比例,形成新的标注五元组,对标注集中的每个标记五元组都进行转换,得到yolo神经网络标准数据集;
数据集的转换方法如下:
步骤21,求解单个标记五元组的转换关系;
在yolo神经网络标准数据集格式中,每张图片对应的标注五元组的形式为(c,x′c,y′c,h'b,w′b),其中c为对应物体的类别编号,
则标注五元组的转换算法为
步骤22,对原始数据集sraw中的所有标记五元组执行转化算法,转换后将得到yolo神经网络标准数据集s。
步骤3、建立所得数据集与yolo神经网络结合后对应的损失函数,使用随机梯度下降算法求损失函数取近似最小值时的权重参数,根据权重参数得到待检测物体的yolo目标检测模型。
优选的:步骤3中使用所得数据集s训练yolo神经网络的方法如下:
步骤31,建立数据集s在yolo神经网络下的损失函数;
yolo神经网络模型为:
式中,
步骤32,θ为可学习权重参数,数据集s固定,使用随机梯度下降法求误差函数losstotal(θ,s)取得近似最小值时θ的取值,方法如下:
步骤321,对数据集s进行随机打乱,然后将其划分成n个大小为m的minibatch,令i=1;
步骤322,计算第i个minibatch的平均误差函数梯度:
式中,gradi是第i个minibatch的平均误差函数梯度,iij为第i个minibatch中的第j张图片,lij为iij对应的标注;
步骤323,使用gradi更新网络权重参数θ:
θ←θ-η·gradi#(9)
式中,η为学习率大小。
步骤324,对i进行递增:i←i 1,若i>n,则跳转到步骤325,否则跳转到步骤322。
步骤325,若θ基本收敛,则算法结束,否则跳转到步骤321;
算法执行结束后θ基本收敛,权重为θ的yolo神经网络即为所求目标检测模型。
本发明相比现有技术,具有以下有益效果:
本发明是基于3d模型训练yolo神经网络,在能够得到充足的带标记的训练图片时大大地降低了成本,此外通过随机化场景图中物体3d模型的中心点所在坐标、euler角、纹理参数及场景背景模型,能够保证yolo神经网络能够学习到物体的本质结构特征。
附图说明
图1为基于3d模型训练yolo神经网络的流程图;
图2为yolo神经网络结构图;
图3为图像坐标系建立示意图。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
yolo是一种基于深度神经网络的物体识别和定位算法,能够识别并定位图片中的指定物体,其最大的特点是运行速度很快,可以用于实时系统,应用yolo前一般需要收集大量待检测物体的图片并进行标记,然后将标记信息和图片同时送入神经网络进行训练,由于收集和标记工作繁琐且成本高昂,所以在实际应用中,基于yolo的方法通常不易实现,因此我们考虑到使用物体的3d模型来构建数据集,通过在渲染输出图片时随机化场景图中物体3d模型的中心点所在坐标、euler角、纹理参数及场景背景模型,迫使在使用构建的数据集训练yolo神经网络时网络能够学习到物体的本质结构特征,采用此方案将大大减少获取训练数据的成本。
如图1所示,本发明提出一种基于3d模型训练yolo神经网络的方法,具体步骤如下:
(一)使用物体3d模型构建原始数据集;
(二)对原始数据集进行格式转换得到yolo标准数据集;
(三)用得到的标准数据集结合随机梯度下降算法训练yolo神经网络;
步骤一的具体说明:
收集待测物体信息及场景信息,构建待测物体3d模型及场景背景模型,将两者结合形成完整的场景图,对场景图进行渲染。在3d计算机图形学中,最终呈现给用户的图像主要是通过对场景图进行渲染得到,渲染过程即为模拟光线在场景图中的折射与反射过程,场景图与渲染过程通常使用成熟的商业软件完成,我们在实现时并使用自行车作为待检测物体,使用游戏设计软件虚幻引擎4来构建场景图构建与渲染模型:
输出图像的渲染模型如下:
i=r(mo,mb,po,eo,to,pw,ew,hi,wi,l)(1)
式中,i是输出图像,r为场景渲染函数,mo为待测物体模型,mb为去除去待测物体之外的整个场景背景模型,mo和mb共同构成场景图m,po,eo,to分别为mo在m中的中心点坐标、euler角、纹理参数,pw,ew分别为图像窗口(imagewindow)在m中的中心点坐标,euler角。hi,wl为输出图像i的高度与宽度,也即图像窗口的高度与宽度,l为场景图m的光照条件;
在式(1)中,对参数pw,ew,hi,wi取定值,对参数mo,mb,po,eo,to,l分别取其预定义值域中的随机值,则对于特定的mo,mb,po,eo,to,l,由(1)式中所表示的渲染过程模型可得一张唯一的输出图像i,i中包含mo所对应的物体,进行n次随机取值,可得到n张不同的含有对应待检测物体的输出图像。
对于任意一张输出图像,如图3所示:以图像左上顶点为原点o,竖直方向为x轴,向下为x轴正方向,水平方向为y轴,向右为y轴正方向,建立坐标系,以x轴为图像的高度方向,以y轴为图像的宽度方向。则图像的高度为hi,宽度为wi,图像右上顶点的坐标为(0,wi),左下顶点的坐标为(hi,0),图像中待检测物体的外接边界框高度为hb,宽度为wb,边界框的左上顶点,右下顶点,中点坐标分别为p1=(x1,y1),p2=(x2,y2),pc=(xc,yc)。
待测物体一共有n个类别,将其编号为0~n-1。在渲染过程中,对于任意一张输出图片i,同时可得到图片i对应的标注信息,标注信息由一个五元组构成,形式为(c,x1,y1,x2,y2),其中c为对应物体的类别编号,x1,y1为物体的边界框左上坐标,x2,y2为物体的边界框右下顶点坐标,由n张输出图片和对应的n个标注五元组构成原始数据集sraw。
我们使用了虚幻引擎4的一款插件ndds(nvidiadeeplearningdatasetsynthesizer)来完成了对参数mo,mb,po,eo,to,l随机化的具体实现,此外还使用ndds来完成图片集和标注五元组的生成。
步骤二的具体说明:
如图2所示,yolo神经网络对输入的数据标注格式有严格的限制,步骤一所得的原始数据集sraw无法直接用来训练yolo神经网络,需要对其进行格式转换,转换步骤如下:
首先需要求解单个标记五元组的转换关系;
在yolo神经网络标准数据集格式中,每张图片对应的标注五元组的形式为(c,x′c,y′c,h′b,w′b),其中c为对应物体的类别编号,
则单个标注五元组的转换算法为
我们使用python程序语言对转换算法进行了编程实现,并对原始数据集sraw中的所有标记五元组执行转化算法,得到了yolo神经网络标准数据集s。
步骤三的具体说明:
由标准数据集s和yolo神经网络得到最终的目标检测模型需要执行训练过程,具体过程如下:
首先需要建立数据集s在yolo神经网络下的损失函数;
yolo神经网络模型为:
式中,
式中,θ为可学习权重参数,数据集s固定,使用随机梯度下降法求误差函数losstotal(θ,s)取得近似最小值时θ的取值,算法如下:
步骤321,对数据集s进行随机打乱,然后将其划分成n个大小为m的minibatch,令i=1;
步骤322,计算第i个minibatch的平均误差函数梯度:
式中,gradi是第i个minibatch的平均误差函数梯度,iij为第i个minibatch中的第j张图片,lij为iij对应的标注;
步骤323,使用gradi更新网络权重参数θ:
θ←θ-η·gradi(9)
式中,η为学习率大小。
步骤324,对i进行递增:i←i 1,若i>n,则跳转到步骤325,否则跳转到步骤322。
步骤325,若θ基本收敛,则算法结束,否则跳转到步骤321;
算法执行结束后θ基本收敛,权重为θ的yolo神经网络即为所求目标检测模型,我们使用了darknet深度学习框架具体实现了整个yolo神经网络对数据集s的训练过程,另外在训练时使用了gpu来实现并行计算加速。
本发明主要利用物体3d模型构建yolo神经网络数据集,用此数据集对yolo神经网络进行训练,通过在渲染场景图时随机化场景图中物体3d模型的中心点所在坐标、euler角、纹理参数及场景背景模型,保证yolo神经网络在训练是能够学习到物体的本质结构特征,疏略掉不相干因素。使用该发明的方法将大大减少收集和标记数据集的成本。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
1.一种基于3d模型训练yolo神经网络的方法,其特征在于,包括以下步骤:
步骤1、收集待测物体信息及场景信息,构建待测物体3d模型及场景背景模型,将两者结合形成完整的场景图,对场景图进行渲染,渲染模型如下:
i=r(mo,mb,po,eo,to,pw,ew,hi,wi,l)
式中,i是输出图像,r为场景渲染函数,mo为待测物体3d模型,mb为场景背景模型,mo和mb共同构成场景图m,po,eo,to分别为mo在m中的中心点坐标、euler角、纹理参数,pw,ew分别为图像窗口在m中的中心点坐标和euler角;hi,wi为输出图像i的高度与宽度,l为场景图m的光照条件;
对参数pw,ew,hi,wi取定值,对参数mo,mb,po,eo,to,l分别取其预定义值域中的随机值,则对于特定的mo,mb,po,eo,to,l,由渲染模型得一张唯一的输出图像i,输出图像i中包含mo所对应的物体,进行n次随机取值,得到n张不同的含有对应待检测物体的输出图像;
对于任意一张输出图像,以图像左上顶点为原点o,竖直方向为x轴,向下为x轴正方向,水平方向为y轴,向右为y轴正方向,建立坐标系;以x轴为图像的高度方向,以y轴为图像的宽度方向,则图像的高度为hi,宽度为wi,图像右上顶点的坐标为(0,wi),左下顶点的坐标为(hi,0),图像中待检测物体的外接边界框高度为hb,宽度为wb,边界框的左上顶点,右下顶点,中点坐标分别为p1=(x1,y1),p2=(x2,y2),pc=(xc,yc);待检测物体一共有n个类别,将其编号为0~n-1;在渲染过程中,对于任意一张输出图片i,同时可得到图片i对应的标注信息,标注信息由一个五元组构成,形式为(c,x1,y1,x2,y2),其中c为对应物体的类别编号,x1,y1为物体的边界框左上坐标,x2,y2为物体的边界框右下顶点坐标,由n张输出图片和对应的n个标注五元组构成原始数据集sraw;
步骤2、由原始数据集中标记五元组中边框界的左上顶点、右下顶点坐标与图像宽高计算得到边界框的中点坐标、宽、高与图像宽高的相对比例,形成新的标注五元组,然后对新的新的标注五元组形成的标注集中的每个标记五元组都进行转换,得到yolo神经网络标准数据集s,转换关系如下:
其中,(c,x1,y1,x2,y2)表示原始数据集sraw中元素,
对原始数据集sraw中的所有标记五元组根据转换关系进行转化,转换后将得到标准数据集s;
步骤3、根据标准数据集s和yolo神经网络建立标准数据集s与yolo神经网络结合后对应的损失函数:
其中,
使用随机梯度下降算法求损失函数取近似最小值时的权重参数,根据权重参数得到待检测物体的yolo目标检测模型。
2.根据权利要求1所述基于3d模型训练yolo神经网络的方法,其特征在于:步骤2中在yolo神经网络标准数据集格式中,每张图片对应的标注五元组的形式为(c,x′c,y′c,h′b,w′b),其中c为对应物体的类别编号,
则标注五元组的转换关系为
3.根据权利要求2所述基于3d模型训练yolo神经网络的方法,其特征在于:使用随机梯度下降算法求损失函数取近似最小值时的权重参数的步骤如下:
步骤321,对数据集s进行随机打乱,然后将其划分成n个大小为m的minibatch,令i=1;
步骤322,计算第i个minibatch的平均误差函数梯度:
式中,gradi是第i个minibatch的平均误差函数梯度,iij为第i个minibatch中的第j张图片,lij为iij对应的标注;
步骤323,使用gradi更新网络权重参数θ:
θ←θ-η·gradi#(9)
式中,η为学习率大小;
步骤324,对i进行递增:i←i 1,若i>n,则跳转到步骤325,否则跳转到步骤322;
步骤325,若θ小于预定收敛阈值,表示θ基本收敛,则结束,否则跳转到步骤321。
4.根据权利要求3所述基于3d模型训练yolo神经网络的方法,其特征在于:使用虚幻引擎4对参数mo,mb,po,eo,to,l随机化的具体实现。
技术总结