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

一种对单目RGB图像进行3D目标检测的方法

文献发布时间:2023-06-19 11:52:33


一种对单目RGB图像进行3D目标检测的方法

技术领域

本发明涉及深度学习和计算机视觉技术领域,尤其涉及一种对单目RGB图像进行3D目标检测的方法。

背景技术

近几年,随着深度学习的迅猛发展,计算机视觉领域中很多传统任务的实际性能表现有了很大的提升。例如,在2D目标检测领域,无论是基于两阶段的目标检测器Faster-RCNN,还是基于单阶段的目标检测器YOLO,在很多数据集上已经展现出非常好的效果。2D目标检测是在图像中的给定类别的目标周围画一个矩形框,但是这个矩形框并不能体现物体的3D结构。常用的2D目标检测的数据集例如Pascal VOC、MS COCO、ImageNet等,对图像的标注数据通常仅仅包括目标的2D框和类别,并没有其他充足的信息可以用来检测物体的3D特征,例如长宽高和偏转角度,以及3D框等。而随着机器人应用和自动驾驶等领域的飞速发展,3D目标检测变得愈发重要。在机器人应用领域,机器人需要和真实世界进行交互,那么就需要获取真实世界中物体的位置和形状大小等信息。同样,在自动驾驶领域,需要通过获取路上行人和车辆等的位置和大小等信息,以便当前汽车规避行人和车辆。

3D目标检测根据所依赖的训练数据,按照数据采集和标注难度从低到高大致可以分为三类:第一类数据集依赖于普通单目RGB图像,例如kitti数据集;第二类数据集依赖于RGB-D图像,例如LineMode数据集;第三类数据集依赖于点云数据,例如kitti数据集,具体的,kitti数据集既标注了图像,也采集了图像对应的点云数据。一般来说,基于单目2D图像的方法需要单目2D图像在传统的2D检测标注的基础上,再额外标注一些其他信息用于3D目标检测,包括目标的3D尺寸、目标在相机坐标系下的3D坐标、目标关于观察者的偏转角度等。通常情况下,在采集难度和标注代价方面,这些用于3D目标检测的数据比基于RGB-D图像以及点云数据要低很多。而基于单目2D图像的3D检测可以在很多方面利用已有的2D检测上的很多技术来实现。

所以,为了实现在自动驾驶等领域对车辆和行人等典型目标的3D特征检测,摆脱传统2D检测方法无法获取目标3D特征的缺点,从而为这些领域更复杂的应用做铺垫,急需一种对单目RGB图像进行3D目标检测的方法。

发明内容

本发明提供了一种对单目RGB图像进行3D目标检测的方法,以解决现有的2D检测方法只能输出2D框,无法获取目标3D特征,导致无法实现3D特征检测这一问题。

发明目的:针对现有技术中存在的问题,本发明提供一种对单目RGB图像进行3D目标检测的方法。通过本发明方法构建的对单目RGB图像进行3D目标检测的方法,旨在不依赖于RGB-D图像或者点云数据就能预测2D图像中的目标的3D尺寸和偏转角度,计算出目标的3D坐标在图像中的投影,进而构建目标的3D框。

技术方案:一种对单目RGB图像进行3D目标检测的方法,提出了一种在单目RGB图像上通过深度学习方法预测目标3D尺寸信息和偏转角度,进而通过目标3D框和2D框之间的约束关系,列出约束方程组并加以求解,得到目标3D框到图像的投影矩阵,最后计算出目标的3D框的解决方案,具体包括以下步骤:

步骤1,输入训练数据集,训练2D目标检测器用于生成目标的2D框;

步骤2,根据所述训练数据的标注数据中的2D框,裁剪原始图像获得目标图像,并缩放至预设大小;本发明中,通过本步骤,将缩放至固定大小的图像作为3D目标检测器的训练数据。

步骤3,将缩放至预设大小的目标图像输入3D目标检测器,得到所述目标的特征图,将所述特征图输入回归子网络,预测获得所述目标的3D尺寸信息、偏转角度信息和置信度,根据所述训练数据集的标注数据中的真值信息训练3D目标检测器;

步骤4,通过训练完成的所述2D目标检测器检测出待测图像中的待测目标,根据2D框裁剪所述待测图像得到待测目标图像,将所述待测目标图像缩放至预设大小后,输入训练完成的所述3D目标检测器中,预测所述2D框内待测目标的3D尺寸信息和偏转角度信息;

步骤5,根据所述偏转角度信息,得到目标坐标系到相机坐标系的旋转变换矩阵,根据所述目标在3D坐标系的3D坐标和目标投影到2D图像所在的2D坐标系上的2D坐标之间的约束关系,建立约束方程组,求解获得平移变换矩阵;

