本公开涉及图像处理领域,并且更确切地涉及图像上三维对象的检测。
背景技术:
已经提出了在由相机获取的图像上检测三维对象。
通常,还希望获得图像上可见对象的6d姿态。“6d姿态”是本领域技术人员众所周知的指定对象的三维位置和三维方向的组合的表达。
检测对象的已知方法并不令人满意。例如,已知方法可能要求使用深度信息(例如,使用本领域技术人员称为“rgb-d”或“rgb-depth”的图像)。已知方法也可能无法检测到特定对象,诸如具有麻烦的几何形状或纹理的对象,或者甚至小对象。
一些方法提供关于视点(在图像上看到对象的角度)或6d姿态的非常粗糙的信息。例如,一些方法仅指示从侧面或下方看到对象。
因此,需要改进的方法以处理图像,尤其是检测对象及其视点。
从现有技术中,已知以下文献:
-a.mousavian、d.anguelov、j.flynn和j.kosecka。“3dboundingboxestimationusingdeeplearningandgeometry(使用深度学习和几何的3d边界框估计)”。arxiv:1612.00496,2016。
-p.poirson、p.ammirato、c.-y.fu、w.liu、j.kosecka和a.c.berg。“fastsingleshotdetectionandposeestimation(快速单发检测和姿态估计)”。in3dv,2016。
-w.liu、d.anguelov、d.erhan、c.szegedy、s.reed、c.-y.fu、和a.c.berg。“ssd:singleshotmultiboxdetector(ssd:单发multibox检测器)”。ineccv,2016。
技术实现要素:
本公开通过提出用于处理图像的方法克服现有技术的一个或更多个缺陷,该方法包括将图像输入神经网络,该神经网络被配置为:
获得多个特征图,每个特征图具有相应分辨率和相应深度,
对每个特征图执行分类,以对于每个特征图,实现(deliver):
-在图像上可见的至少一个对象(一个或多个对象)的类型,
-围绕至少一个对象的至少一个二维边界框的图像中的位置和形状,
-对于至少一个对象的至少一个可能的视点,
-对于至少一个对象的至少一个可能的面内旋转。
举例来说,图像可以是彩色图像,诸如技术人员已知的rgb(红-绿-蓝)图像。
特征图是向量的矩阵,表达分辨率针对于矩阵的分辨率并且深度与矩阵的向量的深度有关。
在本申请中使用的表达“神经网络”可以覆盖多个已知网络的组合。例如,可以使用第一子网来执行获得多个特征图的步骤。技术人员将知道使用哪个子网以获得具有相应的分辨率和相应的深度的特征图。
执行分类的步骤也可以由第二子网执行。对于每个特征图,技术人员将知道使用哪个子网以实现:
-在图像上可见的至少一个对象的类型,
-围绕至少一个对象的至少一个二维边界框的图像中的位置和形状,
-对于至少一个对象的至少一个可能的视点,
-对于至少一个对象的至少一个可能的面内旋转。
应当注意的是技术人员知道边界框是具有包围对象的坐标的虚拟矩形。如果确定了多个对象则每个对象与至少一个边界框相关联。边界框可以从多个预定的边界框中选择;分类步骤被配置成确定最佳边界框(即,最接近对象的边界框)。
在可以检测到的预定的对象组中选择对象的类型。
视点是从图像上看到对象的角度,例如从参考角度测量。
面内旋转是围绕图像获取模块或相机的光轴的旋转,用于获取图像。
举例来说,神经网络可以输出更多个信息组中的一组,每组与图像上可见的对象相关联,每组包括对象的类型、围绕对象的边界框的位置和形状、视点以及面内旋转。
如果在图像上可见多个对象,那么,神经网络可以输出至少两个如以上定义的信息组。
而且,神经网络可以输出用于相同对象的两组或更多组信息,例如,在与视点有关的两组之间具有差异。
应当注意的是使用所述神经网络允许使用大规模并行单通网络,使计算速度极大地提高(已经观察到上述方法在10hz附近工作,即每秒10张图像),并且允许获得良好的精度。
此外,通过执行实现可能的视点的分类,能够在预定的视点组中选择视点。因此,这允许获得由网络预测的视角的改善精度。例如,可以以5度或更小的量级的精度来确定视角。
根据实施例,图像是彩色图像(例如,rgb图像),或者是彩色和深度图像(例如,rgb-d图像)。
应当注意的是深度的使用提高了方法的准确性。
根据实施例,借助于内核感知器执行分类。
根据实施例,获得多于两个特征图,或者获得六个特征图,每个特征图具有不同的分辨率。
本发明的发明人已经观察到利用六个特征图获得良好的结果。使用变化的分辨率(以及至少一些特征图的深度)允许处理图像上可见的不同比例的对象。
根据实施例,方法进一步包括使用对于至少一个对象的至少一个可能的视点,以及对于至少一个对象的至少一个可能的面内旋转来获得至少一个对象的6d姿态。
已经观察到的是能够解析神经网络的输出以便获得至少一个对象的6d姿态。最为显著地,应当注意的是获得视点和面内旋转允许获得6d姿态。
举例来说,能够对视点和面内旋转执行分类以便获得平移矩阵和旋转矩阵形式的6d姿态。
根据实施例,获得6d姿态进一步包括使用基于颜色的方法、或基于轮廓的方法或基于深度的方法来改善6d姿态。
例如,基于深度的方法可以使用icp(迭代最近点)方法。
如果使用rgb图像,那么,能够渲染(render)对象以便验证其与图像上最初呈现的对象对齐。
根据实施例,方法进一步包括神经网络的初步训练,所述初步训练包括输入其中至少一个三维模板对象已经被渲染到神经网络的模板图像。
渲染三维模板对象意指详细说明该模板对象的投影以选定的角度可见的图像。
优选地,方法将用于包括已被用作模板对象的对象的图像上。
通过使用所述渲染,能够更好地处理对称对象以消除由于对称而导致的视点混乱。
根据实施例,所述初步训练进一步包括:使用所述神经网络来获得:
-在模板图像上可见的至少一个模板对象的类型,
-围绕至少一个对象的至少一个二维边界框的模板图像中的位置和形状,
-对于至少一个模板对象的至少一个可能的视点,
-对于至少一个模板对象的至少一个可能的面内旋转,
并且在以下等式中最小化l:
其中:
pos表示具有包围模板对象的预定义部分面积的面积的边界框,
neg表示具有不包围模板对象的预定义部分面积的面积的边界框,
b是属于pos或neg的边界框,
lclass是与归因于分类的误差相关联的损失,
lfit是与边界框的角的位置的误差相关联的损失,
lview是与归因于视点的误差相关联的损失,
linplane是与归因于面内旋转的误差相关联的损失,
α、β和γ是预定系数。
举例来说,lclass、lview,和linplane可以以本领域技术人员已知的方式通过softmax交叉熵损失获得。
同样举例来说,lfit可以以本领域技术人员已知的方式通过平滑的l1回归获得。
l(pos,neg)是本领域技术人员认为表示在神经网络训练期间要最小化的能量的损失函数。替选地,l(pos,neg)被认为是在神经网络训练期间要最小化的目标函数。
α、β和γ可以根据在神经网络训练期间归因于每个损失的重要性来选择。
根据实施例,在预定的视点组中选择可能的视点,并且其中:
如果模板对象是对称的,那么,预定的视点组中的视点被全部放置在以模板对象为中心的球体的弧上,
如果模板对象是半对称的,那么预定的视点组中的视点被全部放置在以模板对象为中心的球体的一个半球上。
这允许改善神经网络的检测对称的或半对称的对象的能力。
应当注意的是在本申请中,对称对象是呈现轴对称的对象,诸如瓶子或诸如圆柱形对象(对于这些对象,对称轴经过对象的中心)。
而且,在本申请中,半对称的对象是呈现平面对称性的对象,有时称为左右对称(小虫或勺子属于此类,对于这些对象,有通过对象的中心轴的对称平面)。
根据实施例,神经网络输出更多信息组中的一组,每组与图像上可见的对象相关联,每组包括对象的类型、围绕对象的边界框的位置和形状、视点以及面内旋转,并且方法进一步包括:
详细说明由神经网络输出的每组的分数(例如标量值),
比较每个分数与预定阈值,
只保留具有高于所述阈值的分数的组。
可以获得分数以便说明信息组的准确性。本领域技术人员可以在校准步骤期间选择用于计算分数的公式。
此外,可以在校准步骤期间设置所述预定阈值。
根据实施例,方法包括非最大值抑制,其中,如果由神经网络输出的两个信息组的两个边界框重叠超过面积阈值,那么,保留具有最高分数的信息组。
这个面积阈值可以被确定为两个边界框中的每个的面积的百分比。百分比可以是50%。例如,如果边界框与另一个边界框的面积的50%重叠,则验证条件。
实施例允许保留具有最佳准确性的信息组。
根据实施例,使用至少一个边界框的对角线长度来确定对象与已获取图像的图像获取模块之间的距离。
根据第二方面,本发明还提出用于处理图像的系统,系统包括可以被输入图像的神经网络,神经网络被配置成:
获得多个特征图,每个特征图具有相应的分辨率和相应的深度,
对每个特征图执行分类,以对于每个特征图,实现:
-在图像上可见的至少一个对象的类型,
-围绕至少一个对象的至少一个二维边界框的图像中的位置和形状,
-对于至少一个对象的至少一个可能的视点,
-对于至少一个对象的至少一个可能的面内旋转。
这个系统可以被配置成执行上述用于处理图像的方法的所有实施例。
在一个特定实施例中,用于处理图像的方法的步骤由计算机程序指令确定。
因此,当这个程序由计算机执行时,本发明还针对用于执行如上所述的方法的步骤的计算机程序。
这个程序可以使用任何编程语言并采用源代码,对象代码或源代码与对象代码之间的中间的代码的形式,诸如部分编译的形式或任何其他期望的形式。
本发明还针对包含上述计算机程序的指令的计算机可读信息介质。
信息介质可以是能够存储程序的任何实体或设备。例如,介质可以包括诸如rom的存储装置,例如cdrom或微电子电路rom,或磁性存储装置,例如软盘(diskette)(软盘:floppydisk)或硬盘。
替选地,信息介质可以是其中包含程序的集成电路,电路适于执行所讨论的方法或在其执行中使用。
附图说明
现在将参考附图以示例的方式描述如何实施本公开,其中:
-图1是根据示例的用于处理图像的示例性方法的框图,
-图2是根据示例的用于处理图像的示例性系统的框图。
-图3示出了用于对象的一组可能的视点,并且,
-图4示出了用于训练神经网络的各种图像。
具体实施方式
下文将描述用于处理图像的示例性方法和系统。
图1示出了用于处理图像的方法。如将在下文中解释的,这个方法还能够确定在图像上可见的对象的6d姿态。然而,本发明不限于确定在图像上可见的对象的6d姿态。
要处理的图像在图1上被引用为img。在这个示例中,图像具有宽度为299像素和高度为299像素的分辨率。图像img是rgb图像,因此,图像的每个像素与三个值相关联。
为了处理图像img,这个图像被输入到图1示出的神经网络1。如果图像img进一步包括深度信息(例如,如果它是rgb-d图像),只有rgb值可以被输入到神经网络1,然而,深度信息可以用于在随后的改善步骤中使用。
神经网络1被配置成获得多个特征图,每个特征图具有相应的分辨率和相应的深度。为此,神经网络1包括能够详细说明六个特征图的子网2。六个功能图分别具有不同的分辨率。
例如,第一特征图4a具有71乘以71的分辨率和384的深度。第二特征图4b具有35乘以35的分辨率和384的深度。第三特征图4c具有17乘以17的分辨率和1024的深度。第四特征图4d具有9乘以9的分辨率和1536的深度。第五个特征图4e具有5乘以5的分辨率和1024的深度。第六个特征图4f具有3乘以3的分辨率和1024的深度。
本领域技术人员将能够选择应使用多少特征图以及它们的分辨率和深度。例如,可以作为应用程序的功能执行校准步骤以确定特征图的数量、它们的分辨率和它们的深度。使用不同的分辨率允许检测具有各种比例的对象。
优选地,子网2是本领域技术人员已知的作为inceptionv4的网络,并且在c.szegedy,s.ioffe和v.vanhoucke的“inception-resnetandtheimpactofresidualconnections(inception-resnet和残余连接的影响)”中进行了描述。
优选地,在先前步骤中训练子网2。
对于每一个特征图,神经网络1进一步被配置成对每一个特征图执行分类,以对于每个特征图,实现:
-在图像上可见的至少一个对象的类型,
-围绕至少一个对象的至少一个二维边界框的图像中的位置和形状,
-对于至少一个对象的至少一个可能的视点,
-对于至少一个对象的至少一个可能的面内旋转。
为此,神经网络1包括子网2。优选地,子网2是分类器,例如内核感知器。
子网2接收六个特征图4a至4f作为输入。例如,如果ws、hs和cs分别对应于比例s的宽度,高度和通道深度(s指示特征图4s的标记)。对于每个特征图4s,可以使用具有分辨率为3乘以3,深度为cs的内核感知器。这个内核感知器将显著地实现用于对象类型、视点和面内旋转的分数。
还可以在不同位置(优选地预定长宽比和预定位置)向数量为bs的可能的边界框提供不同的长宽比。
然后,接收到4s作为输入的内核感知器的输出可以是具有分辨率为ws乘以hs的特征图,其深度为:
bs×(c v r 4)
并且c是可能的对象类别的数量,v是可能的视点的数量,并且r是可能的面内旋转的数量。
举例来说,可以使用具有不同形状和大小的21222个可能的边界框。
因此,获得六个特征图5a、5b、5c、5d、5e和5f作为内核感知器的输出。这些功能图可以被解释为指示:
-在图像上可见的至少一个对象的类型,例如在每个特征图4s上,
-在这个特征图4s上的围绕至少一个对象的至少一个二维边界框的图像中的位置和形状,
-对于在这个特征图4s上的至少一个对象的至少一个可能的视点,
-对于在这个特征图4s上的至少一个对象的至少一个可能的面内旋转。
然后,执行非最大值抑制步骤6。
然后,获得六个带注释的图像7a、7b、7c、7d、7e和7f。从这些图像中,边界框围绕检测到的对象,并提供关于对象的类型、对象的视点和面内旋转的信息。
从这些结果能够推理出每个这些对象的6d姿态。
参考图1描述的方法的步骤可以由计算机指令来确定。这些指令可以在如图2所示的系统的处理器上执行。
在这个图上,已经示出了系统10。这个系统包括处理器11,配置成获取图像的获取模块12,以及存储器13。
存储器13可以是非易失性存储器并且它包括可以由处理器11执行的一组指令(或计算机程序)inst以执行参考图1描述的方法。指令组inst包括:
-指令14,该指令14获得多个特征图,每个特征图具有相应的分辨率和相应的深度,
-指令15,该指令15对每个特征图执行分类,以对于每个特征图,实现:
-在图像上可见的至少一个对象的类型,
-围绕至少一个对象的至少一个二维边界框的图像中的位置和形状,
-对于至少一个对象的至少一个可能的视点,
-对于至少一个对象的至少一个可能的面内旋转。
图3示出了渲染的三维模板对象obj。在图1的方法的神经网络的训练期间,可以将这个对象渲染到图像上。
图3还示出了一组可能的视点。
更准确地,可能的视点20被放置在以模板对象obj为中心的球体的弧上。这些视点对于对称对象是足够的。
附加视点22和21均被放置在以模板对象obj为中心的球体的半球上。对于半对称对象,能够仅使用视点20和21或者20和22。对于不对称的对象,可以使用所有视点20、21、22。
这有利于确定对称或半对称的对象的视点,对于其当使用现有技术的方法时,在视点的确定中存在混淆。
实际上,在训练神经网络期间,对于(半)对称对象仅使用有限的视点组以便更好地训练神经网络。
当训练后使用神经网络处理图像时,一旦检测到对象,将仅对有限的视点组进行分类以便确定视点。
图4示出了用于训练参考图1中公开的方法的神经网络的各种图像,其通常在执行这个方法的步骤之前被执行(并且可以被指定为初步训练)。
优选地,这个训练包括输入其中至少一个三维模板对象已经被渲染到神经网络的模板图像。例如,参考图3描述的模板对象obj可以被渲染到图像中,然后,该图像成为已获得的模板图像的背景。
在图4上,表示了四个模板图像,并且在每个模板图像中,已经渲染了几个模板对象。
在这个示例中,将照片用作背景并在此背景上渲染模板对象以形成模板图像。
发明人已经观察到使用照片作为背景比使用完全合成的图像(例如,由计算机生成的)会产生更好的训练结果。
已经由本发明的神经网络检测到的对象被图中的边界框包围,例如,这些都是由神经网络输出并在一组边界框中被选择的所有边界框。更准确地说,图中表示的边界框具有包围模板对象的预定义部分面积的面积。
与已经被渲染的模板对象相关联的边界框可以在具有包围模板对象的预定义部分面积的面积的边界框与不验证条件的其余边界框之间进行排序。
本领域技术人员可以将上述条件称为“联合交集”并且可以将用于验证条件的阈值设置为边界框面积的50%。
然后,训练进一步包括:
使用所述神经网络来获得:
-在模板图像上可见的至少一个模板对象的类型,
-围绕至少一个对象的至少一个二维边界框的模板图像中的位置和形状,
-对于至少一个模板对象的至少一个可能的视点
-对于至少一个模板对象的至少一个可能的面内旋转,
并且在以下等式中最小化l:
其中:
pos表示具有包围模板对象的预定义部分面积的面积的边界框,
neg表示具有不包围模板对象的预定义部分面积的面积的边界框,
b是属于pos或neg的边界框,
lclass是与归因于分类的误差相关联的损失,
lfit是与边界框的角的位置的误差相关联的损失,
lview是与归因于视点的误差相关联的损失,
linplane是与归因于面内旋转的误差相关联的损失,
α、β和γ是预定系数。
1.一种用于处理图像的方法,所述方法包括将所述图像输入到神经网络(1),所述神经网络被配置成:
获得(2)多个特征图(4a、…、4f),每个特征图具有相应的分辨率和相应的深度,
对每个特征图执行(3)分类,以对于每个特征图,实现:
-在所述图像上可见的至少一个对象的类型,
-围绕所述至少一个对象的至少一个二维边界框的所述图像中的位置和形状,
-对于所述至少一个对象的至少一个可能的视点,
-对于所述至少一个对象的至少一个可能的面内旋转。
2.根据权利要求1所述的方法,其中,所述图像是彩色图像,或者是彩色和深度图像。
3.根据权利要求1或2所述的方法,其中,借助于内核感知器(3)执行所述分类。
4.根据权利要求1至3中的任意一项所述的方法,其中,获得多于两个特征图,或者获得六个特征图(4a、…、4f),所述特征图每个都具有不同的分辨率。
5.根据权利要求1至4中的任意一项所述的方法,进一步包括使用用于至少一个对象的所述至少一个可能的视点,以及用于所述至少一个对象的所述至少一个可能的面内旋转,来获得所述至少一个对象的6d姿态。
6.根据权利要求5所述的方法,其中,获得所述6d姿态进一步包括使用基于颜色的方法、或者基于轮廓的方法、或者基于深度的方法来改善所述6d姿态。
7.根据权利要求1至6中的任意一项所述的方法,进一步包括所述神经网络的初步训练,所述初步训练包括输入模板图像,其中,至少一个三维模板对象已被渲染到所述神经网络。
8.根据权利要求7所述的方法,其中,所述初步训练进一步包括:
使用所述神经网络,获得:
-在所述模板图像上可见的至少一个模板对象的类型,
-围绕所述至少一个对象的至少一个二维边界框的所述模板图像中的位置和形状,
-对于所述至少一个模板对象的至少一个可能的视点,
-对于所述至少一个模板对象的至少一个可能的面内旋转,
并且在以下等式中最小化l:
其中:
pos表示具有包围模板对象的预定义部分面积的面积的所述边界框,
neg表示具有不包围模板对象的预定义部分面积的面积的所述边界框,
b是属于pos或neg的边界框,
lclass是与归因于分类的误差相关联的损失,
lfit是与边界框的角的位置的误差相关联的损失,
lview是与归因于视点的误差相关联的损失,
linplane是与归因于面内旋转的误差相关联的损失,
α、β和γ是预定系数。
9.根据权利要求8所述的方法,其中,在预定的视点组中选择所述可能的视点,并且其中:
如果模板对象是对称的,那么,所述预定的视点组中的所述视点被全部放置在以所述模板对象为中心的球体的弧上,
如果模板对象是半对称的,那么,所述预定的视点组中的所述视点被全部放置在以所述模板对象为中心的球体的一个半球上。
10.根据权利要求1至9中的任意一项所述的方法,所述神经网络输出每组都与所述图像上可见的对象相关联的更多信息组之一,所述每组包括所述对象的类型、围绕所述对象的边界框的位置和形状、所述视点以及所述面内旋转,并且所述方法进一步包括:
详细说明由所述神经网络输出的每组的分数(例如标量值),
比较每个分数与预定阈值,
只保留具有高于所述阈值的分数的所述组。
11.根据权利要求10所述的方法,包括非最大值抑制,其中,如果由所述神经网络输出的两个信息组的两个边界框重叠超过面积阈值,那么,保留具有最高分数的所述信息组。
12.根据权利要求1至11中的任意一项所述的方法,其中,使用所述至少一个边界框的对角线长度,来确定所述对象与已获取所述图像的图像获取模块之间的距离。
13.一种用于处理图像的系统,所述系统包括能够被输入所述图像的神经网络,所述神经网络被配置成:
获得多个特征图,每个特征图具有相应的分辨率和相应的深度,
对每个特征图执行分类,以对于每个特征图,实现:
-在所述图像上可见的至少一个对象的类型,
-围绕所述至少一个对象的至少一个二维边界框的所述图像中的位置和形状,
-对于所述至少一个对象的至少一个可能的视点,
-对于所述至少一个对象的至少一个可能的面内旋转。
14.一种包括指令的计算机程序,当所述程序由计算机执行时,所述指令用于执行根据权利要求1至12中的任意一项所述的方法的步骤。
15.一种能够由计算机读取的记录介质,在所述记录介质上记录有计算机程序,所述计算机程序包括用于执行根据权利要求1至12中的任意一项所述的方法的步骤的指令。
技术总结