基于多层次CNN特征融合的深度估计算法

2023-11-02 12:37胡佑璞邹承明
计算机应用与软件 2023年10期
关键词:卷积深度特征

凌 莉 胡佑璞 邹承明,3,4*

1(武汉工程职业技术学院信息工程学院 湖北 武汉 431400)

2(武汉理工大学计算机科学与技术学院 湖北 武汉 430000)

3(交通物联网技术湖北省重点实验室 湖北 武汉 430000)

4(鹏城实验室 广东 深圳 518055)

0 引 言

单目深度估计任务针对输入的单幅彩色图像,要求估计出图像中每个像素对应的深度信息,属于计算机视觉领域研究的热点问题之一,在许多其他领域有着广泛的运用,例如:目标检测[1]、三维重建[2]、无人驾驶[3]、姿态估计[4]等。由于图像的空间信息属于三维信息,通过单幅二维RGB图像获取每个像素的深度信息是困难的。目前可以通过硬件设备直接获取深度信息,如微软的Kinect相机可以搜集室内的近距离场景的深度信息,激光测距仪可以获取室外场景的深度。然而,设备的价格十分昂贵,并且在复杂的场景中,深度估计仍然是不明确的病态问题,面临着许多挑战。

对于深度估计,许多研究采用卷积网络进行训练,但是深度图像对于网络的底层特征信息难以利用。通过高层次特征得到的深度图虽然与输入图像具有相似的轮廓结构,但是最终估计结果精度仍然较低,因为图像缺乏大量的细节信息。

在单目场景深度估计中,一般利用物体的外观、场景的几何运动、物体语义等特征实现对深度的约束。单目深度估计的方法大致分为两类:有监督学习、无监督学习。

有监督学习方面,基于外观特征差异与场景深度的不连续性具有对应关系这一假设,深度估计被视为连续的回归问题。Eigen等[5]首次提出使用卷积神经网络(CNN)解决单目深度估计问题。整个网络框架由一个全局的粗糙网络与一个局部的精细网络堆叠组成。全局网络以AlexNet为基础,提取粗糙的全局深度信息。局部网络结合原图信息进一步优化全局网络的深度图,获得了不错的效果。无监督学习方面,Godard等[6]利用左右视图的一致性进行无监督的深度估计预测,通过对极几何约束输出视差图,利用左右视差一致性优化性能,提高了鲁棒性。Kuznietsov等[7]提出稀疏深度图像作为标签的半监督学习方法,提高性能。

为了改善图像的细节信息,本文提出基于CNN融合了多层次特征的深度估计算法。通过CNN模型同时提取图像的底层特征与高层特征,不同层次的深度网络特征代表了不同的语义信息。高层特征表示图像的整体空间结构,而底层特征表示图像的局部细节。为了在最终的深度估计结果中补充细节信息,则需要融合这些不同层级的特征,从而可以提高最终的深度估计效果。通过实验可以证明,本文方法可以较好地估计出图像的深度信息。

1 卷积与特征融合

1.1 全卷积神经网络

全卷积神经网络中包含了大量的卷积结构,该模型可以在没有全连接层的情况下对每个像素进行分类。全卷积神经网络用卷积层代替了卷积神经网络的全连接层,具有许多优点:1) 网络的输入尺寸不再限制,可以利用反卷积层和上采样的方法,输出与原图像同样大小的特征图,从而可以预测每个像素的分类,并保留输入图像中的空间信息;2) 无须输入像素点周围的整个图像块,方便减少存储空间和冗余计算;3) 利用卷积运算提取图像的整体特征,方便全局特征学习。与卷积神经网络相比,全卷积神经网络有了较大的突破,但仍有一些问题。网络只对最后的特征进行处理,对于层数较深的网络,底层特征则没有利用到。

1.2 反卷积

(1)

反卷积操作如式(2)所示,其中输入特征图大小、边缘填充、步长、卷积核大小分别记为x2、p2、s2、k2,输出特征图记为y2,则:

y2=x2-k2+2p2+1

(2)

1.3 特征融合

CNN中使用的多维的卷积核,每层通过多个特征图像组成。不同于传统的方法,深度学习目的是利用反向传播来自动学习图像的表示,并非是人工特征一样去人为地设计特征。每个卷积层通过输入信息学习一种映射关系来表示局部空间的特征,即卷积层融合了局部空间信息和输入图像,并且限制于局部感受野范围。卷积神经网络通过叠加许多的非线性层和下采样层,便可以学习到具有全局范围的图像描述信息,是一种强力的特征提取手段。通过显示的控制信息的流向,可以建立不同层之间的依赖关系,每一层的信息可以不仅来自它的上一层,还可以接收到其他层的信息,即跳跃连接。它可以容易地使用在网络中。