步骤6,根据所述3D尺寸信息,获得所述待测目标在目标坐标系下的坐标信息,结合所述2D图像的相机校准参数得到相机内参,根据旋转变换矩阵和平移变换矩阵,计算获得所述待测目标的3D坐标在图像上的投影点,结合所述坐标信息绘制待测目标的3D框。

进一步地,在一种实现方式中,所述步骤1包括:

所述训练数据集采用kitti数据集,所述kitti数据集中的标注数据包括2D框、目标类别、3D尺寸信息、偏转角度信息和置信度,所述2D框用于获得原始图像中的目标图像;所述2D目标检测器采用yolov3。

具体的,本发明中,由于3D目标检测主要应用于自动驾驶领域,而目前自动驾驶领域最大、使用最多的数据集就是kitti数据集。kitti数据集除了标注了面向传统的2D目标检测任务中的目标类别及其2D框外,还标注了目标的长宽高、观测角度以及3D坐标等信息,也正是由于这些额外标注的信息的存在,才使得在单目RGB图像上进行3D检测成为可能。在预测3D信息之前,需要先进行2D检测,找出图像中包含目标的区域。这里考虑到整个流程并不是端到端完成的,需要分两步处理,可能需要一定的时间,为了尽量节省时间,2D目标检测器使用了yolov3。yolov3是端到端的2D目标检测器,比RCNN之类的分两步的2D目标检测器在速度上要快。

进一步地,在一种实现方式中,所述步骤2包括:

根据所述kitti数据集的标注数据中的2D框真值,裁剪获得所述原始图像中的目标图像,即通过裁剪所述原始图像中位于2D框内的区域获得目标图像,将所述目标图像缩放至预设大小,所述预设大小为224*224,单位为像素;

将缩放至大小为224*224的目标图像作为所述3D目标检测器的输入,所述3D目标检测器包括特征提取网络和三个回归子网络;

其中,所述特征提取网络用于根据目标图像得到目标的特征图,所述特征图用于作为三个回归子网络的输入;

所述三个回归子网络分别用于回归目标的3D尺寸信息、偏转角度和置信度。

进一步地,在一种实现方式中,所述步骤3包括如下步骤:

步骤3-1,将所述缩放至预设大小的目标图像输入3D特征提取网络,得到2D框内目标的特征图;所述特征提取器采用vgg19_bn;输入尺寸为3*214*214的目标图像,即深度为3,大小为214*214的目标图像,经过所述特征提取器vgg19_bn特征提取后尺寸变为512*7*7,即深度为512,大小为7*7的特征图;具体的,本发明中,vgg19_bn就是在vgg19的基础上加上了BatchNormalization层,而vgg19和vgg16结构基本一样,只是多了几个卷积层。

步骤3-2,将尺寸为512*7*7的所述特征图输入回归子网络中第一个分支,预测所述目标的3D尺寸信息,所述目标的3D尺寸信息即目标的3D尺寸偏移量,即所述目标的长宽高相较于平均值的偏移量,所述平均值为训练数据集中相同目标类别的目标的长宽高的平均值;具体的,本发明中,本步骤中预测的长宽高并不是目标本身的长宽高,而是目标长宽高相比训练集中同类目标长宽高平均值的偏移量。这样做可以使得预测的3D长宽高不会有较大偏差,因为同类目标的长宽高是比较接近的。

步骤3-3,将尺寸为512*7*7的所述特征图输入回归子网络中第二个分支,预测目标的偏转角度θ,即预测所述目标的航向角;具体的,本发明中,由于kitti数据集中的大部分目标都是在水平面上,它们的俯仰角(对应汽车上下坡)和横滚角(对应汽车单边侧倾)基本都为0,所以本发明不需要预测这两个角度,只需要预测目标的航向角(yaw angle,偏航角),也就是对应汽车左右拐弯的角度。

步骤3-4,将尺寸为512*7*7的所述特征图输入回归子网络中第三个分支,预测所述目标的置信度;所述置信度用于预测目标偏转角度时,将360度分成n个区间,预测每个所述区间的偏移量和置信度,选取所述置信度最高的区间作为目标最终的偏转角度,其中,n的取值范围为(-π,π);具体的,本发明中,本步骤中需要注意的是:这里的置信度和2D目标检测中的置信度不太一样,本发明预测目标偏转角度时,预测的并非是目标偏角的数值,而是把360度分成n个区间,预测每个区间的偏移量和置信度,最终选置信度最高的那个作为目标最终的偏转角度。

