基于集成学习的取景图像自动分类方法*
2018-06-14杨彬蔚张怡芳
杨彬蔚 张怡芳
(1.浙江机电职业技术学院信息技术系,浙江杭州 310053;2.浙江机电职业技术学院国际交流系,浙江杭州 310053)
1 引言
智能手机的广泛应用,使得数码照片的拍摄群体大大增加。然而,要真正拍摄出一张好的照片,除了一般的取景构图技术,也需要根据场景合理使用一些参数,例如白平衡,快门值,曝光补偿等的设置。但对于大多数未曾学过摄影技术,却想要拍出漂亮照片的普通人群而言,并不懂得如何去合理设置参数。因此,如何根据取景框中的图像,进行高品质相机参数自动调整对于大多数普通摄影爱好者而言尤有意义。
相机参数的选择主要取决于场景,例如:拍摄水滴,烟花等需要设置快门值;拍摄夜景需要增加曝光补偿;拍摄晚霞需要调节白平衡等。所以,如何根据取景框中的图像进行合理的场景识别是相机参数合理选择的关键问题。
场景识别是一个分类问题,即如何将取景图像自动分类到特定场景中。当前,图像分类技术在计算机视觉与机器学习领域中广受关注,关于图像分类的方法也是层出不穷。这些方法的主要思想集中在图像特征的提取,以及分类模型的构建这两个问题的解决。由于图像类型的多样化,特征体现多样化,而不同的分类模型也具有一定的局限性,因此现在还没有完全智能化的图像分类方法能针对所有图像,主要研究的还是针对特定的图像研究合适的分类方法。如在文献[1]中提到应用神经网络对水果图像进行分类。文献[2]中提到的支持向量机的分类方法则适用于医学图像。文献[3]中则是针对指纹图像的分类提出了一种基于倾斜决策树的随机森林方法。而本文研究重点则针对摄影中的自然图像进行分类,关于自然图像的分类,当前研究文献也很多,如在文献[4][5]中,通过研究图像特征的提取,在支持向量机算法中应用这些特征,实现了对部分场景图的分类。在文献[6]中,选择PCA-SIFT特征向量,用于贝叶斯决策,实现自然图像分类。在文献[7]中则是将图像进行Haar变化后,提取特征并应用于卷积神经网络这种深度学习模型中,从而实现了自然场景图像分类。
图1 初创第一个弱分类器
本文则提出一种基于boosting学习[8]的分类方法,boosting算法是一种集成学习的算法,其核心思想是将一组弱分类器集成为一个强分类器。早先的boosting算法并不实用,但后来出现了大量实用的基于boosting思想的算法,譬如AdaBoost[10][11],GradientBoost[12],FCBoost[13]等,这些算法被广泛应用于人脸识别,目标检测与识别等领域。其中AdaBoost是根据Boosting算法思想设计出的一种具有代表性的实用算法。这是一种自适应的Boosting算法,其核心思想分为以下几步:首先,初始化训练样本的权重。然后,应用弱分类器对训练样本进行判断,调高错误判断的样本权重,调低正确判断的样本权重。再次,应用新的弱分类器对权重更新过训练样本重新进行判断,重复上一步的操作,对权重进行调整,不断迭代进行,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。最后,将各个弱分类器组合成强分类器。在强分类器中,分类误差率小的弱分类器的权重被加大,分类误差率大的弱分类器的权重被降低。
本文提出的相机取景图场景自动分类方法主要基于AdaBoost算法思路,算法受文献[4][5][6][7]的影响,将图像的局部或者全局视觉特征纳入到聚类算法中。同时,算法受文献[14]的影响,考虑将高斯函数运用到分类器的构建中。算法核心思想分为两步,即训练与判断。训练阶段主要通过对已知类别图像的训练获取相应的强分类器。训练阶段分三步,首先,提取训练图像的局部或者全局特征值。然后,应用Gaussian函数构建弱分类器。最后,基于AdaBoost算法基本思想,通过迭代计算,修改弱分类器的系数,从而构建强分类器。在判断阶段,则通过构建的强分类器对目标图像进行类别判断。
本文组织结构如下,第二节主要介绍训练阶段的过程。第三节介绍判断的过程。第四节给出实验结果。最后是结论。
图2 创建强分类器
2 训练
本节主要说明算法的训练阶段。算法的训练阶段主要分三个阶段:首先是获取训练图的特征向量;第二个阶段是创建某类图的初始弱分类器;第三个阶段是通过训练不断调整训练数据的权重以及各个弱分类器的权重系数,直至获得最终的强分类器。其中初始弱分类器的创建流程和AdaBoost算法调整弱分类器权重,创建强分类器的过程分别如图1和图2所示。
图1图2中,图像类别索引用c表示, c = 1 ,...,C,C表示已知类别的数量,在本文实验中, C = 5。n和m分别表示在初创弱分类器时从已知类别训练图中抽取的特征向量数及之后创建其它弱分类器时从所有训练图中抽取特征向量的数量。
由上图可以看出,要进行训练,首先需要对训练图进行特征向量的提取。在文献[4][5][6][7]中,均提出针对场景图,需要进行多特征的融合。在文献[15][16]中提出采用图像的颜色,纹理等特征融合成特征向量。在文献[16]中,通过构建差分尺度空间,寻找满足条件的关键点。然后以关键点为中心,采样了一个小方块,并通过计算该方块的颜色,纹理,方向等信息构建了25维特征向量,其中前三维表示颜色,中间四维表示纹理,之后18维表示方向。将这些特征向量构建成了特征码库,应用LDA模型来进行场景的识别。本文中关键点和特征向量的提取采用文献[16]所用方法,但为了后期计算的便利性,将特征向量中所有数据均归一化为0-1之间的浮点数。本文中用x表示特征向量,其中 xk表示特征向量的第k个分量, k = 1 ,...,K,K表示特征向量的维度,这里等于25。
2.1 特征向量提取
AdaBoost作为Boosting算法的一种实际应用,主要针对二分类,因此,在建立分类器时,将所有训练图像记为I,其数量记为M。将混有多种类别的训练图I中的特定类分出来,作为创建该类别强分类器的训练图,将这个特定类别训练图类,记作 Ic,其数量为N。应用文献[16]中所提的方法对 Ic中所有图进行特征向量的提取。Ic中所有的特征向量放在一个特征向量集中,用u表示,Lc表示特征向量u的数量,= 1 ,...,N 表示 Ic类图中第i幅训练图中所有的特征向量,表示 Ic类图中第i幅训练图中第r个特征向量。I中所有的特征向量集用v表示,L表示特征向量v的数量, vj, j=1,...,M表示训练图I中第j幅训练图中所有的特征向量,则表示训练图I中第j幅训练图中第r个特征向量。L表示训练集I中所有的特征向量数。
根据AdaBoost算法,给每一个特征向量和都分配一个初始权重ω,权重表示 Ic图中所有特征向量的权重,表示I图中所有特征向量的权重。t表示迭代次数,初始时, t = 0,所有权重值如下:
2.2 初始弱分类器创建
初始弱分类器创建步骤如下:
(1)在 Ic中随机选择一幅图 Ic,t,t表示第t次迭代,因为是初创,这里的 t = 1,并随机选择该图中某个关键点,计算其特征向量,这里用表示。
(2)根据欧几里德距离的计算结果,从 Ic中其它每一幅图中各选择一个与最接近的特征向量,并将这些特征向量保存在矩阵中。如式(2)所示,在这个矩阵中,每一行表示 Ic图中第i幅图中与1)中选择的特征向量最接近的一个特征向量,则表示这个特征向量的第k维数据, k = 1 , . ..,K,K=25。
(3)对矩阵 A ryc中的第k列数据用一个高斯函数去拟合,高斯函数如式(3)所示:
由于现在矩阵中每一列的数据均来自同一类别图像特征值的同一分量,换言之,将这些数据作为高斯函数的变量x来计算,其函数值 Gt,k应该大于0.5,表示分类正确。在这个前提下,该高斯函数μt,k和σt,k的计算如下:
首先,计算特征矩阵 A ryc中每个特征分量之间的最大距离,即矩阵 A ryc中每一列的最大值与最小值之差。即dt,k=max(ut,k)- m in(ut,k),这里k表示第k个分量,即矩阵中的第k列。m a x(ut,k)和 m in(ut,k)分别表示这一列的最大值和最小值。用以下方式计算这一列数据的均值和方差。
(4)对矩阵中每一列数据进行这样的计算后,得到一组共k个高斯函数,并按式(6)所示定义函数来计算这k个高斯函数对一个特征向量x计算的结果
2.3 应用AdaBoost创建强分类器
AdaBoost[17]的基本思想是通过对训练集一次次的迭代产生新的弱分类器,然后在不断的迭代运算中对训练数据的权重以及弱分类器的权重系数不断进行调整,直至错误率收敛。经过2.2主要步骤,产生了第一个弱分类器,接下来,则需要通过迭代产生其他的分类器,并合理训练数据权重和弱分类器权重系数。
(1)用第一个弱分类器 g1c对训练集的所有特征向量进行最初的分类判断,根据判断结果计算其错误率,错误率计算如式(8)所示,这里 xl表示训练图像集中某个特征向量。
图3 训练图
3 判断
通过第二节中的步骤,最终创建出若干针对特定类别的强分类器 )(xHc,在进行具体目标图 gIm 的类型判断时,首先通过2.1中所述,获取目标图的所有特征向量,并将这些特征向量保存在矩阵A中,最终对该图的类型判断用式(15)实现。
上式中,c表示图像的类别索引,C表示图像判断的类别总数,Ai表示测试图 Im g 的第i个特征向量, n um ( A)表示测试图 Im g 中特征向量的数量。
4 实验分析
表1 测试结果
为了测试本文所述算法对图像分类的准确性,实验选用了五种类型的场景图像,分别是公车、雪山、夜景、烟花、花卉,如图3所示。这些图像来自Corel图像库和部分自拍照片,测试时选择的图像大小在256*384或384*256左右。
实验用Matlab完成,在实验的训练阶段,选择每一类图像中的30幅作为训练图,对这150幅图像根据选择的关键点计算特征向量,然后应用本文2节中所述算法分别对这五类图像进行多次迭代训练后获取各自的强分类器。在实验的判断阶段,在每一类图像中各选择60幅进行测试,应用公式(15)对测试图进行类别的判断,判断结果见表1。
从实验结果看,烟花和花卉的正确率比较高,分析原因,烟花由于其纹理的独特性,高频信息多,在特征向量中,表示纹理和方向的分量数据分布与其他类数据区别明显,因此在分类中正确率较高。花卉是比较典型的小景深图,背景虚化,且前景纹理相对也比较均衡,在特征向量中表示纹理的分量上分布具有独特性。且花瓣的边缘也比较具有典型性,在特征向量中表示方向的分量上分布独特。另外,雪山由于其色彩主要分布在蓝,白两色,且低频信息比较多,所以判断的正确率也比较高。可以看出,本文对一些纹理比较有代表性的,或者色彩比较有代表性的图像类型分类较为理想。
5 结语
本文提出了一种基于AdaBoost的集成学习算法,方法主要通过构建图像的征向量集,并引入高斯函数构建弱分类器,然后应用AdaBoost的思想,通过计算错误率不断迭代,创建新的分类器并不断调整训练数据的错误率权重以及弱分类器的权重系数,最后构建每一类图像的强分类器。尽管在训练阶段需要大量的运行时间,但当强分类器构建完毕,在对目标图进行判断时,判断速度较快,且对诸如雪山,烟花,花卉等纹理比较典型,或者色彩比较典型的图像分类效果良好。
[1]Yudong Zhang,Shuihua Wang,Genlin Ji et al.Fruit classification using computer vision and feedforward neural network[J].Elsevier,journal of food Engineering,2014,143:167-177.
[2]Ahmad Taher Azar,Shaimaa Ahmed EI-Said.Performance analysis of support vector machines classifiers in breast cancer mammography recognition[J].Neural Computing&Applications,2014,24(5):1163-1177.
[3]Thanh-Nghi Do,Philippe Lenca,Stephane Lallich.Classifying many-class high–dimensional fingerprint datasets uing random forest of oblique decision trees[J].Vietnam Journal of Computer Science,2015,2(1):3-12.
[4]周云蕾,郭洁畅,朱蓉,等.基于多特征和支持向量机的风景图像分类[J].计算机系统应用,2016,25(5):135-141.
[5]范敏,韩琪,王芬,等,基于多层次特征表示的场景图像分类算法,吉林大学学报(工学版),2017,47(6),1909-1917.
[6]涂秋洁,晅王.基于PCA-SIFT特征与贝叶斯决策的图像分类算法[J].计算机应用与软件,2016,33(6):215-219.
[7]张慧娜,李裕梅,傅莺莺.基于Haar-CNN模型的自然场景图像分类的研究.[J]四川师范大学学报(自然科学版),2017,40(1):119-126.
[8]张文生,于廷照.Boosting算法理论与应用研究[J].中国科学技术大学学报,2016,46(3):222-230.
[9]Charles Dubout,Francois Fleuret.Adaptive sampling for large scale boosting[J]The Journal of Machine Learning Research,2014,15(1):1431-1453.
[10]Rui Li,Changfeng Li.Adaboost Face Detection Based on Improved Covariance Feature[J].Journal of Computers,2014,9(5):1077-1082.
[11]张公伯,谷昱良,朱和贵.基于AdaBoost的动物二分类识别方法[J],计算机与数字工程,2017,45(4):720-726.
[12]Radhamadhab Dalai,Kishore Kumar Senapati.Object detection from Background Scene Using t-SNE-ORB Gradient Boost[J].International Journal of Computer Science and Information Technologies,2017,8(5):561-568.
[13]Mohammad Saberian,Nuno Vasconcelos.Boosting algorithms for detector cascade learning[J].The Journal of Machine Learning Research,2014,15(1):2569-2605.
[14]Xi Zhou,Na Cui,Zhen Li,et al.Hierarchical Gaussianization for Image Classification[J].IEEE International Conference on Computer Vision,2015,30(2):1971-1977.
[15]曾志,吴财贵,唐权华等.基于多特征融合和深度学习的商品图像分类[J].计算机工程与设计,2017,37(18):3093-3098.
[16]杨彬蔚,张怡芳.基于图像视觉特征与LDA模型的取景图像识别[J].计算机与现代化,2011(5):61-65.
[17]Y Freund,RE Schapire.A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting[J].Journal of Computer&System Sciences,1997,55(1):119-139.