本公开涉及计算机视觉技术,尤其是涉及一种对象三维检测方法、对象三维检测装置、智能驾驶控制方法、智能驾驶控制装置、电子设备、计算机可读存储介质以及计算机程序。
背景技术:
对象三维检测即对象三维检测,通常用于预测出对象的空间位置、运动方向以及3d尺寸等三维空间参数。例如,在智能驾驶技术中,需要针对路面上的其他车辆进行三维检测,以获得其他车辆的三维长方体、车辆行驶方向以及与拍摄装置的位置关系等。准确的获得对象的三维检测结果,有利于提高智能驾驶的安全性。
技术实现要素:
本公开实施方式提供一种对象三维检测和智能驾驶控制技术方案。
根据本公开实施方式其中一方面,提供一种对象三维检测方法,包括:获取待处理图像中的目标对象的至少一预定关键点的二维坐标;根据所述预定关键点的二维坐标,构建所述目标对象在二维空间中的伪三维检测体;获取所述伪三维检测体多个顶点的深度信息;根据所述伪三维检测体多个顶点的深度信息,确定所述目标对象在三维空间中的三维检测体。
根据本公开实施方式的其中再一方面,提供一种智能驾驶控制方法,包括:通过车辆上设置的摄像装置获取所述车辆所在路面的视频流;采用本公开的对象三维检测方法,对所述视频流包括的至少一帧图像进行目标对象的三维检测,获得所述目标对象在三维空间中的三维检测体;根据所述三维检测体生成所述车辆的控制指令;向所述车辆发送所述车辆控制指令。
根据本公开实施方式其中再一方面,提供一种对象三维检测装置,包括:获取二维坐标模块,用于获取待处理图像中的目标对象的至少一预定关键点的二维坐标;构建模块,用于根据所述预定关键点的二维坐标,构建所述目标对象在二维空间中的伪三维检测体;获取深度信息模块,用于获取所述伪三维检测体多个顶点的深度信息;确定三维检测体模块,用于根据所述伪三维检测体多个顶点的深度信息,确定所述目标对象在三维空间中的三维检测体。
根据本公开实施方式其中再一方面,提供一种智能驾驶控制装置,包括:获取视频流模块,用于通过车辆上设置的摄像装置获取所述车辆所在路面的视频流;对象三维检测装置,用于对所述视频流包括的至少一帧图像进行目标对象的三维检测,获得所述目标对象在三维空间中的三维检测体;生成指令模块,用于根据所述三维检测体生成所述车辆的控制指令;发送指令模块,用于向所述车辆发送所述车辆控制指令。
根据本公开实施方式再一方面,提供一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现本公开任一方法实施方式。
根据本公开实施方式再一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现本公开任一方法实施方式。
根据本公开实施方式的再一个方面,提供一种计算机程序,包括计算机指令,当所述计算机指令在设备的处理器中运行时,实现本公开任一方法实施方式。
基于本公开提供的对象三维检测方法和装置、智能驾驶控制方法和装置、电子设备、计算机可读存储介质及计算机程序,通过利用待处理图像中的目标对象的至少一预定关键点的二维坐标,构建伪三维检测体,并利用该伪三维检测体多个顶点的深度信息形成目标对象的三维检测体,可以在不完全使用神经网络的情况下,实现对象三维检测,从而有利于促使本公开提供的技术方案应用于计算资源有限的应用场景中。由于本公开中的构建伪三维检测体、获取伪三维检测体多个顶点的深度信息以及形成目标对象的三维检测体,这三部分可以各自实现,且每一部分所形成的结果作为另一部分的输入参数即可,因此,有利于降低这三部分之间的耦合度,从而有利于便捷的优化对象三维检测的实现过程。
由此可知,本公开提供的技术方案有利于在计算资源消耗较小的情况下,提高对象三维检测的准确性,从而有利于在保证低实现成本的情况下,提高智能驾驶的安全性。
下面通过附图和实施方式,对本公开的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本公开的实施方式,并且连同描述一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1为本公开的对象三维检测方法一个实施方式的流程图;
图2为本公开的待处理图像中目标对象的预定关键点一个实施方式的示意图;
图3为本公开的待处理图像中目标对象的预定关键点另一个实施方式的示意图;
图4为本公开的待处理图像中目标对象的预定关键点再一个实施方式的示意图;
图5为本公开的投影为鸟瞰图一个实施方式的示意图;
图6为本公开的伪三维检测体的示意图;
图7为本公开的对象三维检测方法另一个实施方式的流程图;
图8为本公开的根据截面和厚度构建的一伪三维检测体的示意图;
图9为本公开的根据截面和厚度构建的另一伪三维检测体的示意图;
图10为本公开的对象三维检测方法再一个实施方式的流程图;
图11为本公开的伪三维检测体的示意图;
图12为本公开的对象三维检测方法再一个实施方式的流程图;
图13为本公开的智能驾驶控制方法一个实施方式的流程图;
图14为本公开的对象三维检测装置一个实施方式的结构示意图;
图15为本公开的智能驾驶控制装置一个实施方式的结构示意图;
图16为实现本公开实施方式的一示例性设备的框图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式以及数值不限制本公开的范围。同时,应当明白的是,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法以及设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。应当注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机系统及服务器等电子设备,其可与众多其它通用或专用的计算系统环境或者配置一起操作。适于与终端设备、计算机系统以及服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子,包括但不限于:车载设备、个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统以及服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑以及数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
示例性实施例
图1为本公开的对象三维检测方法一个实施例的流程图。
如图1所示,该实施例方法包括:s100、s110、s120以及s130。下面对各步骤进行详细描述。
s100、获取待处理图像中的目标对象的至少一预定关键点的二维坐标。
在一个可选示例中,本公开中的待处理图像可以为图片、照片等或者视频帧等。例如,设置在可移动的物体上的摄像装置所摄取的视频中的视频帧,再例如,设置在固定位置的摄像装置所摄取的视频中的视频帧。上述可移动的物体可以包括但不限于:车辆、机器人或者机械臂等。上述固定位置可以包括但不限于:桌面、墙壁以及路边等。
在一个可选示例中,本公开中的待处理图像可以是利用普通的高清摄像装置所获得的图像,如利用ir(infraredray,红外线)摄像头、rgb(redgreenblue,红绿蓝)摄像头等摄取的图像。本公开可以避免必须使用雷达测距装置以及深度摄像装置等高配置硬件,而导致的实现成本较高等现象。
在一个可选示例中,本公开中的目标对象通常至少包括:前、后、左、右四个面。例如,本公开中的目标对象可以包括但不限于:车辆、行人、动物、建筑物、植物、障碍物、危险物、交通标识物或者物品等。其中的车辆包括但不限于:二轮机动车(如二轮摩托车、电动自行车等)、二轮以上(不含二轮)机动车(如三轮摩托车、三轮机动车、四轮机动车等)、二轮非机动车(如自行车)或者二轮以上(不含二轮)非机动车(如人力三轮车)等。由于本公开中的目标对象可以为多种不同形式,因此,本公开有利于提高对象三维检测的通用性。
在一个可选示例中,本公开中的目标对象的预定关键点是具有语义的关键点。目标对象的预定关键点通常包括:目标对象的外轮廓关键点。
例如,在目标对象为二轮以上机动车或者二轮以上非机动车的情况下,本公开中的目标对象的预定关键点可以包括但不限于:车辆左前角关键点(如图2中的1,下述简称左前下)、车顶左前角关键点(如图2中的2,下述简称左前上)、车顶左后角关键点(如图2中的3,下述简称左后上)、车辆左后角关键点(如图2中的4,下述简称左后下)、左后轮底部关键点(如图2中的5,下述简称左后轮)、左前轮底部关键点(如图2中的6,下述简称左前轮)、车辆右前角关键点(如图2中的7,下述简称右前下)、车顶右前角关键点(如图2中的8,下述简称右前上)、车顶右后角关键点(与图2中的3左右对称,图2中未标注,下述简称右后上)、车辆右后角关键点(与图2中的4左右对称,图2中未标注,下述简称右后下)、右后轮底部关键点(与图2中的5左右对称,图2中未标注,下述简称右后轮)、右前轮底部关键点(与图2中的6左右对称,图2中未标注,下述简称右前轮)、车门关键点(如图2中的12)、后视镜关键点(如图2中的11)、车牌关键点(如图2中的9)以及车灯关键点(如图2中的10)中的至少一个。其中的车门关键点可以包括:左前车门关键点、左后车门关键点、右前车门关键点以及右后车门关键点中的至少一个。其中的车牌关键点可以包括:前车牌关键点和后车牌关键点中的至少一个。其中的车灯关键点可以包括:左前车灯关键点、右前车灯关键点、左后车灯关键点和右后车灯关键点中的至少一个。由上述描述可知,本公开中的预定关键点所具有的语义,可以表示出预定关键点在车辆上的具体位置。
再例如,在目标对象为二轮机动车(注:不包含骑行者)或者二轮非机动车(注:不包含骑行者)的情况下,本公开中的预定关键点可以包括但不限于:前轮中心关键点(如图3中的a)、后轮中心关键点(如图3中的b)、前轮接地关键点(如图3中的c)、后轮接地关键点(如图3中的d)、车座支撑关键点(如图3中的e)、踏脚轴承关键点(如图3中的f)、车把中心关键点(如图3中的g)、车把左端关键点(如图3中的h)、车把右端关键点(如图3中的i)、前轮前端关键点(如图3中的p)以及后轮后端关键点(如图3中的q)中的一个或者多个。
再例如,在目标对象为二轮机动车及骑行者或者二轮非机动车及其骑行者的情况下,本公开中的预定关键点包括但不限于:前轮中心关键点(如图4中的a)、后轮中心关键点(如图4中的b)、前轮接地关键点(如图4中的c)、后轮接地关键点(如图4中的d)、车座支撑关键点(如图4中的e)、踏脚轴承关键点(如图4中的f)、车把中心关键点(如图4中的g)、车把左端关键点(如图4中的h)、车把右端关键点(如图4中的i)、骑行者的肩部左关键点(如图4中的j)、骑行者的肩部右关键点(如图4中的k)以及骑行者的头顶关键点(如图4中m)中的一个或者多个。可选的,预定关键点还可以包括:前轮前端关键点和后轮后端关键点。
在一个可选示例中,预定关键点可以是对待处理图像进行关键点检测,而获得的目标对象的所有关键点,也可以是从检测获得的目标对象的多个关键点中筛选出的关键点。例如,本公开先通过关键点检测获得待处理图像中的目标对象的所有关键点,然后,将所有关键点中的可信度超过预设可信度阈值的关键点,作为目标对象的预定关键点。本公开通过将预测可信度高的关键点作为预定关键点,有利于提高构建出的伪三维长方体的准确性。
可选的,本公开在获得目标对象的预定关键点的情况下,通常会继续执行本公开的对象三维检测方法中的其他步骤,否则,不再执行对象三维检测方法中的其他步骤,从而有利于节约计算资源。本公开可以在未成功获得目标对象的预定关键点的情况下,由本公开的对象三维检测方法切换为现有的对象检测方法。例如,切换为目标对象的二维目标检测方法,以执行获取目标对象的二维目标检测的操作。另外,本公开在未获得目标对象的关键点的情况下,可以由本公开的对象三维检测方法切换为现有的对象三维检测方法,例如,根据基于雷达测距装置获得的点云数据,实现目标对象三维检测。
在一个可选示例中,本公开可以利用神经网络(如基于深度学习的卷积神经网络等)来获取待处理图像中的目标对象的关键点。
例如,将包含有目标对象的待处理图像输入神经网络中,经由该神经网络对待处理图像进行关键点检测处理,从而根据神经网络输出的信息可以获得目标对象的各关键点,如获得关键点的编号以及关键点在待处理图像中的二维坐标。
再例如,先对待处理图像进行目标对象检测处理,从而获得包含有目标对象至少部分的二维目标检测框,之后,根据该二维目标检测框对待处理图像进行切分处理,从而获得目标对象图像块(即包含有目标对象至少部分的图像块,例如,包含有四轮机动车至少部分的图像块),再将目标对象图像块输入神经网络中,经由该神经网络对目标对象图像块进行关键点检测处理,从而根据神经网络输出的信息可以获得目标对象的各关键点,如获得关键点的编号以及关键点在目标对象图像块中的二维坐标,进而本公开可以将目标对象的各关键点在目标对象图像块中的二维坐标转换为目标对象的各关键点在待处理图像中的二维坐标。
上述二维目标检测框可以为:针对二轮机动车的二维目标检测框、针对二轮非机动车的二维目标检测框、针对二轮机动车和该二轮机动车的骑行者的二维目标检测框、或者针对二轮非机动车和该二轮非机动车的骑行者的二维目标检测框。在一些应用场景中,在目标对象包括:二轮机动车及其骑行者的情况下,本公开通过对待处理图像进行目标对象检测,可以获得包括有二轮机动车至少部分的二维目标检测框,也可以获得包括有二轮机动车及其骑行者至少部分的二维目标检测框。在另一些应用场景中,在目标对象包括:二轮非机动车及其骑行者的情况下,本公开通过对待处理图像进行目标对象检测,可以获得包括有二轮非机动车至少部分的二维目标检测框,也可以获得包括有二轮非机动车及其骑行者至少部分的二维目标检测框。
在一个可选示例中,本公开中的用于获得目标对象的预定关键点的神经网络可以包括但不限于:卷积层、非线性relu层、池化层和全连接层等,该神经网络所包含的层数越多,则网络越深。本公开的神经网络可以使用stackhourglass(堆栈沙漏)神经网络框架结构,也可以采用基于asm(activeshapemodel,主动形状模型)、aam(activeappearncemodel,主动表观模型)或者基于级联形状回归算法的神经网络框架结构,本公开对此并不限制。
s110、根据预定关键点的二维坐标,构建目标对象在二维空间中的伪三维检测体。
在一个可选示例中,本公开中的伪三维检测体实际上是基于二维多边形构造出来的多面体。视觉之所以可以从二维多边形感受到多面体,可能的因素包括:通过人眼的双目视差可以进行“脑补深度”或者人眼可以根据一定策略对二维多边形进行立体构造等。但是,由于实际上这样的二维多边形只有二维坐标,并没有实际深度信息,因此,本公开称之为“伪三维检测体”。具有深度信息的空间多面体,相应称为“三维检测体”。虽然伪三维检测体并不是三维空间中的真实的立体形状,但是,该伪三维检测体同样包括:左侧面、右侧面、前面、后面、顶面和底面,且这六个面所形成的容置空间至少框入目标对象的部分或者全部。而且,伪三维检测体的长宽高一定程度上可以反映出目标对象的长宽高。本公开中的三维空间通常为真实世界的三维空间,例如,基于摄像装置的三维坐标系的三维空间等。
可选的,本公开中的目标对象的伪三维检测体通常是:在二维平面中至少可以将目标对象的部分或者全部框于其中的长方体,如在二维平面中将目标对象的部分或者全部框于其中的长方体。该长方体是通过在二维平面中作图构造出来的,并不是利用真实三维空间的深度信息构造出的长方体,而是存在于二维平面中的一长方体,本公开可以将其称为“伪三维长方体”。伪三维长方体的各条边在二维平面的组合所形成的外部轮廓通常呈现不规则形状。本公开可以将伪三维长方体的长宽高看作是伪三维长方体所框入的目标对象的长宽高。在一些应用场景中,伪三维长方体可以认为是二维平面中的目标对象的外接长方体。本公开中的伪三维长方体包括:伪三维正方体。可选的,伪三维检测体也可以是二维平面中的至少将部分目标对象框于其中的平行六面体等其他形状的多面体。
需要特别说明的是,在一些应用场景中,本公开中的伪三维检测体可以为:厚度(即宽)被简化设置为预定值的伪三维检测体。本公开中的预定值可以为:近似为零的较小数值。对于二轮机动车、二轮非机动车、二轮以上机动车以及二轮以上非机动车而言,目标对象的长度对应车身长度方向,目标对象的宽度对应车身宽度方向,目标对象的高度对应车身高度方向。一个可选的例子:对于二轮机动车(如自行车、二轮摩托车)或者行人或者交通标识物等自身厚度较薄的目标对象而言,本公开中的伪三维检测体可以为:厚度被简化设置为一近似为零的较小值的伪三维检测体。然而,对于二轮以上机动车、二轮以上非机动车等目标对象而言,伪三维检测体的厚度通常不是预先设置的预定值。自身厚度较薄通常可以认为是:相对于自身的其他尺寸而言,厚度数值较小。例如,相对于自行车的长度(如前后车轮的最外侧点之间的距离)以及高度(如车把的最高点与地面之间的距离)而言,自行车的厚度(如两车把最外侧点之间的距离)通常较小。
在一个可选示例中,本公开可以对利用神经网络获得的目标对象的所有关键点,进行筛选处理,如筛选出置信度高于预定置信度阈值的关键点,并将筛选出的关键点作为符合预测准确度要求的预定关键点,再利用筛选出的预定关键点的二维坐标,在二维平面,构建目标对象的伪三维检测体。
一个可选例子,本公开可以先根据预定关键点的二维坐标,确定出目标对象在长度方向上的截面;然后,再确定出目标对象的厚度。例如,将预设厚度值(即已知值)作为目标对象的厚度;再例如,根据位于该截面之外的预定关键点(如车把两端关键点或者肩部两关键点等)的二维坐标,确定出目标对象的厚度(如将计算出的车把两端之间的距离作为目标对象的厚度,再如将计算出的两肩部之间的距离作为目标对象的厚度);之后,根据上述截面和厚度,构建目标对象的伪三维检测体。
另一个可选例子,本公开可以先根据预定关键点和目标对象包括的面之间的预定所属关系,确定目标对象的至少一个构造面(如基础面,再如基础面和准基础面),然后,根据构造面以及预定关键点的二维坐标,构建目标对象的伪三维检测体。
上述两个可选例子的具体实现过程,可以参见下述针对图7和图10的描述。在此不再详细说明。
s120、获取伪三维检测体多个顶点的深度信息。
在一个可选示例中,本公开中的伪三维检测体的任一个顶点的深度信息可以认为是:伪三维检测体的相应竖直边的深度信息;也可以认为是:伪三维检测体的相应竖直边的两个端点的深度信息;还可以认为是:除竖直边之外的相应其他边的端点的深度信息。本公开中的竖直边通常是指,伪三维检测体中的对应目标对象的高度方向,且垂直于承载目标对象的平面(如地面或者平台等)的边。伪三维检测体的一条竖直边上的各点(包括竖直边的顶点)的深度信息通常相同。本公开中的除竖直边之外的其他边通常是指,伪三维检测体中的对应目标对象的长度方向或者宽度方向,且平行于承载目标对象的平面的边。上述其他边也可以认为是位于摄像装置的x0z平面上的边或者平行于该x0z平面的边。为方便描述,在下述描述中,将其他边称为水平方向的边或者水平边。
在一个可选示例中,本公开获取伪三维检测体中的竖直边的两个端点的深度信息的方式可以包括如下两个步骤:
步骤1、针对伪三维检测体中的任一条竖直边而言,根据该竖直边的两个端点在待处理图像中的二维坐标以及预设的目标对象的高度值,获取该竖直边在鸟瞰图中所对应的射线上的点位置处的单位像素所表示的距离。
本公开中的预设的目标对象的高度值通常是,目标对象在真实世界中的高度值。预设的目标对象的高度值是已知值。例如,预先设置有至少一种型号的四轮机动车的高度值,从而本公开可以通过识别待处理图像中的四轮机动车的类型或者型号,从预先设置的类型或者型号与高度值的对应关系中,查找到待处理图像中的四轮机动车的预设高度值。上述类型包括但不限于:轿车类型、suv类型、大货车类型和大巴车类型等。上述型号包括但不限于:四轮机动车的品牌以及品牌下的系列等。另外,本公开也不排除通过实时高度检测等方式获得目标对象的高度值的可能性,例如,利用回归神经网络预测目标对象的高度值等。
本公开中的鸟瞰图通常是指,以摄像装置的三维坐标系中的y轴方向向下这一视角,所得到的包括摄像装置的位置在内的映射图。如图5中的右上侧图像为待处理图像,该待处理图像中包含有一四轮机动车的图像块,针对该机动车的一伪三维检测体的两条竖直边,如待处理图像中的偏右侧的两条浅灰色的竖直线段所示。这两条竖直线段中的左侧的线段被映射为鸟瞰图中的a点,摄像装置被映射为鸟瞰图中的o点,oa为一条射线,射线oa即为伪三维检测体中的一竖直边在鸟瞰图中所对应的射线。如果将伪三维检测体中的一条竖直边称为一根柱子,本公开所形成的伪三维检测体通常包括四根柱子。
待处理图像中的位于不同位置、且具有相同高度的柱子,虽然可能被映射在鸟瞰图中的同一条射线上,但是,却会被映射为该射线上不同位置的点。进一步的,鸟瞰图中的一条射线上的点可以在该射线上移动,在该点移动到该射线上的不同位置处时,其所代表的待处理图像中的具有相同高度的柱子所对应的像素数量并不相同。由此可知,在鸟瞰图中的一条射线上的位于不同位置处的点,是由具有相同高度的柱子映射而成的情况下,该条射线上的不同位置处的点各自唯一对应一像素数量,且不同位置处的点所对应的像素数量并不相同。
基于上述情况,本公开可以根据伪三维检测体的竖直边的两个端点在待处理图像中的二维坐标,计算出竖直边在待处理图像中的高度,例如,伪三维检测体的一竖直边的两个端点的二维坐标分别为(u1,vt)和(u1,vb),则该竖直边在待处理图像中的高度为abs(vt-vb)。其中,abs(*)表示*的绝对值。
由于目标对象的高度值是预设的,因此,目标对象的高度值(标记为height)是已知的,如可以为1.5米等。目标对象的高度值通常是指目标对象在二维坐标系中的竖直方向(如y轴)上的坐标值。本公开可以利用height/abs(vt-vb),计算出该竖直边在鸟瞰图中所对应的射线上的点位置处的单位像素所表示的距离,即真实尺度(标记为scale),也就是说,可以利用下述公式(1)计算出scale:
scale=height/abs(vt-vb);公式(1)
在上述公式(1)中,height表示预先设置的目标对象的高度值;abs(*)表示*的绝对值;vt表示竖直边的一个端点的二维坐标中的竖直方向(如y轴)的坐标值,vb表示竖直边的另一个端点的二维坐标中的竖直方向的坐标值。
步骤2、根据上述获得的距离以及摄像装置的参数,确定该竖直边的深度信息。
在一个可选示例中,本公开的摄像装置的参数通常包括:摄像装置的焦距(标记为fx)以及光心偏移量(标记为cx)。摄像装置的参数通常为已知值。由于在与摄像装置相距一定距离的一平面上的任一方向上的单位像素,所代表的真实尺度相同,因此,本公开可以使用scale×(u1-cx)获得该竖直边在三维坐标系中的水平方向(如x轴)上的坐标,其中的cx为光心偏移量。图5中的β满足
(u1-cx)/fx=x/z公式(2)
在上述公式(2)中,u1表示竖直边的一个端点的二维坐标中的水平方向(如x轴)的坐标值z表示竖直边的一个端点在三维坐标系中的深度方向(如z轴)上的坐标,fx表示摄像装置的焦距,cx表示光心偏移量。
上述获得竖直边的深度信息或者获得竖直边的端点的深度信息的方式可以称为:基于柱子策略的深度信息获取方式。本公开通过利用摄像装置的映射原理来获得竖直边的深度信息,可以避免必须使用雷达测距装置以及基于深度的摄像装置等配置高成本高的硬件设备,来获得深度信息的现象,从而有利于在计算资源低消耗的情况下,低成本且快捷的获得三维检测体的深度信息,进而有利于提高本公开的对象三维检测的适用范围。
在一个可选示例中,本公开可以先利用单目或者双目方式等,获得待处理图像的深度图;然后,再利用伪三维检测体的至少一个顶点的二维坐标,从该深度图中读取出相应顶点的深度值,从而可以获得伪三维检测体的相应竖直边的深度信息。另外,本公开也可以采用h矩阵的方式直接获得伪三维检测体的多个顶点的深度值,即利用伪三维检测体的顶点的二维坐标与h矩阵相乘,从相乘的结果中获得该顶点的深度值(单位可以为米);还有,在摄像装置为基于深度的摄像装置的情况下,本公开可以直接获得目标对象的关键点的深度值,从而获得伪三维检测体的相应竖直边的深度值;本公开不限制获得伪三维检测体的竖直边的深度信息的具体实现过程。
需要特别说明的是,本公开通过利用上述步骤1和步骤2获得伪三维检测体中的竖直边的端点的深度信息,从而认为获得了伪三维检测体的相应顶点的深度信息。本公开也可以通过获取伪三维检测体中的水平边的两个端点的深度信息,从而认为获得了伪三维检测体的相应顶点的深度信息。例如,本公开可以将目标对象的高度值替换为:目标对象的宽度值(即厚度),同样的,该宽度值通常为预先设置的已知值,例如,宽度值为1.6米等。且相应的鸟瞰图可以替换为左视图或者右视图,并通过水平边与cos(θ)相乘,获得水平边在左视图或者右视图上的投影边,其中的θ表示伪三维检测体的水平边与摄像装置的z轴的夹角,然后,本公开可以通过下述公式(3)计算出投影边上的单位像素所表示的距离(标记为scale):
scale=width*cos(θ)/abs(ul-ur)公式(3)
在公式(3)中,ul表示水平边左侧端点的二维坐标中的水平方向的坐标值(如x轴的坐标值),ur表示水平边的右侧端点的二维坐标中的水平方向的坐标值(如x轴的坐标值),θ表示伪三维检测体的水平边与摄像装置的z轴的夹角,且
之后,本公开根据该距离scale以及摄像装置的参数,利用下述公式(4)计算出水平边的两个端点的深度信息(分别标记为z1和z2),从而获得伪三维检测体的相应顶点的深度信息。
在公式(4)中,u1表示水平边左侧端点的二维坐标中的水平方向的坐标值(如x轴的坐标值);ur表示水平边的右侧端点的二维坐标中的水平方向的坐标值(如x轴的坐标值);的坐标值z表示竖直边的一个端点在三维坐标系中的深度方向(如z轴)上的坐标,fx表示摄像装置的焦距,cx表示光心偏移量;z1表示水平边的左侧端点的深度信息,z2表示水平边的右侧端点的深度信息。
s120、根据伪三维检测体多个顶点的深度信息,确定目标对象在三维空间中的三维检测体。
在一个可选示例中,本公开可以根据伪三维检测体的至少四个顶点的二维坐标和该至少四个顶点的深度信息,确定至少四个顶点的三维坐标。如果上述至少四个顶点具体为八个顶点,则本公开获得三维检测体的八个顶点的三维坐标,从而可以获得目标对象的三维检测体。如果上述至少四个顶点小于八个顶点,则本公开可以根据伪三维检测体的边与边之间的位置关系(如平行、垂直以及等高等关系),确定出其他顶点的三维坐标。上述至少四个顶点包括:位于伪三维检测体顶面上的顶点和位置伪三维检测体底面上的顶点,即上述至少四个顶点包括:分布在两个水平面上的顶点。
在一个可选示例中,本公开可以先根据伪三维检测体的至少两条竖直边的各端点的二维坐标和深度信息,在三维空间中构建目标对象的三维检测体。
例如,本公开可以先根据伪三维检测体的两条竖直边(如位于伪三维检测体的顶面或者底面的一条对角线上的两条竖直边)的各端点的二维坐标和这两条竖直边的四个端点的深度信息,确定出这两条竖直边的四个端点的三维坐标;然后,再根据这两条竖直边与伪三维检测体的另外两条竖直边之间的位置关系,确定出另外两条竖直边的四个端点的三维坐标。本公开先确定出端点的三维坐标的两条竖直边可以包括:距离形成待处理图像的摄像装置最近的一条竖直边。由于针对最近的一条竖直边,所获取到的端点的深度信息往往会更准确,因此,基于该深度信息所确定出的端点的三维坐标也往往会更准确,从而利用这样的端点的三维坐标所获得的其他端点的三维坐标也往往会更准确,进而有利于提高目标对象的三维检测体的准确性。
再例如,本公开可以先根据伪三维检测体的三条竖直边的各端点的二维坐标和这三条竖直边的六个端点的深度信息,确定出这三条竖直边的六个端点的三维坐标;然后,再根据伪三维检测体的上述三条竖直边与剩下一条竖直边的位置关系,确定另外一条竖直边的两个端点的三维坐标。上述三条竖直边可以包括:距离形成待处理图像的摄像装置最近的三条竖直边,由于针对最近的三条竖直边,所获取到的端点的深度信息往往会更准确,因此,基于该深度信息所确定出的端点的三维坐标也往往会更准确,从而利用这样的端点的三维坐标所获得的其他端点的三维坐标也往往会更准确。由此可知,该方式同样有利于提高目标对象的三维检测体的准确性。
在一个可选示例中,针对伪三维检测体中的任一条竖直边而言,本公开可以根据形成待处理图像的摄像装置的参数、该竖直边的两个端点的二维坐标以及这两个端点的深度信息,计算出这两个端点在三维空间中的三维坐标。
例如,将上述获得的竖直边的端点的深度值转换为三维空间中的距离,该距离可以认为是相应竖直边的端点与摄像装置之间的距离;之后,利用下述公式(5)计算出各端点的三维坐标:
p×[x,y,z]t=w×[u,v,1]t公式(5)
在上述公式(5)中,p表示摄像装置的参数;x、y、z表示端点的三维坐标,即端点在真实世界的三维空间中的三维坐标,其中的z可以代入上述获得的端点的深度信息;u和v表示端点的二维坐标,即端点在待处理图像的坐标系中的二维坐标;w表示缩放因子,w可以与z相等。
如果将p表示为下述3×3的矩阵:
则,上述公式(5)可以表示为下述公式(6)的形式:
通过将多个端点的二维坐标代入到上述公式(6)中,可以求解出变量x、y和w(当然,在w与z相等的情况下,可以求解出变量x和y),从而获得端点的三维坐标,即(x,y,z)。本公开可以通过上述公式(6)获得伪三维检测体的所有端点(如8个端点)的三维坐标,也可以先通过上述公式(6)获得伪三维检测体的部分端点的三维坐标,然后,再根据三维检测体的各竖直边之间的垂直、平行以及等高等关系,获得伪三维检测体的另一部分端点的三维坐标。例如,在图6中,伪三维检测体f的第三根柱子zz3对应鸟瞰图n中的a点,伪三维检测体f的第一根柱子zz1对应鸟瞰图n中的b点,伪三维检测体f的第二根柱子zz2对应鸟瞰图n中的c点,分别连接ab和bc,ab垂直于bc,第四根柱子在鸟瞰图n中的点,可以通过平行以及垂直关系获得,从而可以确定出第四根柱子的两个端点的深度信息,进而计算出这两个端点在三维空间中的三维坐标。
通过上述方式,由于不需要道路分割以及语义分割等计算机视觉基础任务,因此,本公开可以快速的为目标对象构建出三维检测体,且构建该三维检测体的计算资源的消耗较小,实现成本较低。由于本公开是以目标对象的关键点为基础,来构建三维检测体的,构建三维检测体的过程与目标对象是否位于地面等因素无关,因此,本公开可以有效避免在目标对象位于非地面上等场景下,无法实现对象三维检测等现象,从而有利于提高对象三维检测的适用范围。
在一个可选示例中,在需要针对上述构建的三维检测体进行校正的应用场景中,上述构建出的三维检测体可以称为初始三维检测体(如初始三维长方体)。例如,本公开可以至少将伪三维检测体作为三维检测体的约束条件,对初始三维检测体进行调整,从而获得目标对象最终的三维检测体(如最终的三维长方体)。
在一个可选示例中,本公开可以将初始三维检测体中的各顶点映射在二维平面中,从而得到初始三维检测体在二维平面中的投影图形。本公开通过对三维空间中的初始三维检测体进行调整,可以使投影图形的区域与二维平面中的伪三维检测体的面积重叠情况发生变化,例如,本公开可以使两者的重叠面积尽可能最大,再例如,本公开可以使两者的交并比尽可能最大。
在一个可选示例中,本公开使两者的面积重叠情况发生变化的方式包括:调整初始三维检测体在三维空间中的位置(如左右位置或者上下位置等),使初始三维检测体映射在二维平面中的投影图形区域与伪三维检测体的重叠面积最大,例如,使初始三维检测体映射在二维平面中的投影图形区域完全覆盖伪三维检测体;再例如,使伪三维检测体完全覆盖初始三维检测体映射在二维平面中的投影图形区域。
在一个可选示例中,本公开使两者的面积重叠情况发生变化的方式也可以包括:调整初始三维检测体在三维空间中的尺寸,使尺寸调整后的初始三维检测体映射在二维平面中的投影图形区域与伪三维检测体的图形区域尽可能一致。如在初始三维检测体映射在二维空间中时,如果形成的投影图形的长/宽/高的数值与伪三维检测体的长/宽/高的数值的比值不满足预定比值(如0.9-1.1等),则本公开可以对初始三维检测体在三维空间中的长/宽/高的数值进行调整,以使调整后的三维检测体映射在二维空间中的投影图形的长/宽/高的数值与伪三维检测体的长/宽/高的数值的比值满足预定比值,甚至完全相同。
由于检测待处理图像中的目标对象的关键点的准确度已相对较高,且检测速度相对较快,因此,利用目标对象的关键点可以快速的在二维平面中构建出准确度较高的伪三维检测体。本公开通过利用伪三维检测体来对三维空间中的初始三维检测体进行调整校正,有利于提高针对目标对象在三维空间中所构建出的三维检测体的准确度。
在一个可选示例中,本公开还可以将针对目标对象预设的长宽高比例作为初始三维检测体的约束条件,从而在三维空间中,可以根据该约束条件对初始三维检测体进行校正处理。例如,在目标对象为四轮机动车的情况下,本公开可以预设四轮机动车的长宽高比例为2:1:1,从而在初始三维检测体的长宽高比例超出2:1:1一定范围时,可以对初始三维检测体的长宽高进行调整,使调整后的三维检测体的长宽高比例不会超出2:1:1一定范围。
在一个可选示例中,本公开还可以将目标对象在待处理图像中的二维目标检测框作为初始三维检测体的约束条件,从而可以根据该约束条件在三维空间中对初始三维检测体进行调整处理。例如,在目标对象为四轮机动车的情况下,本公开可以将四轮机动车检测框(也可以称为基于二维的四轮机动车外接框)作为初始三维检测体的约束条件,对初始三维检测体的位置和/或长宽高进行调整,从而使调整后的三维检测体映射在二维空间中的投影图形完全落入在四轮机动车检测框内。由于目标对象的二维目标检测框通常较为准确,因此,利用二维目标检测框作为约束条件对初始三维检测体进行调整,有利于提高对象三维检测体的准确性。
在一个可选示例中,本公开在对具有时序关系的多个待处理图像(如视频中的视频帧)分别进行对象三维检测时,可以对多个待处理图像中的同一目标对象的三维检测体(如调整校正后的三维检测体)进行平滑处理。该平滑处理可以包括下述至少一个:对三维检测体的长宽高的平滑处理、对三维检测体的运动方向的平滑处理、对三维检测体的鸟瞰图中心点的平滑处理以及对三维检测体的顶点(如八个顶点)的平滑处理。本公开通过对多个待处理图像中的同一目标对象的三维检测体进行平滑处理,有利于提高对象三维检测的准确性,且有利于避免目标对象在前后相邻视频帧中的大幅度晃动的现象,从而有利于提高智能驾驶的安全性。
在实现平滑处理的过程中,本公开可以利用当前待处理图像之前的多个历史待处理图像(如5个或者6个或者7个等历史视频帧),采用相应的拟合函数来预测当前待处理图像中的目标对象的三维检测体的长宽高、运动方向、目标对象的鸟瞰图中心点或者顶点等参数进行平滑处理。本公开中的拟合函数可以包括但不限于:二次函数、三次指数函数或者对数函数等。
作为拟合函数的二次函数的一个例子如下述公式(7)所示:
x=f(t)=at2+bt+c公式(7)
在公式(7)中,x表示进行优化拟合的历史视频帧的值,如在采用5个历史视频帧进行拟合的情况下,x=(x1,x2,x3,x4,x5),t表示历史视频帧所对应的时刻,如在采用5个历史视频帧进行拟合的情况下,t=(t1,t2,t3,t4,t5),a、b和c表示二次函数的系数。
本公开可以利用历史视频帧先获得公式(7)中的a、b和c,然后,再利用公式(7)获得当前视频帧的预测结果pred。
本公开可以通过加权的方式对当前视频帧中的目标对象的三维检测体的长宽高、运动方向、鸟瞰图中心点或者顶点等参数进行相应的调整,从而实现相应的平滑处理,例如,本公开可以利用下述公式(8)对当前视频帧中的目标对象的三维检测体的长宽高、运动方向、鸟瞰图中心点或者顶点等参数进行调整:
x6=α*pred+ρ*x6'公式(8)
在公式(8)中,α表示预测结果对应的权重,pred表示预测结果,ρ表示当前视频帧的对象三维检测结果对应的权重,x6′表示当前视频帧的对象三维检测结果,x6表示平滑处理后的当前视频帧的对象三维检测结果。
权重值的设置可以根据实际需求确定,例如,在预测结果与当前视频帧的对象三维检测结果相差不大(如相差不超过预定值等)的情况下,可以设置α=0.5和ρ=0.5;再例如,在预测结果与当前视频帧的对象三维检测结果相差较大(如相差达到预定值)的情况下,可以设置α=0.8和ρ=0.2,也可以设置α=0.7和ρ=0.3等。本公开对权重的具体取值不作限制。
在一个可选示例中,本公开可以根据目标对象的三维检测体,确定目标对象的信息。目标对象的信息可以包括但不限于:目标对象的朝向信息、目标对象的空间尺寸信息、目标对象所在的车道信息、目标对象的运动预测信息、目标对象与摄取待处理图像的摄像装置之间的距离信息、目标对象与摄取待处理图像的摄像装置之间的方位信息等。
在目标对象为二轮机动车、二轮非机动车、二轮机动车及其骑行者、或者二轮非机动车及其骑行者的情况下,本公开的对象三维检测方法一个实施例的流程图如图7所示。
s700、获取待处理图像中的目标对象的至少一预定关键点的二维坐标。
在一个可选示例中,本公开可以利用神经网络来获取待处理图像中的目标对象的关键点(包括关键点编号和二维坐标等),本公开可以将获得的所有关键点均作为目标对象的预定关键点,也可以对利用神经网络获得的所有关键点进行筛选,将所有关键点中的可信度超过预设可信度阈值的关键点,作为目标对象的预定关键点。具体参见上述实施例的s100中的相关描述,在此不再详细说明。
s710、根据预定关键点的二维坐标确定目标对象在长度方向上的截面。其中,目标对象的长度对应伪三维检测体的长度,且目标对象在长度方向上的截面为基于二维平面的截面。
在一个可选示例中,本公开中的目标对象的长度方向是指:从车头至车尾的方向。在目标对象为二轮机动车或者二轮非机动车的情况下,本公开可以利用前轮中心关键点、后轮中心关键点、前轮前端关键点、后轮后端关键点、前轮接地关键点、后轮接地关键点、车座支撑关键点、踏脚轴承关键点、车把中心关键点、车把两端关键点中的至少两个关键点的二维坐标,来确定目标对象在长度方向上的截面(如图8所示的截面)。
一个例子,先根据前轮接地关键点的二维坐标(x1,y1)和后轮接地关键点的二维坐标(x2,y2),确定前轮接地关键点和后轮接地关键点之间的距离
在一个可选示例中,在目标对象为二轮机动车及其骑行者、或二轮非机动车及其骑行者的情况下,本公开可以利用前轮中心关键点、后轮中心关键点、前轮前端关键点、后轮后端关键点、前轮接地关键点、后轮接地关键点、车座支撑关键点、踏脚轴承关键点、车把中心关键点、车把两端关键点以及车辆骑行者的头顶关键点中的至少两个关键点的二维坐标,来确定目标对象在长度方向上的截面(如图9所示的截面)。
一个例子,先根据前轮接地关键点的二维坐标(x1,y1)和后轮接地关键点的二维坐标(x2,y2),确定前轮接地关键点和后轮接地关键点之间的距离
s720、确定目标对象的厚度。该厚度为基于二维平面的厚度。
在一个可选示例中,本公开可以根据截面的长度或者高度来确定目标对象的厚度,例如,根据截面的长度/高度的预定缩小率(如0.2或0.3或0.4或0.5等),来确定目标对象的厚度。
在一个可选示例中,本公开可以根据位于截面之外的预定关键点的二维坐标,来确定目标对象的厚度。例如,在目标对象为二轮机动车或者二轮非机动车的情况下,本公开可以根据车把两端关键点的二维坐标,计算出车把两端关键点之间的距离,并将该距离作为目标对象的厚度。再例如,在目标对象为二轮机动车及其骑行者或者二轮非机动车及其骑行者的情况下,本公开可以根据车辆骑行者的肩部两关键点的二维坐标,计算出肩部两关键点之间的距离,并将该距离作为目标对象的厚度。
s730、分别以截面的各顶点为起点,沿与截面的垂直方向,向截面的两侧分别延展目标对象的厚度的一半,形成目标对象在二维空间中的伪三维检测体。
可选的,本公开可以先确定出该截面的法向量,并基于该截面的各顶点沿该法向量方向以及该法向量方向的反方向,分别向两个方向延展目标对象的二分之一厚度,之后,通过对延展后形成的八个点做连线,形成目标对象在二维空间中的伪三维检测体。例如,在目标对象为二轮非机动车的情况下,构建出的目标对象在二维空间中的伪三维检测体如图8所示。再例如,在目标对象为二轮非机动车及其骑行者的情况下,构建出的目标对象在二维空间中的伪三维检测体如图9所示。
s740、获取伪三维检测体多个顶点的深度信息。该步骤的具体内容可以参见上述实施方式中针对s120的描述,在此不再详细说明。
s750、根据伪三维检测体多个顶点的深度信息,确定目标对象在三维空间中的三维检测体。该步骤的具体内容可以参见上述实施方式中针对s130的描述,另外,图7所示的实施方式还可以包括对初始三维检测体的校正过程以及平滑处理过程,在此均不再详细说明。
在目标对象为二轮以上机动车(如四轮机动车等)或者二轮以上非机动车(如四轮人力车等)的情况下,本公开的对象三维检测方法一个实施例的流程图如图10所示。
s1000、获取待处理图像中的目标对象的至少一预定关键点的二维坐标。
在一个可选示例中,本公开可以利用神经网络来获取待处理图像中的目标对象的关键点(包括关键点编号和二维坐标),例如,本公开可以先利用神经网络获得待处理图像中的目标对象的二维目标检测框,然后,根据该二维目标检测框对待处理图像进行切分,并利用神经网络对切分出的图像块进行关键点检测,从而可以获得目标对象的关键点(如关键点编号以及关键点的二维坐标)。可选的,本公开可以将获得的所有关键点均作为目标对象的预定关键点,也可以对获得的所有关键点进行筛选,将所有关键点中的可信度超过预设可信度阈值的关键点,作为目标对象的预定关键点。具体参见上述实施例的s100中的相关描述,在此不再详细说明。
s1010、根据预定关键点和目标对象包括的面之间的预定所属关系,确定目标对象的至少一构造面。
在一个可选示例中,本公开可以确定出目标对象的一个构造面,并在该构造面的基础上,构建伪三维检测体。该构造面可以称为基础面。本公开也可以确定出目标对象的两个构造面,即基础面和准基础面,并在该基础面和准基础面的基础上,构建伪三维检测体。
在一个可选示例中,本实施方式中的任一预定关键点通常均会对应伪三维检测体(如三维长方体)的一个面或者两个面或者三个面,同样的,预定关键点通常会对应三维检测体的一个面或者两个面或者更多面。也就是说,预定关键点与伪三维检测体的面之间存在对应关系,预定关键点与三维检测体的面之间存在对应关系。
如图2所示,左前下、左前上、右前下、右前上、左前车灯关键点以及右前车灯关键点对应伪三维检测体以及三维检测体的前面,即从四轮机动车的前方位置可以观测到左前下、左前上、右前下、右前上、左前车灯关键点、右前车灯关键点这六个关键点;左前下、左前上、左后下、左后下、左前轮、左后轮、左前车灯关键点和左后车灯关键点对应伪三维检测体以及三维检测体的左面,即从四轮机动车的左方位置可以观测到左前下、左前上、左后下、左后下、左前轮、左后轮、左前车灯关键点和左后车灯关键点这八个关键点;左后下、左后上、右后下右后上、左后车灯关键点和右后车灯关键点对应伪三维检测体以及三维检测体的后面,即从四轮机动车的后方位置可以观测到左后下、左后上、右后下、右后上、左后车灯关键点和右后车灯关键点这六个关键点;右前下、右前上、右后下、右后下、右前轮、右后轮、右前车灯关键点和右后车灯关键点对应伪三维检测体以及三维检测体的右面,即从四轮机动车的右方位置可以观测到右前下、右前上、右后上、右后下、右前轮、右后轮、右前车灯关键点和右后车灯关键点这八个关键点;左前下、左前上、右前下、右前上、左后下、左后上、右后下、右后上、左前车灯关键点、右前车灯关键点、左后车灯关键点和右后车灯关键点对应伪三维检测体以及三维检测体的上面,即从四轮机动车的上方位置可以观测到左前下、左前上、右前下、右前上、左后下、左后上、右后下、右后上、左前车灯关键点、右前车灯关键点、左后车灯关键点和右后车灯关键点这十二个关键点;左前下、右前下、左后下、右后下、左前轮、右前轮、左后轮和右后轮对应伪三维检测体以及三维检测体的下面,即从四轮机动车的下方位置可以观测到左前下、右前下、左后下、右后下、左前轮、右前轮、左后轮和右后轮这八个关键点。
需要特别说明的是,本公开可以不设置预定关键点与伪三维检测体以及三维检测体的上面和下面的对应关系。另外,上述预定关键点与伪三维检测体以及三维检测体的相应面之间的对应关系仅为举例说明,预定关键点与伪三维检测体以及三维检测体的相应面之间的对应关系并不限于上述举例,例如,左前下、左前上、右前下、右前上、左前轮和右前轮对应伪三维检测体以及三维检测体的前面等。
在一个可选示例中,本公开确定待处理图像中的目标对象的基础面的方式包括但不限于:首先,根据预定关键点各自对应的面,确定各个面的质量;然后,将质量最高的面作为目标对象的基础面。本公开确定面的质量的方式包括并不限于下面例举三种方式:
在一个可选示例中,确定各面的质量的方式可以为:统计各个面所对应的预定关键点的数量,将统计出的预定关键点的数量作为面的分数,从而面所对应的预定关键点的数量越多,该面的分数越高。例如,在图2中,假定关键点1、关键点2、关键点3、关键点4、关键点5、关键点6、关键点7和关键点8均为检测到的预定关键点;由于关键点1、关键点2、关键点3、关键点4、关键点5和关键点6对应四轮机动车的左面,而关键点1、关键点2、关键点7和关键点8对应四轮机动车的前面,因此,四轮机动车的左面的分数最高,可以将四轮机动车的左面为基础面。
在一个可选示例中,确定各面的质量的方式也可以为:统计各个面所对应的预定关键点的可信度之和,将统计出的可信度之和作为面的分数,从而面所对应的可信度之和越高,则该面的分数越高。
在一个可选示例中,确定各面的质量的方式还可以为:统计各个面所对应的预定关键点的数量以及可信度之和,每一个面会对应一个预定关键点的数量以及一个可信度之和,针对每一个面,本公开可以计算该面的可信度之和与预定关键点的数量的商,即计算一个面中的预定关键点的可信度均值,将该面中的预定关键点的可信度均值作为面的分数,从而面所对应的可信度均值越高,则该面的分数越高。
在一个可选示例中,本公开确定准基础面的过程包括但不限于:确定与基础面相邻接的面,并针对除了属于基础面的关键点之外的其他预定关键点,统计与基础面相邻接的各面各自包含的预定关键点数量,并将包含预定关键点数量最多的面作为准基础面。该方式有利于合理的选取出准基础面。
s1020、根据构造面以及预定关键点的二维坐标,构建目标对象在二维空间中的伪三维检测体。
在一个可选示例中,本公开先根据预定关键点的二维坐标,在二维平面中构建基础面,然后,确定该基础面的法向量,并基于该基础面中的顶点沿该法向量方向的拓展,形成伪三维检测体。该实现方式有利于快捷准确的构建出伪三维检测体。
在一个可选示例中,本公开可以采用回归网络或者面分割等方式来构建基础面,另外,本公开也可以采用基于预定关键点做线的方式在二维平面中构建基础面。基于预定关键点做线的方式在二维平面中构建基础面的过程可以包括但不限于下述例举的至少一个步骤:
一个步骤,利用基础面上的一个预定关键点在二维平面中做垂线(即通过预定关键点的竖直方向的线),基础面上的一个边即位于该垂线上,该垂线与其他面上的边的交点,即为该基础面的一个顶点。
另一个步骤,利用基础面上的两个关键点在二维平面中做连接线,该连接线可以为基础面上的一个边,或者该连接线及其延长线可以为基础面上的一个边,也就是说,这两个关键点可以是基础面上的两个顶点,或者,这两个关键点的连接线的延长线与其他面的边的交点为该基础面的顶点。
再一个步骤,利用基础面上的一个关键点做平行线,该平行线是与基础面上的另一条边相互平行的线,即通过基础面上的一个关键点做基础面上的另一条边的平行线,基础面上的一个边即位于该平行线上,该平行线与上述垂线的交点或者与其他面的边的交点即为该基础面的顶点。
在一个可选示例中,本公开确定基础面的法向量的实现方式,包括但不限于下述的三个可选例子:
第一个可选例子:先从所有预定关键点中去除属于基础面的预定关键点,之后,从剩余的预定关键点中挑选一个可信度最高的预定关键点,经由挑选出的该预定关键点向基础面做垂线,并将该垂线作为基础面的法向量。
第二个可选例子:利用准基础面中的预定关键点向基础面做垂线,从而可以将该垂线作为基础面的法向量。
可选的,如图2所示,假定关键点1、关键点2、关键点3、关键点4、关键点5、关键点6、关键点7、关键点8以及右后轮均为检测到的预定关键点,且右后轮的可信度较高;在上述情况下,很显然右后轮出现了关键点检测错误的情况,本公开通过将与基础面相邻且包含预定关键点数据最多的面作为准基础面,并利用准基础面中的预定关键点获得基础面的法向量,有利于避免从检测到的右后轮向基础面做垂线,从而获得基础面的法向量的现象,有利于提高构建伪三维检测体的准确性。
第三个可选例子,如果存在两个预定关键点属于基础面的相邻面,且这两个预定关键点的连接线位于相邻面的与基础面相垂直的边上,则可以将这两个预定关键点在二维平面的坐标差,作为基础面的法向量。例如,图2中,假定四轮机动车的左面为基础面,四轮机动车的前面为准基础面,关键点7在二维平面的坐标为(u7,v7),关键点1在二维平面的坐标为(u1,v1),本公开可以将(u7-u1,v7-v1)作为基础面的法向量。
在一个可选示例中,本公开在确定了基础面及其法向量之后,可以将基础面中的各顶点沿该基础面的法向量方向的拓展,从而会与其他面的边相交,最终形成伪三维检测体。例如,图2中,先形成通过关键点1的第一垂线以及通过关键点4的第二垂线,再形成同时经过关键点6和关键点5,而且与第一垂线和第二垂线分别相交的第一线,之后,形成经过关键点2或者关键点3与上述第一线相平行,而且与两条垂线分别相交的第二线,从而形成了基础面的四条线以及四个顶点;该基础面的法向量为(u7-u1,v7-v1)。该法向量也为准基础面的底边,本公开可以形成通过关键点7的第三垂线,并通过关键点7做与第一线或者第二线向平行的第三线,基础面中的左上角的顶点沿该法向量方向拓展,会与第三垂线相交,形成准基础面的顶边,而且该交点与关键点8的连线,会与基础面中的右上角的顶点沿该法向量方向拓展的线相交,经该相交点做第四垂线,第四垂线会与基础面右下角顶点沿法向量方向拓展的线相交,从而在二维空间中,形成伪三维检测体。本公开为待处理图像中的目标对象(四轮机动车辆)所形成的伪三维检测体的一个例子如图11所示。
需要特别说明的是,本公开可以采用其他方式实现伪三维检测体的构建,例如,可以将待处理图像或者待处理图像中的目标对象的二维目标检测框提供给回归网络,通过回归网络获得伪三维检测体。本公开不限制构建三维检测体的具体实现过程。
s1030、获取伪三维检测体多个顶点的深度信息。该步骤的具体内容可以参见上述实施方式中针对s120的描述,在此不再详细说明。
s1040、根据伪三维检测体多个顶点的深度信息,确定目标对象在三维空间中的三维检测体。该步骤的具体内容可以参见上述实施方式中针对s130的相关描述,另外,图10所示的实施方式还可以包括对初始三维检测体的校正过程以及平滑处理过程,在此均不再详细说明。
本公开的对象三维检测方法一个实施例的流程图如图12所示。
s1200、对待处理图像进行目标对象检测。该步骤的具体内容可以参见上述实施方式中针对s100的相关描述,在此不再详细说明。
s1210、判断是否成功获得包括有目标对象的二维目标检测框。如果成功获得二维目标检测框,则到步骤s1220,否则,到步骤s1270。
s1220、基于待处理图像对应该二维目标检测框的图像部分,进行目标对象的关键点检测。该步骤的具体内容参见上述实施方式中针对s100的相关描述,在此不再详细说明。
s1230、判断是否成功获得目标对象的预定关键点,如果成功获得目标对象的预定关键点,则到步骤s1240,否则,到步骤s1270。
s1240、根据待处理图像中的目标对象的至少一预定关键点的二维坐标,构建目标对象在二维空间中的伪三维检测体。该步骤的具体内容参见上述实施方式中针对s110的相关描述,在此不再详细说明。
s1250、获取伪三维检测体多个顶点的深度信息。该步骤的具体内容可以参见上述实施方式中针对s120的相关描述,在此不再详细说明。
s1260、根据伪三维检测体多个顶点的深度信息,确定目标对象在三维空间中的三维检测体。该步骤的具体内容可以参见上述实施方式中针对s130的描述,另外,本步骤还可以包括对初始三维检测体的校正过程以及平滑处理过程,在此均不再详细说明。
s1270、不再执行本公开的对象三维检测处理,本公开的方法结束;可选的,可以切换为对象的二维目标检测方法,也可以切换为利用雷达测距装置获得的点云数据,进行目标对象三维检测的过程。
图13为本公开的智能驾驶控制方法的一个实施例的流程图。本公开的智能驾驶控制方法可以适用但不限于:自动驾驶(如完全无人辅助的自动驾驶)环境或辅助驾驶环境中。
s1300、通过车辆(如四轮机动车等)上设置的摄像装置获取车辆所在路面的视频流。该摄像装置包括但不限于:基于rgb的摄像装置等。
s1310、对视频流包括的至少一帧图像进行目标对象的三维检测,获得目标对象在三维空间中的三维检测体。本步骤的具体实现过程可以参见上述方法实施方式中针对图1或图10的描述。
s1320、根据三维检测体生成车辆的控制指令。
在一个可选示例中,首先,本公开可以根据目标对象的三维检测体,确定出目标对象的信息。如确定出目标对象的朝向信息(如目标对象的车头朝向)、目标对象的空间尺寸信息(如目标对象在真实世界中的三维尺寸)、目标对象所在的车道信息(如目标对象在自己的左侧/右侧车道中)、目标对象的运动预测信息(如目标对象处于加速运动中)、目标对象与摄取待处理图像的摄像装置之间的距离信息(如两者的直线距离)以及目标对象与摄取待处理图像的摄像装置之间的方位信息(如目标对象与摄像装置的z轴的夹角等)中的至少一个。然后,本公开根据目标对象的信息生成车辆的控制指令。本公开生成的控制指令包括但不限于:速度保持控制指令、速度调整控制指令(如减速行驶指令或者加速行驶指令等)、方向保持控制指令、方向调整控制指令(如左转向指令、右转向指令、向左侧车道并线指令、或者向右侧车道并线指令等)、鸣笛指令、预警提示控制指令或者驾驶模式切换控制指令(如切换为自动巡航驾驶模式等)。
s1330、向车辆发送车辆控制指令。
图14为本公开的对象三维检测装置一个实施例的结构示意图。如图14所示,该装置包括:获取二维坐标模块1400、构建模块1410、获取深度信息模块1420和确定三维检测体模块1430。可选的,本公开的该装置还可以包括:第一校正模块1440、第二校正模块1450、第三校正模块1460、执行控制模块1470、平滑处理模块1480以及确定目标对象信息模块1490中的至少一个。
获取二维坐标模块1400用于获取待处理图像中的目标对象的至少一预定关键点的二维坐标。
在一个可选示例中,本公开中的获取二维坐标模块1400可以利用神经网络获取待处理图像中的目标对象的至少一预定关键点的二维坐标。可选的,获取二维坐标模块1400可以包括:获取关键点子模块以及筛选子模块。其中的获取关键点子模块用于对待处理图像进行目标对象检测,获得包括有目标对象至少部分的二维目标检测框,之后,获取关键点子模块对待处理图像对应二维目标检测框的图像部分进行关键点检测。在目标对象包括:二轮机动车及其骑行者的情况下,获取关键点子模块所获取到的二维目标检测框可以为:包括有所述二轮机动车的二维目标检测框;也可以为:包括有所述二轮机动车及其骑行者的二维目标检测框。在目标对象包括:二轮非机动车及其骑行者的情况下,获取关键点子模块所获取到的二维目标检测框可以为:包括有二轮非机动车的二维目标检测框,也可以为:包括有二轮非机动车及其骑行者的二维目标检测框。其中的筛选子模块用于将目标对象关键点检测结果中的可信度超过预设可信度阈值的关键点,作为目标对象的预定关键点。待处理图像、目标对象、预定关键点具体包括的内容、以及获取二维坐标模块1400具体执行的操作,可以参见上述s100中的相关描述。
构建模块1410用于根据预定关键点的二维坐标,构建目标对象在二维空间中的伪三维检测体。
在一个可选示例中,构建模块1410可以包括:第一子模块和第二字模块。其中的第一子模块用于根据预定关键点的二维坐标确定目标对象在长度方向上的截面。例如,对于目标对象为二轮机动车或者二轮非机动车的应用场景,第一子模块可以根据前轮接地关键点的二维坐标和后轮接地关键点的二维坐标,确定前轮接地关键点和后轮接地关键点之间的距离,并从前轮接地关键点和后轮接地关键点沿两者的连线分别向外扩展,形成截面的长,且第一子模块可以将车把中心关键点的二维坐标到该连线的竖直距离,作为截面的高。再例如,对于目标对象为二轮机动车及其骑行者或者二轮非机动车及其骑行者的应用场景,第一子模块可以根据前轮接地关键点的二维坐标和后轮接地关键点的二维坐标,确定前轮接地关键点和后轮接地关键点之间的距离,并从前轮接地关键点和后轮接地关键点沿两者的连线分别向外扩展,形成截面的长,且第一子模块可以将车辆骑行者的头顶关键点的二维坐标到连线的竖直距离,作为截面的高。其中的第二子模块用于分别以截面的各顶点为起点,沿与截面的垂直方向,向两侧分别延展目标对象的厚度的一半,形成目标对象在二维空间中的伪三维检测体。可选的,目标对象的厚度可以为预设厚度值;目标对象的厚度也可以为:根据车把两端关键点的二维坐标确定出的车把两端之间的距离;目标对象的厚度还可以为:根据骑行者的肩部两关键点的二维坐标确定出的骑行者两肩之间的距离。
在另一个可选示例中,构建模块1410可以包括:第三子模块和第四子模块。其中的第三子模块用于根据预定关键点和目标对象包括的面之间的预定所属关系,将包含预定关键点数量最多的面作为确定目标对象的至少一个构造面。其中的第四子模块用于根据构造面以及预定关键点的二维坐标,构建目标对象在二维空间中的伪三维检测体。
例如,在目标对象为:二轮以上机动车或者二轮以上非机动车的情况下,构建模块1410可以利用下述关键点中的至少两个来构建目标对象的伪三维检测体:车辆左前角关键点、车顶左前角关键点、车顶左后角关键点、车辆左后角关键点、左后轮底部关键点、左前轮底部关键点、车辆右前角关键点、车顶右前角关键点、车顶右后角关键点、车辆右后角关键点、右后轮底部关键点、右前轮底部关键点、车门关键点、后视镜关键点、车牌关键点以及车灯关键点。
在一个可选示例中,本公开中的第三子模块可以确定出一基础面,并将该基础面作为目标对象的一构造面;例如,第三子模块可以根据预定关键点和目标对象包括的面之间的预定所属关系,将包含预定关键点数量最多的面作为基础面。在该情况下,第四子模块可以确定出基础面的法向量,并根据基础面中的顶点沿法向量方向的拓展,形成伪三维检测体。例如,第四子模块可以将不属于基础面的预定关键点中的可信度最高的预定关键点向基础面所做的垂线,作为基础面的法向量。再例如,第四子模块可以将基础面的相邻面中的、与基础面垂直的边上的两个预定关键点的坐标差,作为基础面的法向量。
在另一个可选示例中,本公开中的第三子模块可以确定出一基础面和一准基础面,并将该基础面和准基础面均作为目标对象的构造面。例如,第三子模块可以根据预定关键点和目标对象包括的面之间的预定所属关系,将包含预定关键点数量最多的面作为基础面,并将与基础面相邻且包含除属于基础面的预定关键点之外的其他预定关键点数量最多的面作为准基础面。在该情况下,第四子模块可以将准基础面中的预定关键点向基础面所做的垂线,作为基础面的法向量,并根据基础面中的顶点沿法向量方向的拓展,形成伪三维检测体。
构建模块1410及其子模块具体执行的操作可以参见上述s110中的相关描述,在此不再详细说明。
获取深度信息模块1420用于获取伪三维检测体多个顶点的深度信息。
在一个可选示例中,本公开中的获取深度信息模块1420可以包括:第一距离子模块和第一深度子模块。其中的第一距离子模块用于根据伪三维检测体中的一竖直边的两个端点在待处理图像中的二维坐标以及预设的目标对象的高度值,获取竖直边在鸟瞰图中所对应的射线上的点位置处的单位像素所表示的距离,其中,该射线的原点为:形成待处理图像的摄像装置在所述鸟瞰图中的位置。其中的第一深度子模块用于根据距离以及摄像装置的参数,确定竖直边的两个端点的深度信息。例如,第一深度子模块可以将端点的二维坐标中的水平方向坐标与光心偏移量之差,与距离的乘积,作为端点在三维坐标系中的水平方向坐标,并将摄像装置的焦距与端点在三维坐标系中的水平方向坐标的乘积,与端点的二维坐标中的水平方向坐标与光心偏移量之差的比值,作为端点在三维坐标系中的深度方向坐标(参见公式2)。
在另一个可选示例中,本公开中的获取深度信息模块1420可以包括:第二距离子模块和第二深度子模块。其中的第二距离子模块用于根据伪三维检测体中的一水平方向的边的两个端点在待处理图像中的二维坐标以及预设的目标对象的宽度值,获取水平方向的边在左/右视图中对应的投影线段上的单位像素所表示的距离。其中的第二深度子模块用于根据距离以及摄像装置的参数,确定水平方向的边的两个端点的深度信息。例如,第二深度子模块将端点的二维坐标中的水平方向坐标与光心偏移量之差,与距离的乘积,作为端点在三维坐标系中的水平方向坐标,并将摄像装置的焦距与端点在三维坐标系中的水平方向坐标的乘积,与端点的二维坐标中的水平方向坐标与光心偏移量之差的比值,作为端点在三维坐标系中的深度方向坐标(参见公式4)。
确定三维检测体模块1430用于根据伪三维检测体多个顶点的深度信息,确定目标对象在三维空间中的三维检测体。
在一个可选示例中,确定三维检测体模块1430可以根据伪三维检测体的至少四个顶点的二维坐标和至少四个顶点的深度信息,确定至少四个端点的三维坐标;在除了上述至少四个顶点之外,还存在其他顶点的情况下,确定三维检测体模块1430可以根据伪三维检测体的边与边之间的位置关系,确定其他顶点的三维坐标。可选的,上述至少四个顶点包括:距离形成待处理图像的摄像装置最近的至少一条竖直边的端点。确定三维检测体模块1430具体执行的操作可以参见上述s110中的相关描述。
第一校正模块1440用于根据二维平面中的伪三维检测体,对三维空间中的三维检测体进行调整,以提高调整后的三维检测体映射在二维平面中的投影图形区域与伪三维检测体的面积重叠情况。
第二校正模块1450用于根据目标对象的预设长宽高比例,对三维检测体进行调整。
第三校正模块1460用于根据目标对象在待处理图像中的二维目标检测框对三维检测体进行调整,以使调整后的三维检测体映射在二维平面中的投影图形区域属于二维目标检测框。
执行控制模块1470用于响应于未获取到目标对象的关键点,不进行对象三维检测处理,执行获取所述目标对象的二维目标检测的操作。执行控制模块1470也可以用于响应于未获取到目标对象的关键点,根据基于雷达测距装置获得的点云数据实现目标对象三维检测。
平滑处理模块1480用于针对具有时序关系的多个待处理图像中的同一目标对象在三维空间中的三维检测体进行平滑处理。例如,平滑处理模块1480所执行的平滑处理的操作可以包括:对三维检测体的长宽高的平滑处理、对三维检测体的运动方向的平滑处理、对三维检测体的鸟瞰图中心点的平滑处理以及对三维检测体的顶点的平滑处理中的至少一个。
确定目标对象信息模块1490用于根据目标对象在三维空间中的三维检测体,确定目标对象的信息。例如,确定目标对象信息模块1490所确定出的目标对象的信息可以包括以下至少之一:目标对象的朝向信息,目标对象的空间尺寸信息,目标对象所在的车道信息,目标对象的运动预测信息,目标对象与摄取待处理图像的摄像装置之间的距离信息,目标对象与摄取待处理图像的摄像装置之间的方位信息。
图15为本公开的智能驾驶控制装置一个实施例的结构示意图。如图15所示,该装置包括:获取视频流模块1500、对象三维检测装置1510、生成指令模块1520以及发送指令模块1530。
获取视频流模块1500用于通过车辆上设置的摄像装置获取车辆所在路面的视频流。
对象三维检测装置1510用于对视频流包括的至少一帧图像进行目标对象的三维检测,获得目标对象在三维空间中的三维检测体。对象三维检测装置1510的具体结构以及其包含的各模型所执行的操作参见上述装置实施方式中针对图14的描述。
生成指令模块1520用于根据三维检测体生成车辆的控制指令。
在一个可选示例中,生成指令模块1520可以先根据目标对象的三维检测体,确定出目标对象的信息。如生成指令模块1520确定出目标对象的朝向信息(如目标对象的车头朝向)、目标对象的空间尺寸信息(如目标对象在真实世界中的三维尺寸)、目标对象所在的车道信息(如目标对象在自己的左侧/右侧车道中)、目标对象的运动预测信息(如目标对象处于加速运动中)、目标对象与摄取待处理图像的摄像装置之间的距离信息(如两者的直线距离)以及目标对象与摄取待处理图像的摄像装置之间的方位信息(如目标对象与摄像装置的z轴的夹角等)中的至少一个。然后,生成指令模块1520根据目标对象的信息生成车辆的控制指令。生成指令模块1520生成的指令包括但不限于:速度保持控制指令、速度调整控制指令(如减速行驶指令或者加速行驶指令等)、方向保持控制指令、方向调整控制指令(如左转向指令、右转向指令、向左侧车道并线指令、或者向右侧车道并线指令等)、鸣笛指令、预警提示控制指令或者驾驶模式切换控制指令(如切换为自动巡航驾驶模式等)。
发送指令模块1530用于向车辆发送车辆控制指令。
需要特别说明的是,本公开的对象三维检测方法和装置除了可以适用于智能驾驶控制这一领域之外,还可以应用在其他领域中;例如,所应用的领域包括但不限于:工业制造领域、超市等室内监控领域、以及安防领域等。
示例性设备
图16示出了适于实现本公开的示例性设备1600,设备1600可以是车辆中配置的控制系统/电子系统、移动终端(如智能移动电话等)、个人计算机(pc,如台式计算机或者笔记型计算机等)、平板电脑以及服务器等。图16中,设备1600包括一个或者多个处理器、通信部等,所述一个或者多个处理器可以为:一个或者多个中央处理单元(cpu)1601,和/或,一个或者多个加速单元1613,加速单元可包括但不限于图像处理器(gpu)、可编程逻辑阵列(fpga)等,处理器可以根据存储在只读存储器(rom)1602中的可执行指令或者从存储部分1608加载到随机访问存储器(ram)1603中的可执行指令而执行各种适当的动作和处理。通信部1612可以包括但不限于网卡,所述网卡可以包括但不限于ib(infiniband)网卡。处理器可与只读存储器1602和/或随机访问存储器1603中通信以执行可执行指令,通过总线1604与通信部1612相连、并经通信部1612与其他目标设备通信,从而完成本公开中的相应步骤。上述各指令所执行的操作参见上述方法实施例中的相关描述,在此不再详细说明。此外,在ram1603中,还可以存储有装置操作所需的各种程序以及数据。cpu1601、rom1602以及ram1603通过总线1604彼此相连。
在有ram1603的情况下,rom1602为可选模块。ram1603存储可执行指令,或在运行时向rom1602中写入可执行指令,可执行指令使中央处理单元1601执行对象三维检测方法或者智能驾驶控制方法所包括的步骤。输入/输出(i/o)接口1605也连接至总线1604。通信部1612可以集成设置,也可以设置为具有多个子模块(例如,多个ib网卡),并分别与总线连接。以下部件连接至i/o接口1605:包括键盘、鼠标等的输入部分1606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1607;包括硬盘等的存储部分1608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1609。通信部分1609经由诸如因特网的网络执行通信处理。驱动器1610也根据需要连接至i/o接口1605。可拆卸介质1611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1610上,以便于从其上读出的计算机程序根据需要被安装在存储部分1608中。
需要特别说明的是,如图16所示的架构仅为一种可选实现方式,在具体实践过程中,可根据实际需要对上述图16的部件数量和类型进行选择、删减、增加或替换;在不同功能部件设置上,也可采用分离设置或集成设置等实现方式,例如,gpu1613和cpu1601可分离设置,再如理,可将gpu1613集成在cpu1601上,通信部可分离设置,也可集成设置在cpu1601或gpu1613上等。这些可替换的实施方式均落入本公开的保护范围。
特别地,根据本公开的实施方式,下文参考流程图描述的过程可以被实现为计算机软件程序,如本公开实施方式包括一种计算机程序产品,其包含有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行流程图所示的步骤的程序代码,程序代码可包括对应执行本公开提供的方法中的步骤对应的指令。
在这样的实施方式中,该计算机程序可以通过通信部分1609从网络上被下载及安装,和/或从可拆卸介质1611被安装。在该计算机程序被中央处理单元(cpu)1601执行时,执行本公开中记载的实现上述相应步骤的指令。
在一个或多个可选实施方式中,本公开实施例还提供了一种计算机程序程序产品,用于存储计算机可读指令,所述指令被执行时使得计算机执行上述任一实施例中所述的对象三维检测方法或者智能驾驶控制方法。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选例子中,所述计算机程序产品具体体现为计算机存储介质。在另一个可选例子中,计算机程序产品具体体现为软件产品,例如软件开发包(softwaredevelopmentkit,sdk)等等。
在一个或多个可选实施方式中,本公开实施例还提供了另一种对象三维检测方法和智能驾驶控制方法及其对应的装置和电子设备、计算机存储介质、计算机程序以及计算机程序产品,其中的方法可以包括:第一装置向第二装置发送对象三维检测指示或者智能驾驶控制指示,该指示使得第二装置执行上述任一可能的实施例中的对象三维检测方法或者智能驾驶控制方法;第一装置接收第二装置发送的对象三维检测结果或者智能驾驶控制结果。
在一些实施例中,该视对象三维检测指示或者智能驾驶控制指示可以具体为调用指令,第一装置可以通过调用的方式指示第二装置执行对象三维检测操作或者智能驾驶控制操作,相应地,响应于接收到调用指令,第二装置可以执行上述对象三维检测方法或者智能驾驶控制方法中的任一实施例中的步骤和/或流程。
应理解,本公开实施例中的“第一”、“第二”等术语仅仅是为了区分,而不应理解成对本公开实施例的限定。还应理解,在本公开中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。还应理解,对于本公开中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
可能以许多方式来实现本公开的方法和装置、电子设备以及计算机可读存储介质。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置、电子设备以及计算机可读存储介质。用于方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施方式中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
本公开的描述,是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言,是显然的。选择和描述实施方式是为了更好说明本公开的原理以及实际应用,并且使本领域的普通技术人员能够理解本公开实施例可以从而设计适于特定用途的带有各种修改的各种实施方式。