步骤3-5,计算loss并更新网络参数,所述loss包括角度loss、置信度loss和维度loss;

最后总的loss计算公式为:loss=α*dim_loss+conf_loss+w*orient_loss

其中,α为第一超参数,设为0.6,w为第二超参数,设为0.4,dim_loss为维度loss,conf_loss为置信度loss,orient_loss为角度loss;

使用随机梯度下降法更新网络参数,所述随机梯度下降法初始的学习率设为0.0001,动量设为0.9。

进一步地,在一种实现方式中,所述步骤4包括:

步骤4-1,准备所述待测图像,所述待测图像为2DRGB图片,采用训练完成的所述2D目标检测器提取待测图像上的2D框,并预测所述2D框内的目标所属的类别;

步骤4-2,对于提取获得的每个所述2D框,裁剪获得所述待测图像中的目待测标图像,即裁剪位于所述2D框内的区域,并将所述待测目标图像缩放至预设大小,将缩放后的所述待测目标图像输入训练完成的3D目标检测器中,所述3D目标检测器经过特征提取网络和回归子网络部分,输出所述2D框内待测目标的3D尺寸偏移量和偏转角度信息。

进一步地,在一种实现方式中,所述步骤5包括如下步骤:

步骤5-1,根据所述旋转变换矩阵和平移变换矩阵,将目标坐标系中的坐标转换为相机坐标系中的坐标;

所述目标坐标系(object coordinate system)指以目标3D框中心为原点,坐标轴垂直于3D框各个平面的坐标系;

所述相机坐标系指以拍摄相机为原点,坐标轴正交的坐标系;

旋转变换包括关于x轴、y轴和z轴3个坐标轴的旋转;以x轴为例,假设所述目标坐标系到相机坐标系关于x轴的旋转矩阵为R1,所述目标坐标系下的一个点的3D坐标为(X,Y,Z),变换到所述相机坐标系下对应的坐标为(Xo,Yo,Zo),其中关于x轴的旋转矩阵R1如下:

则根据旋转变换关系有:

同理,关于y轴的旋转矩阵R2如下:

同理,关于z轴的旋转矩阵R3如下:

从所述目标坐标系到相机坐标系完整的旋转变换为:R=R

具体的,本发明中,由于根据实际场景中大部分目标在目标坐标系下俯仰角(对应汽车上下坡)和横滚角(对应汽车单边侧倾)基本都为0,所以实际上旋转变换矩阵只需要一个,即3D目标检测器只需要预测一个角度即可确定旋转变换矩阵。

假设所述目标坐标系到相机坐标系的平移变换矩阵为T=[Tx,Ty,Tz],其中,Tx表示一个点沿着x轴的平移距离,Ty表示一个点沿着y轴的平移距离,Tz表示一个点沿着z轴的平移距离;

从所述目标坐标系到相机坐标系的完整变换过程为:Xo=RX+T

其中,Xo为相机坐标系下的3D坐标,X为目标坐标系下的3D坐标;

步骤5-2,一个3D框可以表示为8个2D图像上的坐标及每个坐标之间的边,通过求出所述目标坐标系下8个坐标,并将每个坐标分别投影到2D图像上去;

所述投影过程包括:把所述3D框的8个点的坐标从目标坐标系转换到相机坐标系;将所述相机坐标系下的3D坐标通过相机的内参矩阵转换为2D图像上的2D像素坐标;

所述目标坐标系下3D框的8个点的坐标通过网络预测的3D框的长宽高来表示,旋转变换矩阵通过网络预测出来的偏转角度θ计算获得,相机内参矩阵从kitti数据集中的calib目录读取,而目标坐标系中3D框投影到2D图像上形成了一个2D框,所述2D图像目标区域经过2D目标检测器预测的2D框和3D框投影在2D图像上形成的2D框基本重合;于是假定所述2D图像上画出的3D框的中心实际上和2D框的中心是基本重合的;

对于所述目标坐标系,已获取所述3D框8个点的坐标,假设所述3D框的尺寸D=[dx,dy,dz],则8个点的坐标依次如下:

X1=[dx/2,dy/2,dz/2]T,X2=[-dx/2,dy/2,dz/2]T,…,X8=[-dx/2,-dy/2,-dz/2]T;

已知所述目标坐标系到相机坐标系的旋转变换矩阵,通过列出一个约束方程组求出平移变换矩阵:

假定相机的旋转变换矩阵为R,平移变换矩阵为T,相机内参矩阵为K,对于相机坐标系中的3D点X0=[X,Y,Z,1]T,其在2D图像上的2D坐标为下x0=[x,y,1]T,则:

