利用卷积神经网络的显著性区域预测方法
2019-02-25李荣
李 荣
(1.无锡太湖学院 物联网工程学院,江苏 无锡 214064; 2.无锡太湖学院 江苏省物联网应用技术重点实验室,江苏 无锡 214064)
0 引 言
随着计算机互联网技术的迅猛发展,多种媒体采集设备如智能手机、摄像机等的大量普及,各种文化产业如游戏、电影娱乐的发展,使得视频成为人们日常生活不可或缺的信息载体[1]。这些载体包含大量冗余信息,而显著性预测可以提升信息处理效率,如何进行快速有效的显著性预测成为计算机视觉领域的研究重点。
卷积神经网络[2-3](convolutional neural network, CNN)是深度学习领域中的流行体系结构,在模式识别中得到了广泛应用,涵盖了从全局图像分类[4]到局部的目标检测[5],再到语义分割[6]等众多领域。
显著性预测问题带来了2个主要难题:①对大量训练数据进行采集代价比较高,因为其需要捕捉观察者的凝视点,而不是每一个图像的文本标签;②当使用卷积神经网络进行显著性预测时,必须对输入图像中的每个像素点单独估算一个显著性得分,而非对整个图像的全局标签进行估算,输出的显著度图必须在相邻像素点之间呈现出空间一致和平稳过渡的特性。
为此,有很多研究者对利用CNN解决显著性预测问题进行了分析探讨。如文献[7]采用了层数更多的卷积神经网络,从3个不同的卷积网络层提取特征图,形成一个混合特征图。在文献[8]提出的体系结构中,3个卷积神经网络并行工作,最终的3个全连接层结合到一个单一层,形成显著度图。文献[9]将相位一致性与2维主成分分析结合进行显著性预测,采用相位一致性获取图像中重要的特征点和边缘信息,融合局部和全局颜色对比度,生成特征显著性图。文献[10]构建深度交叉卷积神经网络模型,采用超像素聚类方法获取图像区域特征。首先对显著性区域初步检测,然后将显著区域的多边形逼近结果输入到Grab Cut算法,完成精确检测。文献[11]将尺寸不同的嵌套窗口分别输入到不同的卷积网络中,并将得出的多个显著度图融合到一起,以得到一个聚合的显著度图。此外,还有CNN结合布尔图方法[12]。这些方法都将卷积神经网络用于分类。
本文的特点是将卷积神经网络用于回归而非分类,从端到端的角度解决显著性预测问题。提出了2种不同的卷积神经网络体系:浅层卷积神经网络和深层卷积神经网络,这2种方法都没有直接训练特征图的线性模型,而是在迁移层上训练了一堆新的卷积层。其中,浅层网络是从头开始训练的网络,其优势是结构简单,可以缓解模型过拟合问题;深层网络使用了先前的分类训练结果,由于卷积过程中,从最低层得到的模型参数在少数几代后就开始收敛。因此,深层网络可以充分利用最底层的模型参数,获得更好的效果。
1 提出的卷积神经网络
本文方法的理论依据是深层网络集合(ensembles of deep networks,EDN),EDN是使用卷积网络进行显著性预测的早期尝试,主要是将正向(显著性)或负向(非显著性)局部区域所训练的简单线性分类器进行结合,其改良方法较多,如经典的AlexNet结构[13]就是此类方法的延伸。AlexNet结构采用的网络层数更多,为了保持特征图来自于卷积层,移除了全连层,将每层的响应及其学习到的权重输入到一个线性模型中。本文方法也是基于EDN,但没有直接训练特征图的线性模型,而是在迁移层上训练了一堆新的卷积层,从端到端的角度解决显著性预测问题。按照网络结构,本文方法分为浅层和深层卷积网络。
1.1 浅层卷积神经网络
本节介绍本文提出的第一个卷积神经网络,即参数从头开始训练的轻量级架构。
1.1.1 体系结构
本文提出的浅层卷积神经网络由5层组成,每层都包含学习权重:3层卷积层和2层全连接层。每个卷积层后面都有一个修正线性单元(rectified linear unit, ReLU)和一个最大池化层。每层的详细描述如图1所示,该网络中共有6 440万个自由参数。
图1 提出的浅层卷积网络体系结构Fig.1 Proposed shallow convolution network architecture
浅层网络结构如图1所示。图1的3层卷积层中,前2个数字表示核的大小(也即感知野的尺寸),如5×5×32表示核的大小为5×5,第3个数字32表示通道的数量。下采样层进行梯度计算时,按照核尺寸的变化规律进行更新,这里下采样层偏置初始化为0。
输入:96×96尺寸的RGB真彩色图像。
卷积层1:5×5大小的卷积核32个;最大池化:2边,2×2的核;参数数量:20.5 MByte。
卷积层2:3×3卷积核64个;最大池化:2边,3×3的核;参数数量:21.3 MByte。
卷积层3:3×3的卷积核128个;最大池化:2边,2×2的核;参数数量:22.6 MByte。
第1层全连接FC:4 608维,将第3层的最大池化层的输出连接成为向量,作为输入,输入到Slice1和Slice2;
Max out层接收上层的向量输入,并计算前层输出的最大值;
第2层全连接FC:2 304维。为了对分辨率的损失进行测试时间的补偿,在输出处的2 304维向量被映射到一个与显著度图相对应的48×48 2维阵列后,对输出尺寸进行重新调整以进行图像匹配,最后输出结果。
本文浅层网络考虑了训练所需显著度图的可用数量,采用不同策略以避免和缓解对模型的过拟合问题。首先,本文使用了3层卷积层,而非经典AlexNet结构[13]所使用的5层卷积层。其次,输入图像的尺寸重新调整为96×96,比AlexNet中使用的227×227的尺寸要小。3层最大池化层通过最后3次池化操作将生成的初始特征图的尺寸从96×96降低到10×10。这些策略都体现在浅层神经网络的体系结构中,获得了不错的结果。
本文浅层卷积神经网络使用Python语言和一些深度学习库实施。处理平台采用了2 048个CUDA 核,4G显存的NVIDIA GTX 980 GPU。SALICON数据集[14]的训练耗时为6~7 h,而使用SUN数据集[15]的训练耗时则是5~6 h。每张图片的显著性预测需要200 ms。
1.1.2 训练
本文从头开始对该浅层网络进行了2次训练,每次训练均使用不同的数据集。第1个模型使用SALICON数据集的1万个显著度图,第2个模型使用了SUN数据集的6 000个显著度图。
所有层中的权重都由均值为0,标准偏差为0.01的正态高斯分布进行初始化,偏置值初始化为0.1。对网络的训练采用了随机梯度下降法和Nesterov动量法,进行了1 000次迭代训练。为进行验证,本文将训练数据分为2部分,80%的数据用于训练,剩余数据用于定期验证。通过对所有图像进行镜像处理而使用了数据增广技术。所有的显著度图均被归一化为[0,1]。在浅层网络使用L2正则化损失函数,权重上则使用标准L2范数正则化项。
1.2 深层卷积神经网络
本文研究的第2种方法是对目前图像分类的深层卷积神经网络进行改进,使之用于显著性预测任务。以往的研究表明,在图像分类任务中,卷积神经网络中从最低层得到模型参数,并在几代后开始收敛[2]。同时进行的操作有:各层中的滤波器可视化学习。这说明卷积层执行的是视觉中低层视觉性任务,例如对颜色或纹理的检测。本文假设这些分类训练的较低层也可以被转移到显著性预测任务中。本文对这些预训练的滤波器进行适应,并将其与显著性训练的新层结合。
1.2.1 体系结构
图2给出了由10层权重层和总计2 580万个参数组成的网络的分层结构。每层卷积层后面都有一个ReLU。池化层在前2个卷积层之后,有效地将中间层中的特征图宽度和高度缩减到以前的1/4。第8层卷积层之后是一层反卷积层,其生成与输入宽度和高度匹配的显著度图。
图2 提出的深层卷积网络体系结构Fig.2 Proposed deep convolution network architecture
深层网络的下采样梯度计算依然按照核尺寸的变化规律进行更新,偏置初始化为0。
输入:320×240尺寸的RGB真彩色图像。
卷积层1:7×7大小的卷积核96个,在局部进行规整化后,进入最大池化层:2边,3×3的核;参数数量:2.4 MByte。
卷积层2:5×5卷积核256个;最大池化:2边,3×3的核,参数数量:2.7 MByte。(该层的最大池化层有效地将中间层中的特征图宽度和高度缩减到源输入图像的1/4)
卷积层3:3×3的卷积核512个;无最大池化层;参数数量:2.6 MByte。(对于前3层,本文使用转移学习和预训练权重,对所提深层网络的前3层卷积层的权重进行初始化)
卷积层4:5×5的卷积核512个;无最大池化层;参数数量:2.6 MByte。
卷积层5:5×5的卷积核512个;无最大池化层;参数数量:2.9 MByte。
卷积层6:7×7的卷积核256个;无最大池化层;参数数量:2.9 MByte。
卷积层7:11×11的卷积核128个;无最大池化层;参数数量:3.0 MByte。(卷积核数量的逐渐减少和尺寸的变大也是逐渐收敛的过程,这样,卷积层执行的低层视觉性任务逐渐转移到显著性预测任务中)
卷积层8:13×13的卷积核1个;无最大池化层;参数数量:3.3 MByte。(该层核的尺寸最大,卷积核只有1个,接近于输出的卷积结果)
反卷积层:8×8的卷积核1个,4边。参数数量:3.4 MByte。(值得一提,反卷积层可以作为输出层,输出与原图像尺寸匹配的显著度图)
为选择最终的网络结构,本文将多个不同的变量在1 000个图像的验证集上进行测试。最终网络设计的分辨率、层数和层的深度主要受可用图形处理器(graphics processing unit, GPU)内存量的约束。
1.2.2 训练
本文在SALICON数据集的1万个训练图像中选取了9 000个图像对所提网络进行训练,并将剩下的1 000个图像用于验证。在输入图像和目标显著度上使用了多个标准预处理技术,从图像像素中减去了训练集的平均像素值使其中心为零,并对得出的值进行线性调整,使其处于[-1,1]。与之类似,本文通过减去均值并缩放到[-1,1]的方式,对显著度图进行预处理。输入图像和显著度图在训练前均被降低一半采样,至320×240。
在对网络的训练中,本文使用了随机梯度下降法,欧氏距离损失函数以每批量2个图像,进行2.4万次迭代,在训练过程中,在每100次迭代后根据验证集对网络进行验证,以监测收敛和过拟合。本文使用了标准L2权重正则化(权重衰减),并且每100次迭代将学习率减半,该网络进行了大约15 h的训练。通过每图像的预测数量将基准学习率归一化,得出学习率0.01/(320×240)≈1.3×10-7。
2 实验与分析
2.1 内存要求
2个网络的体系结构对内存资源提出了不同的要求。这些内存资源用于2个不同任务:定义网络参数和反映在不同处理阶段网络响应的二进制大对象(binary large object, BLOB)数据。
在训练过程中,对网络的参数进行拟合。参数定义为:f(wTx+b),其中,w表示卷积层中的滤波器参数,b对应偏置值,f为非线性函数。
与输入图像相关的数据是内存资源要求。输入图像在卷积神经网络中被分层处理,每个阶段处理后创建出多个中间特征图(或BLOB数据)。
表1给出了2个卷积神经网络各自的大致内存需求,这些数值分别从图1和图2的浅层网络和深层网络结构中得出。
表1 每个卷积神经网络的大概内存要求Tab.1 Approximate memory requirements for each convolution neural network
2.2 数据集
本文使用的3个数据集描述如表2所示。SALICON是用于显著性预测的最大的数据集,创建该数据集的图像来自于微软公司,该数据集中的显著度图是通过鼠标点击获得[14]。SUN数据集通过一个在线游戏创建,使用网络摄像头对玩家的视线凝视点进行跟踪。该数据集使用的自然场景图像来自于SUN数据集[15]。MIT1003数据集和MIT300数据集在显著性预测中使用比较广泛[14],MIT1003数据集包括可用于训练的图像和凝视点,但没有共开凝视点,因此,本文选择了提供凝视点信息的MIT300数据集。
表2 数据集的描述Tab.2 Description of data sets
2.3 与其他方法的比较
本文实验采用了和MIT显著性基准测试程序相似的方式。将预测的显著度图与实际凝视点生成的显著度图进行比较,而其他指标则直接进行凝视点的比较。
图3给出了2个网络的定性比较,对预测的显著度图和地面实况注视图进行了展示。这些样本显示浅层卷积神经网络呈现出了对图像的中心部分的偏置,深层网络则给出了一个较高的空间分辨率,这是得益于其具有较大特征图的体系结构。
图3 浅层网络和深层网络生成的显著度图Fig.3 Salience graphs generated by shallow networks and deep networks
本文所提2个网络仅使用各自每个数据集的训练分区和验证分区的图像进行训练,因此在这些实验中,来自不同数据集的图像从没有被混合使用。表3和表4给出了不同方法的测试结果,其中,相似度、相关系数(correlation coefficient, CC),AUC shuffled,AUC Borji和AUC Judd为显著性预测的度量指标[8],这些数值越高,表示测试结果越好。如表3和表4所示,每个指标的得分表明,所提浅层网络的性能显著优于其他方法。这很大程度上得益于浅层网络的设计考虑到了训练所需显著度图的可用数量,以及不同策略用以避免对模型的过拟合,且小滤波尺寸起到了隐式规整化的作用。
表3 SUN测试集的结果Tab.3 Results of SUN test set
表4 SALICON测试集的结果Tab.4 Results of the SALICON test set
表5对本文提出的浅层和深层卷积神经网络进行了定量比较。其中,深层卷积神经网络在除了SUN验证的所有比较中,性能均优于浅层卷积神经网络(见表5中加下横线数据)。其原因在于:①深层网络保持了输入图像的宽高比(不存在全连接层);②深层卷积神经网络生成一个较高分辨率的输出,这样能够更好地匹配显著度图中较复杂的图案。
表6将本文实验结果与MIT300基准测试程序中一些结果进行了比较。如表6,本文的深层网络与文献[7]实现了类似的结果。由表6可知,本文提出的浅层网络性能相对较差,但与其他方法比较,仍然处于中等,SALICON和多层CNN在MIT300中的得分优于本文的深层网络,但前两者的复杂度也更高。多层CNN要求18层[7],SALICON则使用了16层以及多个尺寸的图像[14],而本文的模型更加简单,在一个单一尺寸上使用10层 (深层)或5层(浅层)来定义。
实验结果还体现了本文所提模型在不同数据集中的鲁棒性,即本文所提网络具有跨数据集的鲁棒性。各数据集和基准测试程序中结果相差不大。
表5 本文提出的浅层和深层网络比较Tab.5 Comparison of proposed shallow and deep networks
表6 MIT300数据集的结果Tab.6 Results of the MIT300 dataset
2.4 复杂度分析
每个卷积层的时间复杂度T定义为
T~O(M2·K2·Cin·Cout)
(1)
(1)式中:M表示卷积核输出特征图的尺寸;K表示卷积核的尺寸;Cin表示卷积核的输入通道数,即上一层的输出通道数目;Cout表示输出通道数。
对于多层CNN,其总时间复杂度的计算原则是:层内相乘,层间相加,总时间复杂度Ttol定义为
(2)
(2)式中:t表示CNN网络的深度;Ci表示第i层卷积层的输出通道数;Ci-1表示第(i-1)层卷积层的输出通道数即第i层卷积层的输入通道数。对于CNN网络及其变种CNN都是各个卷积层的累加结果。由于层间的输入和输出,因此每个层的时间复杂度可能有所不同。
值得一提,层间计算量的增加一般要明显大于层内计算量的增加,因为Cin和Cout占了最大比重。对于同一个问题的解决,大多数情况下,比较网络深度是衡量CNN的时间复杂度的简单有效方法。本文深层CNN要求10层,浅层CNN要求5层。多层CNN要求18层[7],SALICON使用了16层[14],深度交叉CNN要求12层[10],并行CNN要求7层[8],多尺度CNN使用了5层[11]。因此,本文2种方法在时间复杂度方面具有一定优势。
对于空间复杂度,在CNN网络中,其主要指网络本身的体积,定义为
(3)
因此,空间复杂度与网络的深度、输入输出通道数和卷积核尺寸有关。从上面的分析看,本文方法的空间复杂度中等偏上。
3 结 论
本文在显著性预测中对卷积神经网络进行训练,提出浅层和深层卷积神经网络,从端到端的角度解决显著性预测问题。其中,所提浅层网络和深层网络在SALICON和SUN数据上的结果相似,但深层网络在MIT300上的结果优于浅层网络。另一方面,所提浅层网络在训练时间中对内存的要求较少,由于具有的层数较少,能够快速地生成显著度图。此外,所提2种方法在MIT300基准测试程序的测试结果表现不错,具有跨数据集的鲁棒性。