在图像深度估计任务中,需要通过图像的空间信息来推测物体的深度信息,需要通过全局特征与局部特征共同判断物体的深度信息。VGG、ResNet[8]属于利用图像的高层语义信息的深度模型。已有的方法大部分是利用深层的CNN网络做特征的提取。包括AlexNet[9]同样会利用深层卷积作为网络的特征提取手段,来对图像做一个整体的空间特征提取。然而,这类方法利用CNN网络的高层特征图来表示图像,然后估计其深度。由于高层特征往往代表全局的空间结构,其中缺少大量的细节信息,影响了深度图估计算法的最终质量。如图1的特征融合示意图所示,通过将各种层次的特征连接起来,从而在最终的输出特征中融合了代表局部细节的底层特征,进而提高了图像的整体与细节信息,最终提高深度图像的质量。

图1 多层次CNN特征融合

如图1所示,利用反卷积融合从网络中提取低层和高层特征。输入一幅图像,在网络的前向传播里,经过多层卷积和池化后,输出特征图像的大小将持续减小。对这些不同尺度、不同层次的特征图像进行反卷积后,叠加在相应的位置进行连接操作。

2 算法设计

2.1 模型的结构

特征融合的CNN模型架构如图2所示,其中:conv-3-128表示卷积运算,表示卷积核大小为3×3,通道数为128,pool代表池化操作。架构当中显示了对应的卷积核、步长与池化信息,表明了图像的size变化过程。

图2 基于多层次特征融合架构

网络架构的左侧为特征提取模块,根据多层的卷积操作提取不同层次的特征图。可以看出,第一次池化操作后,输出图像尺寸减小到原图像的1/2;然后在第2次池化后,减少到1/4;一直到第5次池化后,尺寸缩小至原图像的1/32,输出的是512维特征图。在第5个池化操作之后增加了一层1×1、通道数为1的卷积层,将特征图的通道数转换为1。第一部分输出的X0,可以表示图像的整体空间结构。

卷积网络中的特征根据不同的层次具有不同的含义,一般来说,对于高层次的特征,由于感受野较大,因此包含了更多的全局信息,即图像的整体空间信息。而相对于高层特征,低层次的特征由于感受野较小,所以关注点在局部区域,因此包含了大量的局部细节信息。但是,现有的方法大多只利用了最后的高层特征,因此导致了细节信息的丢失,使得车辆的边缘比较模糊。但是不同层次的特征不能直接连接起来,因为它们的通道数不一致。因此需要对特征进行变化,例如:池化和采样。得到size和通道数一致的特征图。整体大致分为3步。

步骤3对特征图X4进行第3次反卷积操作,目的是还原成原输入图像的大小,但是通道数为1,即最终输出的深度图像。

2.2 损失函数

损失函数(Loss Function)是用来判断模型的指标函数,反映了模型的输出预测值与实际真实值之间的距离。训练过程中,就是要最小化损失函数,使得模型达到最优收敛的状态。损失函数可分为两类:经验风险损失函数和结构性风险损失函数。经验风险损失函数表达了预测结果与实际结果的差异,而结构风险损失函数则表达了正则化惩罚项与经验风险损失函数的总和。常用的损失函数有分类交叉熵损失函数和回归均方损失函数。

KITTI数据集中包含了所需要的采集原图像与对象的深度图,为了学习两种数据之间的映射关系,需要合适的损失函数来判别两者的差,如式(3)所示。根据有监督的模型,使用误差进行反向传播来更新参数权重。给定输入的原图像,采用回归均方损失函数,以此评估模型输出的深度图像与原图像之间的距离和误差,再更新参数,使得模型逐步达到收敛的状态。

(3)

3 实验分析与评价

3.1 实验评价指标及参数

1) 实验参数。模型的训练与测试均采用单块的型号为1080Ti的GPU完成,使用的深度学习框架为TensorFlow。为了验证本文方法的有效性,在KITTI数据集上进行测试。利用随机梯度下降更新参数,学习率lr初始化为10-3,逐步递减至10-4。因为是端到端的网络模型,所以将图像输入至已收敛的模型中后,输出图像即为对应的深度图像。

2) 评价指标。本文使用的评价指标有平均相对误差Abs、平方相对误差Sq、均方根误差RMSE和阈值δ下的精度。和传统的有代表性的方法进行对比。

(1) 平均相对误差:

(4)

(2) 平方相对误差:

(5)

(3) 均方根误差:

(6)

(4) 阈值δ下的精度:

(7)

3.2 实验数据集介绍

(1) KITTI数据集。KITTI是一个庞大的交通数据集、不仅可以训练车辆检测模型,还可以训练深度估计、语义分割等模型。因此,该数据集与本文的研究方向十分吻合。并且,本文模型也需要大量的图像使得模型训练收敛,而且后续的章节也需要同类型的数据集进行深度估计。本文使用公开数据集KITTI[10],由德国卡尔斯鲁厄理工学院与丰田美国理工学院联合完成。在数据集中,包含了多种类型的图像,包含了乡村、城市、高速公路等场景。图3是KITTI数据集中的相关统计信息。可以看出,数据集中的对象类型主要有:“汽车”“货车”“卡车”“行人”等,它们是交通场景中的常见目标。