x0=K*[R T]*X0,其中,[R T]是仿射变换,转换之后的x0不再是物理坐标,而是像素坐标;

候选的3D框在目标坐标系下的8个坐标可X1=[dx/2,dy/2,dz/2]T,X2=[-dx/2,dy/2,dz/2]T,…,X8=[-dx/2,-dy/2,-dz/2]T在投影到2D图像上面后和2D图像上目标的2D框是要满足一定约束条件的;

所述3D框和2D框的约束条件是,需要3D框每一个角点能投影到2D框至少一条边上去,这种约束条件仍然较弱,在kitti数据集上,由于几乎所有的目标都是直立的,可进一步加强这个约束条件,即所述3D框上面的点不能投影到2D框下面的边上去,同理所述3D框下面的点不能投影到2D框上面的边上去;

利用上述约束条件,求解所述3D框到2D框的平移变换矩阵T,根据所述旋转变换矩阵R,平移变换矩阵T以及相机内参矩阵K求出目标坐标系下的3D坐标对应于2D图像上的像素坐标。

进一步地,在一种实现方式中,所述步骤6包括如下步骤:

步骤6-1,通过所述3D目标检测器预测的目标坐标系下3D框的长宽高分别为dx、dy和dz,所述3D框在目标坐标系下的8个点的坐标分别为:

X1=[dx/2,dy/2,dz/2]T,X2=[-dx/2,dy/2,dz/2]T,…,X8=[-dx/2,-dy/2,-dz/2]T

步骤6-2,通过求出所述8个点的坐标转换到对应的相机坐标系的旋转变换矩阵R平移变换矩阵T,同时从kitti数据集中的calib目录下读取对应待测图像的内参矩阵K,计算所述8个点的坐标X1,X2,…X8在对应图像上的投影坐标x1,x2,…,x8,每个点的计算过程均通过以下公式进行:xi=K*[R T]*Xi(i=1,2…8);

步骤6-3,在计算出所述2D图像上3D框的8个投影坐标后,绘制获得所述待测目标的3D框。

有益效果:3D目标检测在很多领域都有着重要的作用,例如,在机器人领域,机器人需要判断画面中目标的位置和3D尺寸等信息,以此来实现和环境中物体的交互;在自动驾驶,汽车需要能够判断周围环境中人和车辆的位置和3D尺寸等信息。但是传统的2D目标检测无法获取目标的3D特征信息,一种对单目RGB图像进行3D目标检测的方法可以在训练数据获取难度不大的前提下进行3D目标检测,避免了其他一些方法需要利用RGB-D图像或者是点云数据的难点。本方法通过深度学习和几何学的方法,只需要利用单目RGB图像,就能训练一个3D目标检测器,能够检测给定类别目标的3D信息和偏转角度,进而依赖一些几何学原理,构建物体的3D框。本发明利用深度学习技术,结合传统2D目标检测的方法,提供了一种用于对单目RGB图像进行3D目标检测的方法,能够对图片中的目标建立3D框,输出框内的类别及目标的3D尺寸信息。

附图说明

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

图1是本发明实施例部分提供的一种对单目RGB图像进行3D目标检测的方法中训练和测试的工作流程示意图;

图2a是本发明实施例部分提供的一种对单目RGB图像进行3D目标检测的方法中采用的kitti数据集结构示意图;

图2b是本发明实施例部分提供的一种对单目RGB图像进行3D目标检测的方法中标注数据格式示意图;

图3a是本发明实施例部分提供的一种对单目RGB图像进行3D目标检测的方法中本发明实施例的原始图像示意图;

图3b是本发明实施例部分提供的一种对单目RGB图像进行3D目标检测的方法中对原始图像进行2D裁剪后的示意图;

图4是本发明实施例部分提供的一种对单目RGB图像进行3D目标检测的方法的第一输入图像示意图;

图5a是本发明实施例部分提供的一种对单目RGB图像进行3D目标检测的方法对第一输入图像的2D检测效果示意图;

图5b是本发明实施例部分提供的一种对单目RGB图像进行3D目标检测的方法的第二输入图像示意图;

图5c是本发明实施例部分提供的一种对单目RGB图像进行3D目标检测的方法对第一输入图像的3D检测效果示意图;

图5d是本发明实施例部分提供的一种对单目RGB图像进行3D目标检测的方法对第二输入图像的3D检测效果示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

本发明实施例公开一种对单目RGB图像进行3D目标检测的方法,本方法应用于自动驾驶场景下的车辆和人等典型目标的场景。

下面结合附图及实施例对本发明做进一步说明。

本发明实施例提供一种对单目RGB图像进行3D目标检测的方法,包括以下步骤:

