1.本发明属于深度学习模型部署与训练技术领域,尤其涉及一种用于众包数据的深度学习模型部署与训练方法。
背景技术:2.随着辅助驾驶系统与自动驾驶车辆的普及,越来越多的交通场景数据通过众包方式采集。由于车辆搭载的相机类型各异,这种众包数据包含了多种车载相机类型和多种相机安装位置。例如,常见的车载相机类型包括小孔相机、鱼眼相机等,小孔相机基于小孔成像模型获取图像,以下统称小孔图像,鱼眼相机基于鱼眼成像模型获取图像,以下统称鱼眼图像;相机的安装位置包括前挡风玻璃上方、前保险杠上方、左右后视镜下方、后保险杠上方等。如何统一这些异构相机获取的图像信息,将已有的深度学习模型用于众包数据,实现低成本、高效率的深度学习模型部署与优化迭代,成为当前辅助驾驶与自动驾驶系统面对的关键问题。目前,针对包含异构相机的众包数据的深度学习模型部署与训练方法暂无相关专利,现有的技术思路包括:
3.1)直接将众包数据作为已有的深度学习模型的输入。
4.2)将众包数据统一矫正为小孔图像作为已有的深度学习模型的输入。
5.3)不对图像进行矫正,针对不同类型的相机训练不同的深度学习模型。
6.但存在以下缺点:
7.1)直接将众包数据作为已有的深度学习模型的输入。已有深度学习模型多采用小孔图像作为输入,众包数据中的鱼眼图像与小孔图像存在较大差异,导致深度学习模型表现不佳。若进行2d目标检测,检测结果中会有部分目标由于鱼眼图像中存在大畸变而无法被检出。若进行3d目标检测,检测结果中不仅会有部分目标由于鱼眼图像中存在畸变而无法被检出,并且检测结果中的物体空间点坐标和朝向角也会由于畸变的存在而无法被正确计算。如图1所示,直接将鱼眼图像作为已有的目标检测深度学习模型的输入,会导致检测结果错误。
8.2)将众包数据图像统一矫正为小孔图像,会导致部分图像矫正后变形严重。例如,将鱼眼图像完全矫正为小孔图像后,图片边缘变形严重。若将这样的图片作为已有的目标检测深度学习模型的输入,则图片边缘处的目标会由于存在大幅度的变形而无法被检出。如图2所示,鱼眼图像被完全矫正后,由于图像边缘存在大幅度的变形,导致图片边缘的车辆无法被检出。
9.3)若针对不同类型的相机分别训练深度学习模型,则会由于非小孔图像难以标注、无法有效利用已有的深度学习模型、需要重新训练多个模型等原因,导致工作量大,多个模型运算量大,模型迭代优化成本高,难以实际应用。
技术实现要素:10.针对现有技术中的上述不足,本发明提供的一种用于众包数据的深度学习模型部
署与训练方法,解决了深度学习模型在众包数据上高性能低成本适配的问题。
11.为了达到以上目的,本发明采用的技术方案为:
12.本方案提供一种用于众包数据的深度学习模型部署与训练方法,包括以下步骤:
13.s1、众包数据输入:分别将鱼眼相机数据、小孔相机数据以及全景相机数据作为众包数据输入;
14.s2、相机自标定:分别对鱼眼相机、小孔相机以及全景相机的内外参进行自动标定;
15.s3、生成投影变换查找表:根据输入的众包数据的种类,分别生成鱼眼图像、小孔图像的投影变换查找表,并将全景图像作为柱面投影图像;
16.s4、图像投影变换:根据得到的投影变换查找表,将鱼眼图像、小孔图像或全景图像的像素移动至投影后的位置,得到柱面投影转换后的新图像;
17.s5、深度学习模型部署:将所述柱面投影转换后的新图像作为深度学习模型的输入,完成对深度学习模型的部署;
18.s6、标注数据投影变换:根据所述柱面投影转换后的新图像,对标注数据进行投影变换,以将深度学习模型的训练样本统一变换至柱面投影图像上;
19.s7、深度学习模型训练:利用经统一变换后的深度学习模型的训练样本,对深度学习模型进行训练,完成对深度学习模型的训练。
20.进一步地,所述步骤s3包括以下步骤:
21.s301、根据输入的众包数据的种类,基于鱼眼相机成像模型和柱面投影模型,计算得到原始鱼眼图像的像素点与目标鱼眼图像的像素点之间的映射关系,生成鱼眼图像的投影变换查找表;
22.s302、根据输入的众包数据的种类,基于小孔成像模型和柱面投影模型,计算得到原始小孔图像的像素点与目标小孔图像的像素点之间的映射关系,生成小孔图像的投影变换查找表;
23.s303、将全景图像作为柱面投影图像。
24.再进一步地,所述步骤s301包括以下步骤:
25.s3011、根据输入的众包数据的种类,生成一个含有所有目标鱼眼图像像素点坐标(u'f,v'f)的矩阵;
26.s3012、基于柱面投影模型,计算得到目标鱼眼图像像素点坐标(u'f,v'f)对应的三维空间坐标(xf,yf,zf);
27.s3013、基于鱼眼相机模型,计算得到每一个三维空间坐标(xf,yf,zf)对应的二维图像坐标,其中,所述二维图像坐标为目标鱼眼图像像素点对应的原始鱼眼图像像素坐标(uf,vf);
28.s3014、将原始鱼眼图像像素坐标(uf,vf)投影至目标鱼眼图像像素点坐标(u'f,v'f),生成鱼眼图像的投影变换查找表。
29.再进一步地,所述步骤s3012中三维空间坐标(xf,yf,zf)的表达式如下:
30.[0031][0032][0033]
其中,(u'f,v'f)表示目标鱼眼图像像素点坐标,(xf,yf,zf)表示目标鱼眼图像像素点对应的三维空间坐标,f
x
和fy分别表示柱面投影在水平和垂直方向上的焦距,u0和v0分别表示柱面投影在水平和垂直方向上的光心坐标。
[0034]
再进一步地,所述步骤s3013中原始鱼眼图像像素坐标(uf,vf)与目标鱼眼图像像素点对应的三维空间坐标(xf,yf,zf)之间的表达式如下:
[0035][0036]
θ=arctan(r)
[0037]
θd=θ(1+k1θ2+k2θ4+k3θ6+k4θ8)
[0038][0039][0040]
其中,r表示中间变量,θ表示入射角,θd表示鱼眼镜头畸变后的入射角,k1,k2,k3和k4均表示鱼眼镜头畸变系数,和分别表示鱼眼相机在水平方向上和垂直方向上的焦距,和表示鱼眼相机在水平和垂直方向上的光心坐标。
[0041]
再进一步地,所述步骤s302包括以下步骤:
[0042]
s3021、根据输入的众包数据的种类,生成一个含有所有小孔图像像素点坐标(u
p
',v
p
')的矩阵;
[0043]
s3022、基于柱面投影模型,计算得到目标小孔图像像素点坐标(u
p
',v
p
')对应的三维空间坐标(x
p
,y
p
,z
p
);
[0044]
s3023、基于小孔成像模型,计算得到每一个三维空间坐标(x
p
,y
p
,z
p
)对应的二维图像坐标,其中,所述二维图像坐标为目标小孔图像像素点对应的原始小孔图像像素坐标(u
p
,v
p
);
[0045]
s3024、将原始小孔图像像素坐标(u
p
,v
p
)投影至目标小孔图像像素点坐标(u
p
',v
p
'),生成柱面投影查找表。
[0046]
再进一步地,所述步骤s3022中目标小孔图像像素点坐标(u
p
',v
p
')对应的三维空间坐标(x1,y1,z1)的表达式如下:
[0047]
[0048][0049][0050]
其中,(u'
p
,v'
p
)表示目标小孔图像像素点坐标,(x
p
,y
p
,z
p
)表示目标小孔图像像素点对应的三维空间坐标,f
x
和fy分别表示柱面投影在水平和垂直方向上的焦距,u0和v0分别表示柱面投影在水平和垂直方向上的光心坐标。
[0051]
再进一步地,所述步骤s3023中原始小孔图像像素坐标(u
p
,v
p
)与目标小孔图像像素点对应的三维空间坐标(x
p
,y
p
,z
p
)之间的表达式如下:
[0052][0053][0054]
其中,和分别表示小孔相机在水平方向上和垂直方向上的焦距,和表示分别小孔相机在水平和垂直方向上的光心坐标。
[0055]
本发明的有益效果:
[0056]
(1)效果好。相比于直接使用众包数据或将众包数据完全矫正为小孔图像,本发明提出的方案所能获得的目标2d和3d检测结果更准确。
[0057]
(2)成本低。本发明提出的部署方案通过柱面投影统一众包数据中的图像格式,可使用已有模型完成深度学习任务,这使得本发明提出的方案应用成本低。同时,本方案还可使用众包数据对已有深度学习模型进行训练与迭代优化。
[0058]
(3)适用范围广。通过本发明提出的方案可以适配使用任意车辆、任意车载相机类型、任意相机安装位置采集的众包数据。
附图说明
[0059]
图1为背景技术中将鱼眼图像作为已有深度学习模型的输入的单目3d目标检测结果示意图。
[0060]
图2为背景技术中将鱼眼图像完全矫正后的2d目标检测结果示意图。
[0061]
图3为本发明的方法流程图。
[0062]
图4为本实施例中检测结果中的b点三维空间坐标与真实的b点三维空间坐标示意图。
[0063]
图5为本实施例中鱼眼图像矫正后的柱面投影图像示意图。
[0064]
图6为本实施例中2d目标检测结果示意图。
[0065]
图7为本实施例中3d目标检测结果示意图。
具体实施方式
[0066]
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发
明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
[0067]
实施例1
[0068]
如图3所示,本发明提供了一种用于众包数据的深度学习模型部署与训练方法,其包括部署阶段和训练阶段,本实施例1主要阐述基于众包数据的深度学习模型部署,其实现方法如下:
[0069]
s1、众包数据输入:分别将鱼眼相机数据、小孔相机数据以及全景相机数据作为众包数据输入;
[0070]
本实施例中,目前普遍使用相机传感器的种类通常包括小孔相机、鱼眼相机、全景相机等,因此流程图中以小孔相机数据、鱼眼相机数据、全景相机数据作为众包数据输入。
[0071]
s2、相机自标定:分别对鱼眼相机、小孔相机以及全景相机的内外参进行自动标定;
[0072]
本实施例中,由于相机类型和安装位置不同,众包数据中相机的内外参也各不相同。为了低成本获取相机的内参和外参,需要完成相机自动标定。相机内参可通过读取镜头参数或出厂时标定获取;相机外参可基于众包数据,使用任意已有的自动化外参标定方法获取。自标定完成后,记录数据标识和标定结果,后续处理时读取数据标识对应的标定结果即可,无需重复标定。
[0073]
s3、生成投影变换查找表:根据输入的众包数据的种类,分别生成鱼眼图像、小孔图像的投影变换查找表,并将全景图像作为柱面投影图像,其实现方法如下:
[0074]
s301、根据输入的众包数据的种类,基于鱼眼相机成像模型和柱面投影模型,计算得到原始鱼眼图像的像素点与目标鱼眼图像的像素点之间的映射关系,生成鱼眼图像的投影变换查找表,其实现方法如下:
[0075]
s3011、根据输入的众包数据的种类,生成一个含有所有目标鱼眼图像像素点坐标(u'f,v'f)的矩阵;
[0076]
s3012、基于柱面投影模型,计算得到目标鱼眼图像像素点坐标(u'f,v'f)对应的三维空间坐标(xf,yf,zf);
[0077]
s3013、基于鱼眼相机模型,计算得到每一个三维空间坐标(xf,yf,zf)对应的二维图像坐标,其中,所述二维图像坐标为目标鱼眼图像像素点对应的原始鱼眼图像像素坐标(uf,vf);
[0078]
s3014、将原始鱼眼图像像素坐标(uf,vf)投影至目标鱼眼图像像素点坐标(u'f,v'f),生成鱼眼图像的投影变换查找表;
[0079]
s302、根据输入的众包数据的种类,基于小孔成像模型和柱面投影模型,计算得到原始小孔图像的像素点与目标小孔图像的像素点之间的映射关系,生成小孔图像的投影变换查找表,其实现方法如下:
[0080]
s3021、根据输入的众包数据的种类,生成一个含有所有小孔图像像素点坐标(u
p
',v
p
')的矩阵;
[0081]
s3022、基于柱面投影模型,计算得到目标小孔图像像素点坐标(u
p
',v
p
')对应的三维空间坐标(x
p
,y
p
,z
p
);
[0082]
s3023、基于小孔成像模型,计算得到每一个三维空间坐标(x
p
,y
p
,z
p
)对应的二维图像坐标,其中,所述二维图像坐标为目标小孔图像像素点对应的原始小孔图像像素坐标(u
p
,v
p
);
[0083]
s3024、将原始小孔图像像素坐标(u
p
,v
p
)投影至目标小孔图像像素点坐标(u
p
',v
p
'),生成柱面投影查找表;
[0084]
s303、将全景图像作为柱面投影图像。
[0085]
本实施例中,众包数据种类为鱼眼图像时,本发明通过图片预处理,将鱼眼图像if转换为柱面投影图像ic。为了实现这个功能,需要基于鱼眼相机成像模型和柱面投影模型,计算出原本图片if中的像素点与想获得的图片ic中的像素点(即目标像素点)之间的映射关系。本发明中,为了实现原始像素点(uf,vf)和目标像素点(u'f,v'f)的映射关系的计算,首先生成了一个含有所有目标像素点坐标(u'f,v'f)的矩阵,假设这个矩阵中的坐标是期待生成的柱面投影图片的所有像素点坐标,然后基于柱面投影模型,计算出这些目标像素点坐标对应的三维空间坐标(xf,yf,zf),再基于鱼眼相机模型,计算出获得的每一个三维空间坐标(xf,yf,zf)所对应的二维图片坐标(此处得到的二维图片坐标即为目标像素点对应的原始像素点坐标(uf,vf))。这样便得到了目标像素点(u'f,v'f)与原始像素点(uf,vf)的对应关系。然后再利用此对应关系,将原始像素点(uf,vf)投影到目标坐标,生成柱面投影查找表,之后便能够依据查找表将鱼眼图像转换为柱面投影图像。
[0086]
本实施例中,基于柱面投影模型,计算目标鱼眼图像像素点坐标(u'f,v'f)对应的三维空间坐标(xf,yf,zf)的原理式如式(1)至式(3)所示。
[0087][0088][0089][0090]
上式中,f
x
和fy分别表示柱面投影在水平和垂直方向上的焦距,u0和v0分别表示柱面投影在水平和垂直方向上的光心坐标,u0和v0的值通常分别取二分之一的图像宽度(单位:像素个数)和二分之一的图像高度,(u'f,v'f)表示目标鱼眼图像像素点坐标,(xf,yf,zf)表示目标鱼眼图像像素点对应的三维空间坐标。
[0091]
本实施例中,基于鱼眼相机模型,计算三维空间坐标(xf,yf,zf)对应的原始像素点坐标(uf,vf)的原理式如式(7)至式(8)所示:
[0092][0093]
θ=arctan(r)(5)
[0094]
θd=θ(1+k1θ2+k2θ4+k3θ6+k4θ8)(6)
[0095][0096][0097]
其中,r表示中间变量,θ表示入射角,θd表示鱼眼镜头畸变后的入射角,k1,k2,k3和k4均表示鱼眼镜头畸变系数,和分别表示鱼眼相机在水平方向上和垂直方向上的焦距,和表示鱼眼相机在水平和垂直方向上的光心坐标。
[0098]
本实施例中,根据所使用的鱼眼相机的种类,鱼眼相机模型的表达式也会有所不同。式(4)至式(8)代表的鱼眼相机模型为本专利中使用的鱼眼相机模型。
[0099]
本实施例中,众包数据种类为小孔图像时,需要将小孔图像i
p
转换为柱面投影图像ic。为了实现这个功能,同样需要生成i
p
向ic的柱面投影查找表。此步骤与前述处理鱼眼图像的步骤仅有一处不同,即基于小孔成像模型式,计算三维空间坐标(x
p
,y
p
,z
p
)对应的原始像素点坐标(u
p
,v
p
)的原理式变为式(9)(10)。
[0100][0101][0102]
其中,和分别表示小孔相机在水平方向上和垂直方向上的焦距,和表示分别小孔相机在水平和垂直方向上的光心坐标。
[0103]
其中,所述目标小孔图像像素点坐标(u
p
',v
p
')对应的三维空间坐标(x1,y1,z1)的表达式如下:
[0104][0105][0106][0107]
其中,(u'
p
,v'
p
)表示目标小孔图像像素点坐标,(x
p
,y
p
,z
p
)表示目标小孔图像像素点对应的三维空间坐标,f
x
和fy分别表示柱面投影在水平和垂直方向上的焦距,u0和v0分别表示柱面投影在水平和垂直方向上的光心坐标。
[0108]
本实施例中,全景图像投影模型与柱面投影相同,可认为是360度柱面投影图像,因此,全景图像可直接作为输入。
[0109]
s4、图像投影变换:根据得到的投影变换查找表,将鱼眼图像、小孔图像或全景图像的像素移动至投影后的位置,得到柱面投影转换后的新图像;
[0110]
本实施例中,根据求出的查找表,将鱼眼图像、小孔图像或全景图像的像素移动到
投影后的位置,即可得到柱面投影转换后新的图像。
[0111]
s5、深度学习模型部署:将所述柱面投影转换后的新图像作为深度学习模型的输入,完成对深度学习模型的部署;
[0112]
本实施例中,已有深度学习模型是基于开源数据集训练的,并已被证实在测试集上表现优秀的成熟模型。本发明中,将经过前述步骤处理过后的柱面投影图像作为这些已有深度学习模型的输入。
[0113]
本实施例中,针对2d检测结果,2d检测结果中包含目标检测、实例分割、语义分割等图像平面上的二维结果。2d检测结果可直接使用无需后续处理。
[0114]
本实施例中,针对3d位置姿态矫正,使用柱面投影图片作为已有深度学习模型的输入后,相比于以原始图像直接作为输入,3d目标检测的效果得到改善,但检测结果中的物体三维空间坐标和真实的物体三维空间坐标并不相同。在图4所示的相机坐标系中,原点o为相机所在位置,z轴为相机光轴,y轴垂直于纸面。若点b为柱面投影图片上的一点,已有深度学习模型能够检测到其像素点坐标为(u,v),并预测其深度为depth,按照原算法,已有深度学习模型能够依照小孔成像原理利用u,v和depth计算得到点b。但由于柱面投影的畸变,点b的真实三维空间点是点b’。因此,需要基于柱面投影模型,而非小孔成像原理,利用检测结果的u,v和depth值将点b’的三维空间坐标(xw,yw,zw)解算出来,才能得到点b的真实坐标。
[0115]
本实施例中,基于式(2)所示的柱面投影模型,在已知柱面投影图片中一点的像素点坐标u,v和深度depth的情况下,能够推导出该点对应的真实的三维空间坐标。计算该点真实的三维空间坐标的方法如式(14)(15)(16)所示。
[0116][0117][0118][0119]
其中,(xw,yw,zw)表示目标的真实三维空间坐标,u和v均表示深度模型检测目标的像素坐标,depth表示深度模型预测目标的深度,即目标距离相机光心的距离,f
x
和fy分别表示柱面投影在水平和垂直方向上的焦距,u0和v0是柱面投影在水平和垂直方向上的光心坐标。
[0120]
本实施例中,由于在执行3d目标检测时,已有深度学习模型能够准确检测出柱面投影图片中目标的中心点的像素点坐标u,v和深度depth,因此在使用柱面投影图片作为已有深度学习模型的输入时,将已有深度学习模型利用u,v和depth计算真实三维空间坐标的方法从基于小孔成像原理的方法改为式(14)(15)(16)所示的基于柱面投影模型方法,便能够得到柱面投影图片中目标的中心点的真实空间坐标。
[0121]
本实施例中,3d检测结果,3d检测结果包括三维空间内的目标属性信息、目标中心点坐标、目标外接框位置、目标朝向角等结果。也包括稠密深度、三维重建等结果。
[0122]
本实施例中,以2d/3d目标检测任务为例,但不限于2d/3d目标检测。
[0123]
本实施例中,3d检测结果包括三维空间内的目标属性信息、目标中心点坐标、目标
外接框位置、目标朝向角等结果。也包括稠密深度、三维重建等结果。
[0124]
实施例2
[0125]
如图3所示,本发明提供了一种用于众包数据的深度学习模型部署与训练方法,其包括部署阶段和训练阶段,本实施例2主要阐述基于众包数据的深度学习模型训练,本发明提供了一个用于众包数据的深度学习模型训练方法,能够基于任何已有深度学习模型训练出适用于众包数据的模型,优化迭代提升2d检测、3d检测、语义分割、深度恢复等性能,其实现方法如下:
[0126]
本实施例提供的训练流程中的相机外标定、生成投影变换查找表、图像投影变换与前述部署阶段的流程相同,这里不再赘述。下面对不同的步骤进行介绍;
[0127]
s6、标注数据投影变换:根据所述柱面投影转换后的新图像,对标注数据进行投影变换,以将深度学习模型的训练样本统一变换至柱面投影图像上。
[0128]
本实施例中,将众包数据图像用于训练深度学习模型时,由于前置步骤将异构图像统一转换为了柱面投影图像,需要相应地对标注数据进行投影变换。2d标注数据根据投影查找表变换即可。3d标注数据需要进行投影变换,以小孔标注为例,如图4所示,若b点为小孔图像上的一点,其标注的空间点坐标为(x,y,z),则需要将其坐标投影变换为柱面投影后对应的b’点坐标(x’,y’,z’)。计算方式如式(17)(18)所示。
[0129][0130][0131]
本实施例中,本发明可使用任意已有深度学习模型。通过图像投影和数据标注投影步骤将训练样本统一变换到柱面投影图像上,进而对已有深度学习模型进行训练,实现在众包数据上的优化迭代,不断提升模型性能。
[0132]
s7、深度学习模型训练:利用经统一变换后的深度学习模型的训练样本,对深度学习模型进行训练,完成对深度学习模型的训练。
[0133]
本实施例中,本发明可使用任意已有深度学习模型,通过图像投影和数据标注投影步骤将训练样本统一变换到柱面投影图像上,进而对已有深度学习模型进行训练,实现在众包数据上的优化迭代,不断提升模型性能。
[0134]
本实施例中,以使用已有深度学习模型和鱼眼图像完成2d目标检测和3d目标检测为例,以阐明本专利的技术效果。
[0135]
1)图像投影变换效果
[0136]
通过将柱面投影算法应用于鱼眼图像,实现鱼眼图像转换为柱面投影图片的效果。
[0137]
2)2d检测效果
[0138]
已有深度学习模型对柱面投影图像的2d检测结果,如图6所示。
[0139]
3)3d检测效果
[0140]
已有深度学习模型对柱面投影图像的3d检测结果,如图7所示。经过对比在真实空间中获得的实际测量数据和改进后的算法的预测数据,发现改进后的空间点坐标算法预测出的物体中心点空间坐标与实际测量的物体中心点空间坐标基本吻合。
[0141]
本实施例中,对于众包数据中的小孔图像,可以选择不进行柱面投影变换,直接作为输入完成后续的深度学习模型部署与训练流程。