三维目标检测方法、装置以及存储介质
技术领域
本发明涉及图像处理技术领域,尤其涉及一种三维目标检测方法、装置以及存储介质。
背景技术
目标检测是计算机视觉领域的传统任务,与图像识别不同,目标检测不仅需要识别出图像上存在的物体,给出对应的类别,还需要将该物体的位置通过最小包围框(Bounding box)的方式给出。目前,大多数3D物体检测方法依赖激光雷达数据,用以在自动驾驶场景中提供准确的深度信息,但是激光雷达成本高昂、视场范围比较小;单目相机安装复杂,成本低,但是,目前还没有基于单目视觉的3D目标检测技术方案。
发明内容
有鉴于此,本发明要解决的一个技术问题是提供一种三维目标检测方法、装置以及存储介质。
根据本公开的一个方面,提供一种三维目标检测方法,包括:将目标物体在单目图像中的第一坐标中心,设置为所述目标物体的3D边界框的第二坐标中心;获取采集所述单目图像的单目相机的外参和内参,根据所述外参和内参设置所述目标物体的3D边界框的空间坐标约束;设置与所述目标物体的姿态角相对应的方向损失函数;基于与所述目标物体的平均尺寸、与所述平均尺寸相对应的估计残差,设置所述3D边界框的尺寸损失函数;根据所述方向损失函数和所述尺寸损失函数,生成预设的卷积神经网络模型的模型损失函数;使用单目图像训练样本并基于所述空间坐标约束和所述模型损失函数,对所述卷积神经网络模型进行训练,使用训练好的所述卷积神经网络模型对单目图像进行三维目标检测处理。
可选地,所述根据所述外参和内参设置所述目标物体的3D边界框的空间坐标约束包括:根据所述外参和内参确定与所述3D边界框顶点相对应的顶点三维坐标;确定所述目标物体在所述单目图像中的2D边界框,基于所述2D边界框和所述顶点三维坐标生成所述空间坐标约束,以使每个顶点都能投影在所述2D边界框的至少一条边上。
可选地,将与所述3D边界框相对应的三维坐标系设置为以第二坐标中心为原点的世界坐标系;确定位于所述3D边界框上的点在所述三维坐标系中的三维坐标在所述单目图像中的投影坐标为:
x=K[R|T]x0;
其中,所述三维坐标为x0=[X,Y,Z,1]T,所述投影坐标为x=[x,y,1]T;R为所述单目相机的旋转矩阵,T为所述单目相机的平移矩阵,K为所述单目相机的内参矩阵。
可选地,所述姿态角包括:方向角;所述设置与所述目标物体的姿态角相对应的方向损失函数包括:将所述方向角映射到多个重叠的bin中;其中,所述卷积神经网络模型估计出所述方向角落在所述Bin中的概率,以及所述方向角的Cos和Sin值;确定与所述bin相对应的置信损失和定位误差;基于所述置信损失和定位误差获得所述方向损失函数。
可选地,所述方向损失函数为:
Ltheta=Lconf+w*Lloc;
所述定位误差为:
其中,Lconf为所述bin的置信损失;Lloc为定位误差,nθ*为和所述方向角有覆盖的θ*角度的bin的个数,ci是第i个bin相对于单目相机中心的偏差角度,θ*为bin的中心角度,Δθi是第i个bin的中心需要的变化量,W为权重系数。
可选地,所述基于与所述目标物体的平均尺寸、与所述平均尺寸相对应的估计残差,设置所述3D边界框的尺寸损失函数包括:所述尺寸损失函数为:
其中,D*是所述3D边界框的真实尺寸,
是所述目标物体的平均尺寸,δ是所述卷积神经网络预测相对于所述平均尺寸估计的残差,n为所述3D边界框的数量。
可选地,所述根据所述方向损失函数和所述尺寸损失函数,生成预设的卷积神经网络模型的模型损失函数包括:所述模型损失函数为:
L=α×Ldims+Ltheta;
其中,α为权重参数。
可选地,所述卷积神经网络模型包括三个分支,每个分支都包括有多个全连接层;其中,第一分支用于估计所述3D边界框的尺寸,第二分支用于估计所述bin的中心角度的sin和cos值,第三分支用于估计所述bin的置信度。
可选地,所述使用训练好的所述卷积神经网络模型对单目图像进行三维目标检测处理包括:确定待检测的单目图像中的检测目标的2D边界框,将所述待检测的单目图像输入所述训练好的所述卷积神经网络模型,获取所述检测目标的三维目标检测结果;其中,所述三维目标检测结果包括:所述3D边界框的尺寸、所述bin的中心角度和置信度。
根据本公开的另一方面,提供一种三维目标检测装置,包括:坐标中心设置模块,用于将目标物体在单目图像中的第一坐标中心,设置为所述目标物体的3D边界框的第二坐标中心;空间约束确定模块,用于获取采集所述单目图像的单目相机的外参和内参,根据所述外参和内参设置所述目标物体的3D边界框的空间坐标约束;方向损失确定模块,用于设置与所述目标物体的姿态角相对应的方向损失函数;尺寸损失确定模块,用于基于与所述目标物体的平均尺寸、与所述平均尺寸相对应的估计残差,设置所述3D边界框的尺寸损失函数;模型损失确定模块,用于根据所述方向损失函数和所述尺寸损失函数,生成预设的卷积神经网络模型的模型损失函数;模型训练模块,用于使用单目图像训练样本并基于所述空间坐标约束和所述模型损失函数,对所述卷积神经网络模型进行训练;目标检测模块,用于使用训练好的所述卷积神经网络模型对单目图像进行三维目标检测处理。
根据本公开的又一方面,提供一种三维目标检测装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上所述的方法。
根据本公开的再一方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行如上所述的方法。
本公开的三维目标检测方法、装置以及存储介质,通过设置3D边界框的空间坐标约束、方向损失函数以及尺寸损失函数,并对卷积神经网络模型进行训练构建多任务神经网络,能够实现对于单目图像的3D目标检测,输出目标物体的姿态和位置信息;可以提高三维目标检测的效率和精度,降低使用成本。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本公开的三维目标检测方法的一个实施例的流程示意图;
图2为根据本公开的三维目标检测方法的一个实施例中的设置空间坐标约束的流程示意图;
图3为根据本公开的三维目标检测方法的一个实施例中的设置方向损失函数的流程示意图;
图4为本公开的卷积神经网络模型的一个实施例的示意图;
图5A为使用卷积神经网络模型预测的行人姿态的精度曲线示意图,图5B为使用卷积神经网络模型预测的行人位置的尺度信息精度的曲线示意图;
图6为使用卷积神经网络模型预测对人体进行三维目标检测的检测结果示意图;
图7为根据本公开的三维目标检测装置的一个实施例的模块示意图;
图8为根据本公开的三维目标检测装置的另一个实施例的模块示意图。
具体实施方式
下面参照附图对本公开进行更全面的描述,其中说明本公开的示例性实施例。下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
下文中的“第一”、“第二”等仅用于描述上相区别,并没有其它特殊的含义。
根据目标检测需要输出结果的不同,2D目标检测通常为使用RGB图像进行目标检测,输出物体类别和在图像上的最小包围框,而将使用RGB图像、RGB-D深度图像和激光点云,输出物体类别及在三维空间中的长宽高、旋转角等信息的检测称为3D目标检测。
目前,3D目标检测方法主要包括利用视觉和雷达两大类方案。现有的利用激光雷达的3D检测方法例如为Voxelnet,Voxelnet把激光点云在空间中均匀划分为不同的voxel,再把不同voxel中的点云通过提出的VFE(Voxel Feature Encoding)层转换为一个统一的特征表达,最后使用RPN(Region Proposal Network)对物体进行分类和位置回归。
现有的利用视觉的3D检测方法如Stereo R-CNN,该方法充分利用双目视觉左右视图中的稀疏、密集、语义和几何信息,同时检测和关联左右图像中的对象,通过在立体区域提议网络(RPN)之后添加额外分支以预测稀疏关键点,视点和对象维度,然后与2D左右框组合以计算粗略的3D对象边界框,最后通过使用左右ROI的基于区域的光度对准来恢复精确的3D对象边界框。
3D目标检测是视觉感知、运动预测和自主驾驶规划的基础。目前,大多数3D物体检测方法严重依赖激光雷达数据,用以在自动驾驶场景中提供准确的深度信息。然而,激光雷达的成本高昂、视场范围比较小;深度、红外相机需要和RGB结合使用,成本较高;双目、多目相机安装复杂,且需要苛刻的几何约束。为解决现有技术的缺点,本公开提供一种基于单目视觉的3D目标检测方法。
图1为根据本公开的三维目标检测方法的一个实施例的流程示意图,如图1所示:
步骤101,将目标物体在单目图像中的第一坐标中心,设置为目标物体的3D边界框的第二坐标中心。单目图像为单目相机等采集的图像,目标物体可以为单目图像中的人、车辆等。
步骤102,获取采集单目图像的单目相机的外参和内参,根据外参和内参设置目标物体的3D边界框的空间坐标约束。
步骤103,设置与目标物体的姿态角相对应的方向损失函数,基于与目标物体的平均尺寸、与平均尺寸相对应的估计残差,设置3D边界框的尺寸损失函数。
步骤104,根据方向损失函数和尺寸损失函数,生成预设的卷积神经网络模型的模型损失函数。
步骤105,使用单目图像训练样本并基于空间坐标约束和模型损失函数,对卷积神经网络模型进行训练,使用训练好的卷积神经网络模型对单目图像进行三维目标检测处理。对卷积神经网络模型进行训练可以采用现有的多种训练方法。
在一实施例中,可以使用训练好的卷积神经网络模型对单目相机采集到数据进行3D目标检测,目标物体包括行人、车辆等,输出目标物体的3D信息,包括:尺度信息,中心点位置坐标,姿态等,并在单目图像中设置3D边界框。
图2为根据本公开的三维目标检测方法的一个实施例中的设置空间坐标约束的流程示意图,如图2所示:
步骤201,根据外参和内参确定与3D边界框顶点相对应的顶点三维坐标。
步骤202,确定目标物体在单目图像中的2D边界框,基于2D边界框和顶点三维坐标生成空间坐标约束,以使每个顶点都能投影在2D边界框的至少一条边上。
可以通过现有的多种方法在单目图像中确定2D边界框。在2D目标检测结果的基础上,利用2D边界框生成几何约束,用以生成一个完整的3D边界框和6个自由度的位姿(位置和角度)。对于3D边界框的估计是通过在现有2D检测算法的基础上回归出来的。任何一个目标物体(行人,车辆等)的3D边界框都为一个长方体,对于长方体的描述可以通过下面三个参数表征:中心点O=[t_x,t_y,t_z]T,以及尺寸信息D=[d_x,d_y,d_z]和目标姿态r(theta,phi,alpha),其中,theta代表方向角,phi代表偏转角,alpha代表俯仰角。
目标物体在世界坐标系下相对于相机的位姿,可以通过相机的外参(R,T)和内参矩阵K等来表示,R代表旋转矩阵,T代表平移矩阵。3D边界框的3D点为x0=[X,Y,Z,1]T,在单目图像中的坐标为x=[x,y,1]T。
将与3D边界框相对应的三维坐标系设置为以第二坐标中心为原点的世界坐标系,确定位于3D边界框上的点在三维坐标系中的三维坐标在单目图像中的投影坐标为:
x=K[R|T]x0 (1-1);
其中,三维坐标为x0=[X,Y,Z,1]T,投影坐标为x=[x,y,1]T;R为单目相机的旋转矩阵,T为单目相机的平移矩阵,K为单目相机的内参矩阵。
以目标物体在单目图像中的第一坐标中心(目标物体的3D边界框的第二坐标中心)为原点的世界坐标系,在此世界坐标系中某一个点x0=[X,Y,Z,1]T在图像上的投影点为x=[x,y,1]T,满足公式1-1。假设尺寸D是已知的,则候选的3D边界框的八个顶点的坐标可以表示成X_1=[d_x/2,d_y/2,d_z/2]T,X_2=[-d_x/2,d_y/2,d_z/2]T,…..,X_8=[-d_x/2,-d_y/2,-d_z/2]T。
目标物体的2D边界框和3D边界框能够匹配形成3D边界框的空间坐标约束,3D边界框的每一个顶点(每一角)能投映射到2D边界框至少一个边上。例如,X_0=[d_x/2,-d_y/2,d_z/2]T,和2D边界框的一边(左边)的最小的xmin对应,对应的空间坐标约束可以为如下方程:
x_{min}=(K[R\T][d_x/2,-d_y/2,d_z/2,1]T)x (1-2);
其中,(.)x表示相对于3D边界框的三维坐标系,剩余2D边界框的xmax,ymin,ymax也可以得到相似的方程,即可以得到四个与3D边界框的空间坐标约束。另外,还可以设置一些其他几何约束,可以通过3D边界框的视觉外观获取,这些约束和视觉外观紧密相关,同时可以用来加强3D边界框的约束。
在使用深度神经网络回归出相对稳定的3D边界框时,利用空间坐标约束可以产生最终的3D边界框。3D边界框被假设严格地被2D边界框所包围,一个3D边界框由中心点的(x,y,z)坐标、和三维尺度(w,h,l)和三个旋转角所表示。目标物体的全局姿态即使一直没有变,但是可能在2D边界框中的姿态一直在变。选用回归2D边界框中的姿态再加上在相机坐标系中目标物体角度的变化,综合来进行全局姿态的估计。
图3为根据本公开的三维目标检测方法的一个实施例中的设置方向损失函数的流程示意图;姿态角包括:方向角;如图3所示:
步骤301,将方向角映射到多个重叠的bin中,其中,卷积神经网络模型估计出方向角落在Bin中的概率,以及方向角的Cos和Sin值;bin可以是设置的容器、箱子等。
步骤302,确定与bin相对应的置信损失和定位误差。
步骤303,基于置信损失和定位误差获得方向损失函数。
其中,方向损失函数为:
Ltheta=Lconf+w*Lloc (1-3);
定位误差为:
其中,Lconf为bin的置信损失;Lloc为定位误差,nθ*为和方向角有覆盖的θ*角度的bin的个数,ci是第i个bin相对于单目相机中心的偏差角度,Δθi是第i个bin的中心需要的变化量,W为权重系数。
对于一个在地面上运动的物体(行人,车辆),它的俯仰角和翻转角为0,忽略掉俯仰角和翻转角,只需要估计方向角。估计全局物体方向角R∈SO(3),需要相机的参考帧中检测窗口的crop(相机裁切)的位置。例如,一辆车沿直线行驶,尽管车在全局的方向R(θ)没有变,但是它的局部角thetal(全局方向和相机中心穿过crop中心的射线形成的角度)一直在改变。因此,需要回归局部角thetal,给定相机的内参,射线的具体像素可以不用计算,可以通过结合射线和局部角来计算物体的全局角。
在一个实施例中,可以设置MultiBin的结构来进行姿态的估计,首先离散化旋转角(方向角)到N个重叠的Bin,对个每一个Bin,卷积神经网络模型估计出姿态角度在当前Bin的概率,同时估计出角度值的Cos和Sin值。卷积神经网络模型如图4所示,在共享卷积特征层后,卷积神经网络模型有三个分支41、42和43,分别估计3D物体的长宽高、每个Bin的置信度和每个Bin的角度估计。
MultiBin结构对于方向估计的全部损失函数如公式1-3,其中,Lconf置信损失等于每个bin的softmax损失的置信。Lloc用于最小化估计的角度和真实的角度,所有和真实角度有重叠的多个bin会用来估计正确的角度。定位损失尝试最小化真实数据和所有余弦值最大的多个bin的误差定位误差Lloc,Lloc可以通过公式1-4计算,其中,nθ*为和真实角度有覆盖的θ*的bins的个数,ci是bin i相对于相机中心的偏差角度,θ*为bin的中心角度,Δθi是bin i的中心需要的变化量。
根据推论,选择具有最大置信度的bin,卷积神经网络模型输出最后的结果会利用bin的Δθ的中心来估计方向角,即方向角由具有最大置信度的bin的中心角度来估计。MultiBin的结构可以有两个分支。一个是计算置信度ci,另外一个是计算Δθ的sine和cosine值。最后3n个参数用来估计n个bin。
在一个实施例中,基于与目标物体的平均尺寸、与平均尺寸相对应的估计残差,设置3D边界框的尺寸损失函数包括:尺寸损失函数为:
其中,D*是3D边界框的真实尺寸,
是目标物体的平均尺寸,δ是卷积神经网络预测相对于平均尺寸估计的残差,n为3D边界框的数量。
在现实世界中,同类目标物体的区分方差很小且为单峰,例如,车和自行车的尺寸方差在厘米的数量级上。因此,使用L2损失作为一个标准,在训练的数据集上对于每一个尺寸计算相对于平均值的残差,尺寸的估计损失L
dims的公式为公式1-5,其中D*是目标物体的3D边界框的真实尺寸,
是一个与目标物体相对应的特定类物体的平均尺寸,δ是卷积神经网络模型的预测相对于平均值估计的残差。
在一个实施例中,根据方向损失函数和尺寸损失函数,生成预设的卷积神经网络模型的模型损失函数为:
L=α×Ldims+Ltheta (1-6);
其中,α为权重参数。
如图4所示,卷积神经网络模型包括三个分支,每个分支都包括有多个全连接层;其中,第一分支41用于估计3D边界框的尺寸,第二分支42用于估计bin的中心角度的sin和cos值,第三分支43用于估计bin的置信度。两个分支用于方向的估计,一个分支用于尺寸的估计,所有的分支得到相同的卷积特征,并且将所有的损害与权重结合生成模型损失函数,为公式1-6。
训练好的卷积神经网络模型之后,确定待检测的单目图像中的检测目标的2D边界框,将待检测的单目图像输入训练好的卷积神经网络模型,获取检测目标的三维目标检测结果;其中,三维目标检测结果包括:3D边界框的尺寸、bin的中心角度和置信度。
在一个实施例中,在kitti数据集上进行卷积神经网络模型的训练和测试,KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。对于如图4的卷积神经网络模型,首先利用预训练VGG(Visual Geometry Group)网络去掉FC层并加上3D box层,在卷积神经网络模型中,每一个方向分支都有256维度的FC层,第一个FC层中尺寸回归的维度为512。在训练中,每一个真实的crop被重新确定尺寸为224x224。
为了使卷积神经网络模型对视角变化和阻塞更加鲁棒,真实的3D边界框抖动并且真实的θl(方向角)会随着crop的中心光束移动而变化。另外,增加颜色的畸变和随机的给图像加镜像对图像进行增强,通过SGD保持学习率为0.0001的训练。卷积神经网络模型经历3万次迭代维持batch(批次)的大小为16,最后的卷积神经网络模型用于交叉验证。
例如,在kitti数据集上评测其中训练集7480张,测试集7517张,Kitti数据集主要针对自动驾驶的场景数据集,主要包括小汽车、自行车、卡车、行人等8类物体目标物体。只考虑行人,因此针对行人的3D检测精度和方向精度进行评测,数据集按照难易程度分为困难、中等、容易三种场景的数据,困难数据集的检测精度77.17%,方向精度99.46%;中等数据集的检测精度89.04%,方向精度99.67%;容易数据集的检测精度92.98%,方向精度99.91;行人姿态精度曲线如图5A所示,行人位置尺寸信息精度曲线如图5B所示。获取人体的三维目标检测结果如图6所示,卷积神经网络模型输出的行人3D尺度信息,以及行人的姿态角。
在一个实施例中,如图7所示,本公开提供一种三维目标检测装置70,包括:坐标中心设置模块71、空间约束确定模块72、方向损失确定模块73、尺寸损失确定模块74、模型损失确定模块75、模型训练模块76和目标检测模块77。
坐标中心设置模块71将目标物体在单目图像中的第一坐标中心,设置为目标物体的3D边界框的第二坐标中心。空间约束确定模块72获取采集单目图像的单目相机的外参和内参,根据外参和内参设置目标物体的3D边界框的空间坐标约束。方向损失确定模块73设置与目标物体的姿态角相对应的方向损失函数。
尺寸损失确定模块74基于与目标物体的平均尺寸、与平均尺寸相对应的估计残差,设置3D边界框的尺寸损失函数。模型损失确定模块75根据方向损失函数和尺寸损失函数,生成预设的卷积神经网络模型的模型损失函数。模型训练模块76使用单目图像训练样本并基于空间坐标约束和模型损失函数,对卷积神经网络模型进行训练。目标检测模块77使用训练好的卷积神经网络模型对单目图像进行三维目标检测处理。
在一个实施例中,空间约束确定模块72根据外参和内参确定与3D边界框顶点相对应的顶点三维坐标。间约束确定模块72确定目标物体在单目图像中的2D边界框,基于2D边界框和顶点三维坐标生成空间坐标约束,以使每个顶点都能投影在2D边界框的至少一条边上。
空间约束确定模块72将与3D边界框相对应的三维坐标系设置为以第二坐标中心为原点的世界坐标系,确定位于3D边界框上的点在三维坐标系中的三维坐标在单目图像中的投影坐标。姿态角包括:方向角,方向损失确定模块73将方向角映射到多个重叠的bin中,其中,卷积神经网络模型估计出方向角落在Bin中的概率,以及方向角的Cos和Sin值。方向损失确定模块73确定与bin相对应的置信损失和定位误差,基于置信损失和定位误差获得方向损失函数。
目标检测模块77确定待检测的单目图像中的检测目标的2D边界框,将待检测的单目图像输入训练好的卷积神经网络模型,获取检测目标的三维目标检测结果;其中,三维目标检测结果包括:3D边界框的尺寸、bin的中心角度和置信度。
图8为根据本公开的三维目标检测装置的另一个实施例的模块示意图。如图8所示,该装置可包括存储器81、处理器82、通信接口83以及总线84。存储器81用于存储指令,处理器82耦合到存储器81,处理器82被配置为基于存储器81存储的指令执行实现上述的三维目标检测方法。
存储器81可以为高速RAM存储器、非易失性存储器(non-volatile memory)等,存储器81也可以是存储器阵列。存储器81还可能被分块,并且块可按一定的规则组合成虚拟卷。处理器82可以为中央处理器CPU,或专用集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本公开的三维目标检测方法的一个或多个集成电路。
在一个实施例中,本公开提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如上任一个实施例中的方法。
上述实施例中提供的三维目标检测方法、装置以及存储介质,通过设置3D边界框的空间坐标约束、方向损失函数以及尺寸损失函数,并对卷积神经网络模型进行训练构建多任务神经网络,能够实现对于单目图像的3D目标检测,输出目标物体的姿态和位置信息;解决了激光雷达成本高以及双目视觉安装条件严格等问题,能够应用于对于智能机器人和无人车等基于机器视觉对3D环境感知的应用场景,可以提高三维目标检测的效率和精度,降低使用成本。
可能以许多方式来实现本公开的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。