步骤1,输入训练数据集,训练2D目标检测器用于生成目标的2D框;

步骤2,根据所述训练数据的标注数据中的2D框,裁剪原始图像获得目标图像,并缩放至预设大小;本实施例中,通过本步骤,将缩放至固定大小的图像作为3D目标检测器的训练数据。

步骤3,将缩放至预设大小的目标图像输入3D目标检测器,得到所述目标的特征图,将所述特征图输入回归子网络,预测获得所述目标的3D尺寸信息、偏转角度信息和置信度,根据所述训练数据集的标注数据中的真值信息训练3D目标检测器;具体的,本实施例中,所述真值信息英文为ground-truth,就是指真值,即采集图像时标注的一些信息,就是训练集中的label。

步骤4,通过训练完成的所述2D目标检测器检测出待测图像中的待测目标,根据2D框裁剪所述待测图像得到待测目标图像,将所述待测目标图像缩放至预设大小后,输入训练完成的所述3D目标检测器中,预测所述2D框内待测目标的3D尺寸信息和偏转角度信息;

步骤5,根据所述偏转角度信息,得到目标坐标系到相机坐标系的旋转变换矩阵,根据所述目标在3D坐标系的3D坐标和目标投影到2D图像所在的2D坐标系上的2D坐标之间的约束关系,建立约束方程组,求解获得平移变换矩阵;

步骤6,根据所述3D尺寸信息,获得所述待测目标在目标坐标系下的坐标信息,结合所述2D图像的相机校准参数得到相机内参,根据旋转变换矩阵和平移变换矩阵,计算获得所述待测目标的3D坐标在图像上的投影点,结合所述坐标信息绘制待测目标的3D框。

本实施例中,如图1所示,本发明方法所构建的对单目RGB图像3D目标检测的工作流程大致分为三大阶段:

第一阶段,训练2D目标检测器和3D目标检测器,包括准备kitti数据集,训练yolo网络用于2D目标检测,利用真值信息裁剪并缩放图片中包含目标的区域,训练3D目标检测器的特征提取网络,训练3D目标检测器的3个回归自网络;

第二阶段,输入图像进行检测,包括先使用上一步训练得到的2D目标检测器检测目标的2D框,然后再利用2D目标检测器的检测结果把目标2D框内的部分提取出来输入到3D目标检测器中,然后3D目标检测器先提取目标区域的特征图,然后经过后面的回归子网络输出目标的3D尺寸信息和偏转角度;

第三阶段,重建目标3D框,目标坐标系下的3D框的8个坐标通过目标的长宽高就可以知道。本发明通过3D目标检测器预测了目标的长宽高,通过长宽高可以知道目标在目标坐标系下的坐标,现在需要把这些坐标投影到图像上去,这个过程需要相机外参矩阵R和T,也需要相机内参矩阵K,内参矩阵是已知的,可以从kitti数据集目录中读取,R可以通过网络预测的偏转角度算出,现在关键是求出矩阵T,这个矩阵包含三个分量tx,ty,tz,它们就是通过一组约束方程来得到的,该约束方程组是目标2D框的四个坐标(xmin,ymin,xmax,ymax)和目标3D框之间的映射关系,四个方程组的形式如下:

其中,x

本实施例所述的一种对单目RGB图像进行3D目标检测的方法中,所述步骤1包括:

所述训练数据集采用kitti数据集,所述kitti数据集中的标注数据包括2D框、目标类别、3D尺寸信息、偏转角度信息和置信度,所述2D框用于获得原始图像中的目标图像;所述2D目标检测器采用yolov3。

具体的,本实施例中,kitti数据集结构如图2a所示:其中calib目录下存放的事相机校准参数,image_2存放的是单目RGB图像,label_2目录下存放的是每张图像对应的标注数据。

标注数据格式如图2b所示,标注的数据包括以下内容:

type:类型,包括Car,Truck,Pedestrian等;

truncated:截断,表示目标离开图片边界的程度,取值从0到1,0表示未离开图片边界,1表示完全离开图片边界;

occluded:遮挡,表示目标被遮挡的程度,取值为0,1,2,3,0表示安全可见,未被遮挡;1表示部分遮挡;2表示很大程度上被遮挡;3表示未知;

alhpa:目标的观察角度,取值范围从-pi到pi;

bbox:目标在图片中的2D框,包含left,top,right,bottom;

dimensions:目标的3D,包括高度,宽度,长度(单位是米);

location:目标在相机坐标系中的3D坐标(x,y,z)(单位是米);

rotation_y:目标关于相机系统y轴的旋转角度,取值范围从-pi到pi;