该数据集在多个领域均有广泛的应用,例如:目标识别、深度估计、语义分割等,标签信息很丰富。本文进行深度估计研究,KITTI数据集主要包括三种数据,注解文件使用XML文件标注了目标的类别以及坐标信息;图像文件划分了训练集与测试集;JPG文件包含了训练的原始图像。图片分辨率为1 242×375。通过PASCALVOC的格式,对KITTI数据集进行调整,主要是修改了原本的标签格式。通过Python脚本进行处理。KITTI数据集统计信息如图4所示。

图4 KITTI数据集相关统计信息

(2) ApolloScape数据集。ApolloScape数据集是由百度公司的Apollo自动驾驶平台采集的数据集[11]。通过激光雷达设备来采集大量的深度图像,所采集的图像来自北京、上海、深圳等城市。数据集中包含了像素级的语义标签、3D信息、实例分割和双目视角下的图像等多种类型数据。其中包含了多种类型的目标,例如:小车、行人、人行道、交通标识、楼房等。图像分辨率为3 384×2 710,数据集总共包含了17 062幅RGB图像。其中的像素级语义标签和视差图可以分别转换为相应的目标坐标信息和图像的深度数据,用于目标检测和深度估计任务。图5是数据集ApolloScape中的一些例子。

3.3 实验分析与算法效果

在KITTI与ApolloScape数据集上进行对比实验,证明融合特征的多层次CNN深度估计算法的优越性。图6为对比实验结果展示。

(a) 原图像 (b) Garg等 (c) 本文 (d) 真实深度图像图6 各数据集上的深度估计结果对比

图6显示了本文模型在各数据集上的深度估计效果。颜色越浅,表示物体的距离越近;颜色越深,表示物体的距离越远。真实深度图像中天空部分深度为缺失值,则不计入深度估计区域。可以看出,基于多层次CNN特征融合的深度估计方法可以较好地还原图像的深度图,特别是能够更好地反映不同对象之间的细节信息。例如:如图6的第1行与第3行所示,左侧停放了多个距离较近的车辆。Garg等的深度估计结果中,多个车辆之间距离的边界十分模糊,难以区分。本文在多个对象的区分较为清晰,并且可以发现,路中的车辆也是比较清楚的。在ApolloScape中的结果也表明本文方法的清晰度更高。原因在于本文方法是基于多种特征融合的,在CNN的感受野范围内,既选取了高层特征,也包含了底层特征,使得图像在整体以及局部范围内,都可以表现较好。数据集的实验结果表明,本文模型相对其他方法取得了较好的效果。与其他方法相比,通过对比误差指标与精确度指标,本文方法取得了较好的结果,可以保证精度尽可能高、误差尽可能小。

如表1所示,表示本文方法与其他两种深度估计方法对比结果。Abs、Sq和RMSE这三个指标表示模型输出的深度图与真实深度图像的误差,值越小,说明模型的深度估计效果越好。与其他2种方法相比,本文提出的网络结构误差最小,计算结果有较大的改善,特别是在Abs误差方面。相比于文献[12]的方法Abs、Sq和RMSE误差分别下降了41%、42%和23%;相比于文献[13]的方法Abs、Sq和RMSE误差分别下降了30%、15%和2%。最后3列比较了模型在深度估计中的精度。本文模型在ApolloScape中的精度也表现较好。通过比较真实深度图像与预测深度图像的比值来表明模型的精确度,值越高,说明模型精度越高。本文方法相比于文献[12]的方法准确率分别提升了26%、5%和1%;相比于文献[13]的方法准确率分别提升了15%、5%和2%。结果表明,本文算法的精度较高,说明采用多种特征融合方法的有效性。

表1 定量比较结果

文献[12]的方法同样属于单目深度估计方法,且应用在室外场景。通过提出一种超像素池化方法,组合不同层级的卷积特征进行上采样。本文与文献[12]的方法区别在于,本文通过反卷积来改变不同层级的特征图的size,再通过直接合并特征图达到多层次特征融合的目的,并且取得了更好的实验效果。而文献[13]的方法属于一种双目的深度估计,通过两个固定摄像机来获取场景的结构化数据。根据重构误差来进行训练。

虽然现有的许多方法都基于CNN的模型来做特征提取,但是本文在此基础上进行了特征融合,通过融合高层次与低层次的特征来提高深度估计的质量,最终达到图像细节表现更好的效果。综合图6及表1可知,本文算法在图像细节与指标上均表现较好,可以有效地在图像中估计出场景的深度值。

4 结 语

为了解决CNN无法很好地利用底层特征的问题,本文提出基于多层次特征融合的卷积图像深度估计算法。将网络分为特征提取模块与特征融合模块,通过在对应位置添加不同特征图像的方法,融合了不同层次、不同尺度的特征,增强了整体深度结构细节。实验结果表明,本文方法能够较好地重建场景的局部细节,恢复图像的深度信息。

猜你喜欢
卷积深度特征
基于3D-Winograd的快速卷积算法设计及FPGA实现
深度理解一元一次方程
如何表达“特征”
从滤波器理解卷积
不忠诚的四个特征
深度观察
深度观察
深度观察
基于傅里叶域卷积表示的目标跟踪算法
抓住特征巧观察