郭志强,胡永武,刘 鹏,杨 杰
(1. 宽带无线通信与传感器网络湖北重点实验室(武汉理工大学),武汉430070;2. 武汉理工大学信息工程学院,武汉430070)
(∗通信作者电子邮箱991307071@qq.com)
在机器视觉领域,天气状况对成像效果的影响是不可避免的。随着机器视觉在生活中的广泛应用,比如室外监控、自动驾驶等,自动获取当前天气状况并实现成像设备的自适应调整就显得极为重要。目前,“特征表达+分类器”是广泛使用的目标检测与分类框架,基于图像的天气识别分类也不例外,核心在于高效准确的特征提取与表达并构建合理的分类器。传统的特征提取方法是针对某个特定的问题或者一类问题来设计特征,虽然具有极强的代表性,但实现起来比较耗时。比如图像梯度特征中使用最为广泛的尺度不变(Scale-Invariant Feature Transform,SIFT)特征[1]和梯度直方图(Histogram of Oriented Gradient,HOG)特征[2]。此外,在模式识别中,支持向量机(Support Vector Machine,SVM)作为分类器以其特有的优势被应用于各个领域,如人像识别、文本分类等。Roser等[3]提取车载监控图像不同区域的亮度、对比度、锐度、饱和度等直方图特征构建特征向量,利用支持向量机实现对晴天、小雨和大雨三种天气图像的分类;Li 等[4]手动提取图像功率谱斜率、对比度、噪声和饱和度等特征,选择分类决策树作为分类器并用支持向量机作为树的节点对特征进行分类,但该模型对降雨天气识别率较低;Lu 等[5]构建了包含10 000 张晴天和阴天图像的数据库,对分组后的天气图像提取天空、阴影、反射、对比和阴霾等天气线索作为天气特征,再利用支持向量机进行分类;Zhang等[6]构建了任意背景的多类天气图像数据库,提取局部特征和全局特征并利用多核支持向量机方法(Mutiple Kernel Learning,MKL)进行分类;Zhang 等[7]又在此基础上对分类方法进行改进,提升了分类效果;Zheng 等[8]提取天空和非天空区域的特征,使用判别字典作为分类模型对天气图像进行分类。随着深度学习的发展,基于深度学习的特征表达方法免去了人工设计特征的繁琐,其中卷积神经网络[9]广泛应用于图像分类并取得了许多优秀的成果,但在图像天气分类上的应用不多。Elhoseiny等[10]使用卷积神经网络对晴阴两种天气图像进行分类并达到了82.2%的分类准确度;Li等[11]利用天气线索的语义分割作为辅助任务,开发出基于卷积神经网络的多任务框架,用来同时解决天气图像分类任务和天气线索分割任务;Villarreal 等[12]对雨雾雪图像做超像素分割的增强处理后用卷积神经网络进行分类,也取得了较好的分类效果;An等[13]将AlexNet和SVM结合起来,把卷积神经网络提取出来的天气特征用支持向量机进行分类,在天气图像分类上也有不错的表现。
本文在对传统人工设计算法和卷积神经网络的研究基础上,对原有的卷积神经网络结构进行改进,把传统算法与神经网络结合,以五种常见天气现象晴天、阴天、雨天、雾天、雪天的天气图像作为样本,实现天气图像的传统特征和深层特征的融合,并利用融合特征进行天气图像分类。本文算法框架如图1所示。
图1 特征融合模型算法框架Fig.1 Algorithm framework of feature fusion model
传统的特征提取方法需要根据检测对象进行针对性设计,设计方法极大地依赖于先验知识,对于检测对象的本质特征刻画较为薄弱,同时提取效果受人工设计算法影响较大,局限性较多。同时,在文献[14]中也提到,卷积神经网络的方法通过让机器自动学习样本特征,无需大量的先验知识及繁琐的算法设计,可以反映出人为设计难以实现的特征。但卷积神经网络也有其局限性,比如低层卷积层感受野太小导致难以兼顾全局特征。在此基础上,如果可以将针对性的设计特征与卷积神经网络特征相结合,对于天气的特征表达将会大有裨益。本文在传统图像处理方法的基础上,研究并提取了4 种基于统计的天气图像特征,并称其为传统特征;相对地,通过多层卷积神经网络所提取出来的天气特征则称为深层特征。本文希望能兼顾传统算法与深度学习的优点,将传统与深层特征提取方法相结合,增加特征表达方法的多样性,从而使天气特征得到更加完善的表达。
传统特征的设计问题是传统天气图像分类研究的重点,早期的天气特征提取着眼在图像的全局统计特征,如文献[3]中的对比度、饱和度,这些方法一定程度上可以反映不同天气条件下的光照等特征,但是忽略了图像背景信息,并且当天气图像背景比较复杂时易受背景干扰。文献[5]中提出了利用不同天气状况下的天气线索,比如天空、阴影、反射作为局部特征,同时加上了对比度、暗通道等全局特征,合理利用了背景信息,但是局部特征的分割较为繁琐,并且容易引入误差。本文综合考虑了各种传统特征的提取方法及其效果,并结合实验情况选择了天空、对比度、饱和度和暗通道这4 种特征作为传统天气特征。
1.1.1 天空特征
在不同的天气图像中,天空区域的特征差异是较为明显的。比如晴天的天空比较干净,受摄像头不同的影响表现出蓝色或灰色,杂色较少;阴天则会有不同程度的云彩聚集等。在文献[5]中详细介绍了分割天空区域的方法,并对天空区域提取了RGB 颜色直方图作为天空特征向量。该文中的天空区域的分割算法需要大量的训练图片,工作量较大,且分割效果并不完美,容易引入不必要的误差。本文在对比统计大量监控图像的基础上,采取了较为简单的天空区域特征提取方法,将天气图像的高度4 等分,将最上层的部分图像区域直接作为天空区域,再提取天空区域的Lab 颜色空间[7]的a 通道和b 通道直方图,直方图划分为24 个区间,归一化处理后得到1× 24 的特征向量作为天空特征向量。样本图像的天空特征如图2所示。
1.1.2 对比度特征
对比度特征可以反映一幅图像中最亮与最暗之间的对比差异。不同的天气条件下会有较为明显的对比度差异,比如晴天图像中阳光和阴影部分亮暗对比强烈,而雾天图像的亮度分布较为平均等,因此本文选择对比度特征作为传统特征之一。本文根据Michelson 公式[15]计算对比度C 如式(1)所示:
其中:Lmax和Lmin分别代表图像的最大亮度和最小亮度。而图像亮度(Luminance)为HLS 颜色模型[16]中L 分量,代表颜色的明亮程度,体现了无色的强度概念。HLS 颜色模型亮度分量计算方法如式(2)所示:
其中:Vmax= max(R,G,B);Vmin= min(R,G,B)。样本的亮度图像如图3所示。
1.1.3 饱和度特征
在HLS 颜色模型中,饱和度(Saturation)反映颜色的鲜艳程度,与人的眼睛识别色彩机制密切相关,可以较好地反映不同天气条件下的颜色特征。除天空区域以外,图像的其他区域有较为复杂的背景,比如森林、草地、建筑等,在不同的光照条件下会呈现出不同的视觉效果,地面干燥及湿润程度的不同也会有视觉上的差异。因而饱和度可以是体现不同天气图像差异的重要特征。饱和度的计算方法如式(3)所示:
本文将提取HLS 颜色空间的饱和度直方图,图像中每个像素点取值范围为0~255,划分为24 个区间,并作归一化处理。结果得到维度为1× 24的特征向量。样本图像的饱和度特征如图4所示。
1.1.4 暗通道特征
He等[17]在单幅图像去雾中提出暗通道先验规律,即在无雾图像的非天空区域里,把图像分为若干子块,每个子块中都会有某些像素点的一个颜色通道的亮度接近于0。在此规律的基础上,暗通道图像随不同的天气状况会有不同的特征表现。本文将此规律推广至所有天气图像,提取每一种天气状况下的暗通道图像,即每个RGB 分量中最小值构成的图像,然后提取暗通道图像的直方图,并将直方图划分为24 个区间,归一化处理后得到维度为1× 24的特征向量。其中,输入图像J的暗通道可以表示为:
其中;Jc表示彩色图像的RGB 通道。样本图像的暗通道特征图展示如图5。
图2 五种天气的a、b通道直方图Fig.2 a channel histograms and b channel histograms of 5 kinds of weather
图3 五种天气图像的亮度图Fig.3 Brightness images of 5 kinds of weather images
图4 五种天气图像的饱和度图、饱和度直方图Fig.4 Saturation images and saturation histograms of 5 kinds of weather images
图5 五种天气图像的暗通道图像、暗通道直方图Fig.5 Dark channel images and dark channel histograms of 5 kinds of weather images
卷积神经网络的基本结构有输入层、卷积层、池化层、全连接层、输出层。其中,卷积层可以通过卷积操作提取天气图像的不同局部特征,低层的卷积层提取边缘、线条等低级特征,高层的卷积层可以提取更为高级和抽象的特征;池化层一般在卷积层之后,并与卷积层交替出现,通过降低输入特征的分辨率来获取天气图像的空间不变性特征,达到二次特征提取的效果。长久以来,卷积神经网络的研究与实践表明,深层的卷积神经网络可以获取高层次的抽象特征。最后,全连接层通过层间神经元的全连接对卷积层及池化层提取的全部局部特征进行整合。因此,卷积神经网络可以满足天气图像特征提取的需求。
卷积神经网络在图像分类领域广泛应用的同时,也存在有一定的不足。卷积神经网络的核心操作是卷积,通过特定维度的卷积核获取图像局部的感知信息。在文献[18]中提到,两层3× 3 卷积层堆叠后(无池化)的感受野大小是5× 5。低层的网络层感受野很小,随着网络堆叠,感受野逐步增大。要想获得更大的感受野,就需要更大尺寸的卷积核和更深的网络层,与之俱来的是更加复杂的网络结构、更多的网络参数和运算。目前经典的卷积神经网络如AlexNet[18]、VGG[19]等输入图像尺寸为227× 227,而室外监控图像的尺寸一般高于这个尺寸,因而在图像输入之前就要放弃一部分图像信息,再加上局部感受野的卷积操作,会对图像的全局判断造成影响。比如阴天云量的不同会导致部分区域亮度很高,表现出晴天特征;而晴天的阴影部分亮度较低,有阴天特征。如果仅着眼于局部信息,很容易造成误判。人工设计的特征大多为全局的统计特征,并且受图像尺寸影响较小,可以为卷积神经网络提取的天气特征进行一定程度的补充,增加特征的多样性表达。本文中用到的AlexNet 卷积神经网络结构及参数将在下一部分给出。图6 展示了天气图像在卷积神经网络中各卷积层及池化层的部分变化过程,所有特征图的尺寸与AlexNet对应各层的维度保持一致。
图6 天气图像在卷积神经网络中的特征图像变化Fig.6 Feature map changes of weather image in convolutional neural network
正如引言中所谈到,已经有很多工作分别将传统方法和深度学习方法用于天气图像分类;而将两种方法结合用于天气图像分类的工作还不是很多,特征融合的方法也并不固定。如何进行特征融合,需要考虑的问题有特征融合的位置以及特征融合的方法。在文献[20]中对于深度学习的特征融合算法有较为详细的介绍,主要针对神经网络卷积层输出的2 个特征图进行空间上的特征融合。融合方法有加性融合、最大融合、级联融合等。其中,加性融合就是特征图对应位置元素的值相加,而融合后的特征图的通道数不变。该方法适用于维度相同的两个特征图融合。最大融合类似于加性融合,将2 个特征图对应位置元素值较大的作为融合特征的值,同样适用于维度相同的两个特征图。级联融合则是将两个特征图直接相连接,元素全部保留,与之相应的融合后特征图通道数也是两个特征图之和。级联融合方法适用于任何维度的两个特征图。特征图的选择可以是原始数据或神经网络的中间层进行融合。本文采用传统算法提取到的传统特征为一维的行特征向量,而在卷积神经网络中,除全连接层外,其余中间层均为二维或多维特征向量。因此,特征融合的位置确定为卷积神经网络的全连接层。此时传统特征和深层特征均为一维特征向量,但二者维度并不相同。考虑到传统特征与深层特征仅提取方法不同而功能相同,作为分类器的输入来讲并没有优劣之分,故采用级联的融合方法更为合适,可以完全保留两种方法提取出来的不同特征。具体的特征维度以及特征图级联结果将在下一部分介绍。
本文在前人研究的基础上,结合自身实验情况,选定的天气图像类别为5 类,分别是阴天、雾天、雨天、雪天和晴天。所采用图像数据集分为两个部分,命名为Dataset Ⅰ和DatasetⅡ。DatasetⅠ为多背景室外监控图像,图像来源为公开数据集AMOS(Archive of Many Outdoor Scenes)[21]。数据集中的图像由分布在世界各地的固定摄像头长时间拍摄得到,包含超过10 000个场景,部分图像有地理位置信息,但没有天气信息的标注。从AMOS 数据集中选择了20 个左右场景,图中天气现象的标注由多人协助完成,每人单独对图中天气现象作标注,最终取得票数最高的标签作为图片代表的天气。由于AMOS数据集中的图像大小不一,为了便于后续处理,将DatasetⅠ中的图像统一尺寸到1280 × 720。DatasetⅡ为自行拍摄的单背景天气图像,采用的摄像机为普通佳能相机,相机位置固定保证背景不变,长期拍摄保证获取足够多的天气图像,拍摄时间集中在上午9 点至下午4 点间,获取一幅图像的时间间隔约为5 min,图像分辨率为1280 × 720。数据集图像构成如表1所示。
表1 本文所用数据集的构成Tab. 1 Composition of datasets used in this paper
选取了两个数据集中的部分图像进行展示,涵盖了几种常见的天气状况,如图7~8所示。
在传统特征的提取过程中,首先将图片长宽4 等分,这样原始图片被均匀分为16 张子图,然后对最上层子图提取天空特征Lab 直方图,得到1× 192 维天空特征向量;对所有子图提取对比度、饱和度和暗通道特征,得到1× 784 维局部特征向量;再加上整张图的1× 49维全局特征向量,经过串联融合后构成维度为1× 1025 的传统特征向量。提取深层特征时,本文对比了几个经典的卷积神经网络LeNet-5、AlexNet、VGG-16、GoogLeNet[22]等的网络结构与参数,考虑到AlexNet的输入图 像 维 度227× 227,相 对 于LeNet-5 的 输 入 维 度32 × 32,AlexNet 可以更多地保留图片中的天气信息;此外,AlexNet 的网络层数及参数远少于VGG-16,且网络结构较GoogLeNet 简单,因此,本文初步选择AlexNet 作为天气图像的深层特征提取框架,所用的AlexNet 各层网络参数如表2 所示。深层天气特征的提取则选择天气图像经过全部卷积层和池化层后的特征向量,即为最后一个池化层的输出。
同时,为了实现特征融合的目的,本文对原有的AlexNet结构进行适度的改造,在输入层之后并联传统天气提取网络,用于提取4 种传统天气图像特征;在最后一个池化层之后构建特征融合层,将深层特征与归一化后的传统特征进行串联,得到的特征融合层维度为10 241× 1;最后,原AlexNet最后一层的1 000分类的输出被改为5分类,经过softmax分类器用于5种天气状况的判别。总体的网络模型如图9所示。
图7 DatasetⅠ部分图像展示Fig.7 Some images in DatasetⅠ
图8 DatasetⅡ部分图像展示Fig.8 Some images in DatasetⅡ
图9 基于特征融合改进的天气识别网络Fig. 9 Weather recognition network improved by feature fusion
表2 AlexNet各层参数Tab. 2 Parameters of each layer of AlexNet
本文实验在Intel Xeon CPU E5 @3.5 GHz、8 GB 内存、64位Windows 10 操作系统、Python 3.5 和OpenCV2 平台下进行。为了验证本文提出的融合模型对天气图像的分类效果,使用DatasetⅠ和DatasetⅡ分别对模型进行训练和验证。其中,DatasetⅠ的训练集和测试集比例为8∶2,融合模型中的卷积神经网络部分训练次数设置为1 000,batchsize 大小为100,学习率设为0.001,衰减率为0.1,使用Adam 优化算法进行优化。DatasetⅠ的测试结果如表3 所示。DatasetⅡ全部作为训练集,测试集由同一时间收集的其余图像构成,同时测试集数量及测试结果将在表4中给出。
为了验证实验模型及特征融合方法的有效性,在同样的测 试 集 和 训 练 集 上,将 本 文 方 法 与SVM[3]、AlexNet[10]和AlexNet+SVM[13]进行对比。实验时为达到最好的分类效果,需要对各个模型参数进行设置。其中,SVM 使用Python 环境下sklearn 库集成的SVM 算法,核函数选择线性核函数,输入为人工设计提取的维度为1× 1025 的天气特征向量。AlexNet 的所有参数与本文提出的融合模型中神经网络部分的参数保持一致,输入为数据集中的图像。同时,AlexNet 提取出来的特征还要作为AlexNet+SVM 模型中SVM 的输入特征向量,这里SVM 的参数与之前保持一致。为了衡量各个模型的性能,本文选择每一类天气的分类精准率(Precision,P)和召回率(Recall,R)以及整体的平均精准率(Average Precision,AP)、平均召回率(Average Recall,AR)和准确率(accuracy)指标进行评价。各个模型的实验结果如表5~6 所示。其中,精准率、召回率和准确率的计算方法如下所示:
其中:TP(True Positive)表示图像标定为正样本,分类结果也为正样本;FN(False Negative)表示图像标定为正样本,分类结果为负样本;FP(False Positive)表示图像标定为负样本,分类结果为正样本;TN(True Negative)表示标定为负样本,分类结果也为负样本。
表3 DatasetⅠ实验准确率Tab. 3 Accuracy on DatasetⅠ
表4 DatasetⅡ实验准确率Tab. 4 Accuracy on DatasetⅡ
从表5~6中可看出:在多背景数据集DatasetⅠ上,本文的特征融合方法在AP 和accuracy 两项指标上均优于其他模型;而在AR 指标上略低于AlexNet+SVM 模型,原因是本文融合模型在雾天类上的分类效果较其他模型差。此外,AlexNet+SVM模型准确率比本文模型稍低,而优于另外两个模型,也有不错的表现,说明特征提取+分类器的不同组合会对分类效果有一定的影响。SVM方法因为人工设计特征的局限性分类效果较差。在单背景数据集DatasetⅡ上,本文特征融合方法在所有指标上远优于其他模型,而AlexNet 在accuracy 和AR 上表现较AlexNet+SVM 更为优秀一些,AP 指标则略有不如,SVM在所有的评价指标上表现均为最差。
同时,从表5~6中还可看出:本文融合模型在阴天、雨天、雪天和晴天上的分类效果是所有模型中最好的,但在雾天上的分类效果比其他三个模型都差;同时可以注意到SVM 在晴天上的分类效果也十分的优秀,因此本文认为人工设计特征对于融合模型分类效果产生了影响,但是这种影响并不一定完全有利,就像融合后可以极大提升晴天分类效果,却对雾天分类效果造成了差的影响。此外,在单背景数据集上,除了晴天和阴天以外,所有模型在雾天、雨天和雪天上的表现极为接近且识别率均接近100%,原因是与多背景图片相比,单背景的天气图像变化较少,受背景影响小,不同类之间的天气现象差异更为明显,因此不需要复杂的分类模型便可以达到较好的分类效果,比如SVM 的表现就已经非常优秀。但是,在去除背景影响后,在单背景数据集上,不同的模型在晴天和阴天上的分类结果有不同的倾向性,SVM 在晴天上的分类表现优于另外3 个模型,但在阴天上表现较差,结合精准率来看,SVM 更倾向于把晴天图像归类为阴天;AlexNet在晴天上表现优于SVM,但阴天上不如SVM,同样结合精准率来看,AlexNet更倾向于把阴天图像归类为晴天。这里给出各模型的部分预测结果以便直观展示模型性能。
本文选取了图10 对测试集中的雨天图片和阴天图片的对比,以及阴天和晴天的对比进行展示,表7 展示了各个模型对于该雨天和阴天图像的预测结果。可以看到人眼观测下阴雨天气的图片有很多相似的特征,表现为乌云、整体亮度等,而在地面上有细节差异,本文融合模型在特征表达上较其他模型更为多样,可以正确区分这两种相近的天气;类似地,晴天和阴天图片在天空、建筑阴影上较为相似,而在整体亮度上差异较大,传统特征和深层特征的融合可以更好地兼顾整体和细节,预测的准确率就更高。
综合以上结果来看,本文的融合模型在分类效果上同时受人工设计特征和AlexNet的影响,在各个天气状况下都有不错的分类精度,在阴天和晴天的分类上并没有明显的倾向性,但是由于AlexNet提取的阴天特征的影响,导致在阴天类的分类结果较SVM弱一些。AlexNet+SVM 受卷积神经网络特征提取的影响,在阴天分类上表现更差,而在晴天分类上效果更优,说明AlexNet+SVM 模型也是同时受特征提取方法和分类方法的影响,对于AlexNet 未能准确提取到的阴天特征,SVM也难以有好的分类结果,甚至更差。
表5 各个模型在DatasetⅠ的精准率和召回率结果对比Tab. 5 Precision and recall results of each model on DatasetⅠ
表6 各个模型在DatasetⅡ的精准率和召回率结果对比Tab. 6 Precision and recall results of each model on DatasetⅡ
图10 用于预测的雨天和阴天图片及对比Fig.10 Rainy and cloudy images and comparison images for prediction
表7 四个模型预测结果对比Tab. 7 Prediction result comparison of four models
本文在研究图像分类的基础上,对现有的天气图像分类方法进行了总结和改进,结合传统的人工设计特征方法和深度学习方法,将传统天气特征和深层天气特征进行融合,得到了较好的分类效果。同时,从实验结果中可以得出以下结论:首先,从图像中识别天气会受到背景的影响,背景越复杂,分类难度越大,复杂模型的表现越好,而在单一背景天气图像下,简单的分类方法也可以有更优的表现;其次,本文的融合模型同时受到人工设计特征和卷积神经网络两个方面的影响,既有可能结合两者的优点,在相近天气状况下表现出更好的分类效果,也有可能结合二者的缺点,使得分类结果变得更差,需要进行更多的训练和尝试以使得融合的优点更为突出;最后,融合模型较其他模型分类效果有一定的提升,如果有更为优秀的人工设计特征方法和特征融合方法,融合模型的性能应该可以进一步提升。因此,在下一步工作中,我们将继续尝试不同的人工设计特征及其组合,同时尝试更多的特征融合方法,并不断改进网络架构使其更适合进行天气特征融合及天气图像分类。