其中,在训练2D目标检测器yolo的过程中只用的到type和bbox部分的数据。

在3D目标检测器训练部分,会用到type,alhpa,bbox,dimensions,location,rotation_y的数据。

本发明中,由于3D目标检测主要应用于自动驾驶领域,而目前自动驾驶领域最大、使用最多的数据集就是kitti数据集。kitti数据集除了标注了面向传统的2D目标检测任务中的目标类别及其2D框外,还标注了目标的长宽高、观测角度以及3D坐标等信息,也正是由于这些额外标注的信息的存在,才使得在单目RGB图像上进行3D检测成为可能。在预测3D信息之前,需要先进行2D检测,找出图像中包含目标的区域。这里考虑到整个流程并不是端到端完成的,需要分两步处理,可能需要一定的时间,为了尽量节省时间,2D目标检测器使用了yolov3。yolov3是端到端的2D目标检测器,比RCNN之类的分两步的2D目标检测器在速度上要快。

本实施例所述的一种对单目RGB图像进行3D目标检测的方法中,所述步骤2包括:

根据所述kitti数据集的标注数据中的2D框真值,裁剪获得所述原始图像中的目标图像,即通过裁剪所述原始图像中位于2D框内的区域获得目标图像,将所述目标图像缩放至预设大小,所述预设大小为224*224,单位为像素;

将缩放至大小为224*224的目标图像作为所述3D目标检测器的输入,所述3D目标检测器包括特征提取网络和三个回归子网络;

其中,所述特征提取网络用于根据目标图像得到目标的特征图,所述特征图用于作为三个回归子网络的输入;

所述三个回归子网络分别用于回归目标的3D尺寸信息、偏转角度和置信度。本实施例中,这三个回归子网络的作用是分别回归目标的3D尺寸信息(长宽高)、偏转角度以及置信度。所以整个网络的输入是刚刚裁剪出来的224*224的图像区域,而特征提取网络的输出就是后面三个回归子网络的输入。原始图片及提取出来包含目标的部分的图片分别如图3a及图3b所示。本实施例中,所述预设大小的单位是像素,取值也可以换成其他值,一般来说,取值不能太大,否则计算量会大,取值也不能太小,否则会损失原图上的很多信息,而取成224是一个惯例,几乎所有的深度学习方法都是缩放成这个大小。

本实施例所述的一种对单目RGB图像进行3D目标检测的方法中,所述步骤3包括如下步骤:

步骤3-1,将所述缩放至预设大小的目标图像输入3D特征提取网络,得到2D框内目标的特征图;所述特征提取器采用vgg19_bn;输入尺寸为3*214*214的目标图像,即深度为3,大小为214*214的目标图像,经过所述特征提取器vgg19_bn特征提取后尺寸变为512*7*7,即深度为512,大小为7*7的特征图;具体的,本实施例中,vgg19_bn就是在vgg19的基础上加上了BatchNormalization层,而vgg19和vgg16结构基本一样,只是多了几个卷积层。

步骤3-2,将尺寸为512*7*7的所述特征图输入回归子网络中第一个分支,预测所述目标的3D尺寸信息,所述目标的3D尺寸信息即目标的3D尺寸偏移量,即所述目标的长宽高相较于平均值的偏移量,所述平均值为训练数据集中相同目标类别的目标的长宽高的平均值;具体的,本实施例中,本步骤中预测的长宽高并不是目标本身的长宽高,而是目标长宽高相比训练集中同类目标长宽高平均值的偏移量。这样做可以使得预测的3D长宽高不会有较大偏差,因为同类目标的长宽高是比较接近的。

步骤3-3,将尺寸为512*7*7的所述特征图输入回归子网络中第二个分支,预测目标的偏转角度θ,即预测所述目标的航向角;具体的,本实施例中,由于kitti数据集中的大部分目标都是在水平面上,它们的俯仰角(对应汽车上下坡)和横滚角(对应汽车单边侧倾)基本都为0,所以本发明不需要预测这两个角度,只需要预测目标的航向角(yaw angle,偏航角),也就是对应汽车左右拐弯的角度。

步骤3-4,将尺寸为512*7*7的所述特征图输入回归子网络中第三个分支,预测所述目标的置信度;所述置信度用于预测目标偏转角度时,将360度分成n个区间,预测每个所述区间的偏移量和置信度,选取所述置信度最高的区间作为目标最终的偏转角度,其中,n的取值范围为(-π,π);具体的,本实施例中,本步骤中需要注意的是:这里的置信度和2D目标检测中的置信度不太一样,本发明预测目标偏转角度时,预测的并非是目标偏角的数值,而是把360度分成n个区间,预测每个区间的偏移量和置信度,最终选置信度最高的那个作为目标最终的偏转角度。

步骤3-5,计算loss并更新网络参数,所述loss包括角度loss、置信度loss和维度loss;

最后总的loss计算公式为:loss=α*dim_loss+conf_loss+w*orient_loss

其中,α为第一超参数,设为0.6,w为第二超参数,设为0.4,dim_loss为维度loss,conf_loss为置信度loss,orient_loss为角度loss;

使用随机梯度下降法(stochastic gradient descent,SGD)更新网络参数,所述随机梯度下降法初始的学习率设为0.0001,动量设为0.9。

本实施例所述的一种对单目RGB图像进行3D目标检测的方法中,所述步骤4包括:

步骤4-1,准备所述待测图像,所述待测图像为2DRGB图片,采用训练完成的所述2D目标检测器提取待测图像上的2D框,并预测所述2D框内的目标所属的类别;

步骤4-2,对于提取获得的每个所述2D框,裁剪获得所述待测图像中的目待测标图像,即裁剪位于所述2D框内的区域,并将所述待测目标图像缩放至预设大小,将缩放后的所述待测目标图像输入训练完成的3D目标检测器中,所述3D目标检测器经过特征提取网络和回归子网络部分,输出所述2D框内待测目标的3D尺寸偏移量和偏转角度信息。本实施例中,3D检测器输出的是三维尺寸的偏移量,需要加上训练集中同类目标的平均尺寸才是最后的尺寸。具体的,2D检测结果如图5a所示。

本实施例所述的一种对单目RGB图像进行3D目标检测的方法中,所述步骤5包括如下步骤:

步骤5-1,根据所述旋转变换矩阵和平移变换矩阵,将目标坐标系中的坐标转换为相机坐标系中的坐标;

所述目标坐标系(object coordinate system)指以目标3D框中心为原点,坐标轴垂直于3D框各个平面的坐标系;

所述相机坐标系指以拍摄相机为原点,坐标轴正交的坐标系;

旋转变换包括关于x轴、y轴和z轴3个坐标轴的旋转;以x轴为例,假设所述目标坐标系到相机坐标系关于x轴的旋转矩阵为R1,所述目标坐标系下的一个点的3D坐标为(X,Y,Z),变换到所述相机坐标系下对应的坐标为(Xo,Yo,Zo),其中关于x轴的旋转矩阵R1如下:

则根据旋转变换关系有:

同理,关于y轴的旋转矩阵R2如下:

同理,关于z轴的旋转矩阵R3如下:

从所述目标坐标系到相机坐标系完整的旋转变换为:R=R

具体的,本实施例中,由于本发明根据实际场景中大部分目标在目标坐标系下俯仰角(对应汽车上下坡)和横滚角(对应汽车单边侧倾)基本都为0,所以实际上旋转变换矩阵只需要一个,即3D目标检测器只需要预测一个角度即可确定旋转变换矩阵。

假设所述目标坐标系到相机坐标系的平移变换矩阵为T=[Tx,Ty,Tz],其中,Tx表示一个点沿着x轴的平移距离,Ty表示一个点沿着y轴的平移距离,Tz表示一个点沿着z轴的平移距离;

从所述目标坐标系到相机坐标系的完整变换过程为:Xo=RX+T

其中,Xo为相机坐标系下的3D坐标,X为目标坐标系下的3D坐标;

步骤5-2,一个3D框可以表示为8个2D图像上的坐标及每个坐标之间的边,通过求出所述目标坐标系下8个坐标,并将每个坐标分别投影到2D图像上去;

所述投影过程包括:把所述3D框的8个点的坐标从目标坐标系转换到相机坐标系;将所述相机坐标系下的3D坐标通过相机的内参矩阵转换为2D图像上的2D像素坐标;

所述目标坐标系下3D框的8个点的坐标通过网络预测的3D框的长宽高来表示,旋转变换矩阵通过网络预测出来的偏转角度θ计算获得,相机内参矩阵从kitti数据集中的calib目录读取,而目标坐标系中3D框投影到2D图像上形成了一个2D框,所述2D图像目标区域经过2D目标检测器预测的2D框和3D框投影在2D图像上形成的2D框基本重合;于是假定所述2D图像上画出的3D框的中心实际上和2D框的中心是基本重合的;

对于所述目标坐标系,已获取所述3D框8个点的坐标,假设所述3D框的尺寸D=[dx,dy,dz],则8个点的坐标依次如下:

X1=[dx/2,dy/2,dz/2]T,X2=[-dx/2,dy/2,dz/2]T,…,X8=[-dx/2,-dy/2,-dz/2]T;

已知所述目标坐标系到相机坐标系的旋转变换矩阵,通过列出一个约束方程组求出平移变换矩阵:

假定相机的旋转变换矩阵为R,平移变换矩阵为T,相机内参矩阵为K,对于相机坐标系中的3D点X0=[X,Y,Z,1]T,其在2D图像上的2D坐标为下x0=[x,y,1]T,则:

x0=K*[R T]*X0,其中,[R T]是仿射变换,转换之后的x0不再是物理坐标,而是像素坐标;

候选的3D框在目标坐标系下的8个坐标可X1=[dx/2,dy/2,dz/2]T,X2=[-dx/2,dy/2,dz/2]T,…,X8=[-dx/2,-dy/2,-dz/2]T在投影到2D图像上面后和2D图像上目标的2D框是要满足一定约束条件的;

所述3D框和2D框的约束条件是,需要3D框每一个角点能投影到2D框至少一条边上去,这种约束条件仍然较弱,在kitti数据集上,由于几乎所有的目标都是直立的,可进一步加强这个约束条件,即所述3D框上面的点不能投影到2D框下面的边上去,同理所述3D框下面的点不能投影到2D框上面的边上去;

利用上述约束条件,求解所述3D框到2D框的平移变换矩阵T,根据所述旋转变换矩阵R,平移变换矩阵T以及相机内参矩阵K求出目标坐标系下的3D坐标对应于2D图像上的像素坐标。

本实施例所述的一种对单目RGB图像进行3D目标检测的方法中,所述步骤6包括如下步骤:

步骤6-1,通过所述3D目标检测器预测的目标坐标系下3D框的长宽高分别为dx、dy和dz,所述3D框在目标坐标系下的8个点的坐标分别为:

X1=[dx/2,dy/2,dz/2]T,X2=[-dx/2,dy/2,dz/2]T,…,X8=[-dx/2,-dy/2,-dz/2]T

步骤6-2,通过求出所述8个点的坐标转换到对应的相机坐标系的旋转变换矩阵R平移变换矩阵T,同时从kitti数据集中的calib目录下读取对应待测图像的内参矩阵K,计算所述8个点的坐标X1,X2,…X8在对应图像上的投影坐标x1,x2,…,x8,每个点的计算过程均通过以下公式进行:xi=K*[R T]*Xi(i=1,2…8);

步骤6-3,在计算出所述2D图像上3D框的8个投影坐标后,绘制获得所述待测目标的3D框。具体的,本实施例中,原始图像和绘制了3D框并标注了由网络预测出来的3D框内目标的类别和长宽高信息的图片分别如图4、图5b、图5c和图5d所示。其中,3D尺寸的单位是米,h代表高度,w代表宽度,l代表长度。具体的,图5c中检测到一个行人,对应的3d矩形框的长宽高分别是1.08米、0.71米、1.79米。图5d中检测到三辆汽车,它们对应的三个矩形框的长宽高分别如下,最左侧的汽车长4.26米、宽1.68米、高1.55米,中间的汽车长3.49米、宽1.60米、高1.53米,最右侧的汽车长3.99米、宽1.69米、高1.58米。

有益效果:3D目标检测在很多领域都有着重要的作用,例如,在机器人领域,机器人需要判断画面中目标的位置和3D尺寸等信息,以此来实现和环境中物体的交互;在自动驾驶,汽车需要能够判断周围环境中人和车辆的位置和3D尺寸等信息。但是传统的2D目标检测无法获取目标的3D特征信息,而本申请提供的一种对单目RGB图像进行3D目标检测的方法可以在训练数据获取难度不大的前提下进行3D目标检测,避免了其他一些方法需要利用RGB-D图像或者是点云数据的难点。本方法通过深度学习和几何学的方法,只需要利用单目RGB图像,就能训练一个3D目标检测器,能够检测给定类别目标的3D信息和偏转角度,进而依赖一些几何学原理,构建物体的3D框。本发明利用深度学习技术,结合传统2D目标检测的方法,提供了一种用于对单目RGB图像进行3D目标检测的方法,能够对图片中的目标建立3D框,输出框内的类别及目标的3D尺寸信息。

具体实现中,本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的一种对单目RGB图像进行3D目标检测方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,ROM)或随机存储记忆体(random access memory,RAM)等。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中各个实施例之间相同相似的部分互相参见即可。以上所述的本发明实施方式并不构成对本发明保护范围的限定。

相关技术
  • 一种对单目RGB图像进行3D目标检测的方法
  • 一种基于单目图像的3D目标检测方法
技术分类

06120113083067