随着人工智能技术的快速发展,计算机视觉和模式识别作为研究热点,受到了国内外研究人员的广泛关注.图像分析(image analysis)是计算机视觉和模式识别中较为重要的一个分支,旨在研究图像的内容,通过采用计算机技术从图像中提取有用的信息来完成具体的任务,如图像分类、图像检索、目标检测、目标识别等[1-2].与图像分析密切相关的是图像处理(image processing).图像处理技术常用来处理图像以获得更为理想的图像,包括图像缩放、图像降噪、图像增强和图像压缩等[1-2].
图像往往涉及高维数据,且因拍摄角度、环境及光线等差别变化较大,导致图像分析尤为困难.比如一个100×100的图像就有10 000个像素点.对于计算机而言,灰度图像每个像素点由一个8位值即0~255的值代表灰度值,RGB彩色图像每个像素点包含3个0~255的值分别代表每种颜色分量.基于此,对图像所包含的信息进行分析、提取、描述时往往需要相关领域知识以及人为介入.
图像特征是一种重要的描述图像的手段,目前已有许多方法可以从图像中提取重要的特征如纹理特征、边缘特征、形状特征等.这些方法包括灰度共生矩阵(grey-level co-occurrence matrix,GLCM);局部二值模式(local binary patterns,LBP);Sobel算子;Canny算子;方向梯度直方图(histogram of orientation gradient, HOG)及尺度不变特征变换(scale-invariant feature transform, SIFT)等[3].这些传统方法在图像分析上取得了较大的成功,但针对未知问题,选择合适的描述特征方法进行图像分析仍具有很大的挑战性[4].
近年来,进化计算(evolutionary computation,EC)算法已成为研究热点并应用于大规模优化[5]、调度[6]、图像分析[7]等领域.EC算法通过模拟自然界生物进化机制完成搜索问题的最优解决方案.与传统方法相比,基于种群的EC算法能并行搜索多个解,融合已知领域知识与设计人员智慧,利用计算机技术自动搜索解决方案,不需要该问题领域知识和人为介入.基于这些优点,EC算法在图像分析如图像分割上获得较大成功[8].所有EC算法中, GP (genetic programming) 算法, 常被称为遗传规划、遗传编程或遗传程序设计,是一种较为广泛应用于图像分析的算法[7].
GP算法作为一种EC算法,能够运用计算机技术自动生成“程序”(模型)解决实际问题.与其他EC算法相比,常见的基于树状结构的GP算法个体编码结构更为灵活,能同时执行多项任务,且生成的模型具有很好的解释能力.近几年,GP算法已成功应用于图像分析,包括特征提取、图像分类、图像分割、边缘检测等.
目前针对GP算法在图像分析上的综述较少.2007年Krawiec等[9]讨论了自GP算法提出以来其在目标识别及图像分析上的应用.但近些年,GP算法进一步应用于特征提取、图像分类、图像分割等领域.文献[7]中回顾了GP算法在图像分析领域如特征提取、图像分类、边缘检测等的应用.文献[8]回顾了部分GP算法在图像分割领域的应用.然而现有综述仍缺乏对近些年GP算法在图像分析上的应用全面而系统的讨论.基于此,有必要对GP算法在图像分析上的应用进行一个较为全面的综述,给对此领域感兴趣的研究人员尤其是硕博研究生提供更为全面的参考.
GP 算法[10]是一种基于种群的进化计算算法.该算法模拟自然界生物进化过程并根据达尔文“物竞天择,适者生存”原则自动生成可以解决实际问题的计算机程序.初始时,GP算法随机生成一个初始种群,种群中的每个个体有一个适应度值.在进化过程中,选择操作如锦标赛选择(tournament selection)常被用来选择适应度值较好的个体进行复制、交叉或变异操作产生新的种群.新生成的每个个体又重新被适应度函数评估获得适应度值, 如此迭代下去,直至满足终止条件,输出最优的计算机程序(结果).
与其他EC算法如粒子群算法(particle swarm optimisation,PSO)等采用矢量编码方式不同, GP算法的个体编码方式为计算机程序.该计算机程序可以用树状结构表示,叶节点由终止符(terminals)构成,中间节点由函数或者操作符(functions)构成.图1给出了一个简单的GP树.其数可用数学公式表达为:(F1+F2)*((F3+0.55)*F4).其中F1、F2、F3、F4和0.55是叶节点(终止符),通常为输入的特征(变量)或随机生成的常量;“*”和“+”是中间节点,“*”是根节点,通常为函数或操作符.这些函数或操作符既可是通用的基本操作符,也可依据具体问题来设定.
图1 一个简单的GP树
Fig.1 An example of GP tree
设计一个新的GP算法或应用GP算法解决具体问题时,需要考虑以下5个基本因素[11].
(1) 定义终止符集合(terminal set).该集合通常由变量及常量构成.变量由具体问题确定,常量通常在算法初始时随机生成.
(2) 定义函数集合(function set).该集合可以由不同的函数构成.这些函数包括算术运算函数如“+、-、*”,受保护的%,逻辑函数如IF,三角函数如sin、cos等.对复杂或特定的问题,许多领域相关的操作算子也可设计为函数.
(3) 设计适应度函数(fitness function).适应度函数在进化过程中用来评估个体的优劣,并引导算法的搜索过程.它往往根据实际问题需要来定义,比如对于分类问题,其适应度函数可为分类准确率或错误率.
(4) 选择运行参数(parameter settings).GP算法运行参数包括最大代数、种群大小、交叉率、变异率、选择方法、每次选择的个体个数及GP树的最大和最小深度等.
(5) 确定终止条件(terminations).终止条件决定算法何时停止运行和输出结果,如达到最大代数或搜索到最优解等.
自提出以来,GP算法获得了广泛关注,除经典的树状结构GP算法(tree-based GP,默认为GP) 之外,许多新型算法被提出,包括线性GP算法(linear GP, LGP)[12];笛卡尔GP算法(cartesian GP, CGP)[13];强类型GP算法(strongly typed GP,STGP)[14];基于语法的GP算法(grammatically-based GP或grammar guided GP, GGGP)[15-16];几何语义GP算法(geometric semantic GP, GSGP)[17]等.实现GP算法可以借助基于不同编程语言的GP算法包或库,包括基于JAVA的ECJ[18]、基于Python的DEAP[19]、基于MATLAB的GPLAB[20]、基于C++的RMIT-GP[21]及基于TensorFlow的KarooGP[22] 等.
目前,有关GP算法研究成果及进展的代表性国际学术会议包括:European Conference on Genetic Programming(EuroGP)、The Genetic and Evolutionary Computation Conference (GECCO)、IEEE Congress on Evolutionary Computation (CEC)、Genetic Programming Theory & Practice、International Conference on Simulated Evolution and Learning(SEAL)、International Conference on Parallel Problem Solving from Nature (PPSN)等.代表性杂志包括:IEEE Transactions on Evolutionary Computation、Evolutionary Computation (MIT Press)、Genetic Programming and Evolvable Machines、Soft Computing等.此外,GP算法最新理论与应用研究、国际上的研究人员及团队排名等内容也可通过网站http://www.cs.bham.ac.uk/~wbl/biblio进行查询.
近年来,GP算法已成功应用于各个领域以解决回归、预测、分类、调度、图像分析及模式识别等问题.Poli等在文献[11]中详细介绍了GP算法的基本概念与原理、各种变型、应用领域及待解决的问题等.Chen等[23]研究了高维数据的符号回归问题,提出在解决符号回归时采用特征选择来提高GP算法的泛化能力.Haeri等[24]设计了一个统计GP算法解决符号回归问题.该方法采用统计信息生成子树帮助种群初始化,并提出了基于相关性的交叉、变异操作和基于差异的GP树编辑策略.
Bhowan等[25]研究了GP算法在非平衡类数据上的应用,设计了一个集成多目标GP方法生成分类器,可以在较大类和较小类上获得更好的性能.Bhowan等[26]提出了一个两步GP方法解决非平衡类数据分类,用多目标GP算法生成一组Pareto前沿近似解,并基于这些解用GP算法构建分类器.Nag和Pal[27]设计了一个集成多目标GP算法分类器,可以同时进行特征选择和分类.该方法将多分类问题转化为生成多个二分类器,通过分配权重将这些分类器集成.Espejo等[28]对GP算法在分类问题上的应用进行了详细的综述,包括特征提取、特征构建、模型选择、集成模型学习等.
Nguyen等[29-31]对GP算法生成调度规则解决生产调度问题进行了较为系统的研究.文献[30]中设计了一个多目标协同进化GP算法,可以同时解决多个调度决策问题.文献[31]对GP算法在生产调度上的应用进行了较为系统的讨论和综述,介绍了如何将GP算法应用于生产调度问题及其关键技术,并对比了其他人工智能和运筹学方法,指出了难点问题和挑战.
Lensen等[32]将GP算法应用于自动生成冗余特征构建标准特征选择数据集.Tran等[33]研究了GP算法在不完全数据分类上的应用, 提出了一个基于GP算法的插补方法来填补缺失的值,将不完全数据转化为完全数据进行分类.文献[34]设计了一个能够处理区间值的GP方法来构建多个特征,可以直接对不完全数据进行分类.
图像特征提取是图像分析中较为重要的一步, 许多基于图像分析的任务如图像分类等都依赖于所提取的特征.除特征提取外,特征选择和特征构建也是增强描述图像数据和降低特征维度的重要手段.近几年,GP算法已广泛应用于特征提取上.笔者对GP算法在特征提取上的代表性研究工作进行讨论, 并对GP算法在图像分类、边缘检测、图像分割上的代表性研究工作分别进行综述.
图像特征提取是指从图像数据中提取有用的信息来替代图像完成特定的任务并实现降维.对于图像分类的各种算法而言,丰富且高效的特征能够增加算法的可靠性和准确性.基于GP算法的特征提取方法能够自动生成高效的图像描述算子.
Shao 等[35]提出一个多目标GP算法用来实现图像特征学习,并用支持向量机(support vector machine,SVM)进行图像分类.所提算法框架由输入层、滤波层、最大池化层和级联层构成.其中,滤波层采用一系列图像操作算子如高斯滤波等;最大池化层采用了4种不同的最大池化操作算子.该算法主要思想与卷积神经网络(convolutional neural networks, CNNs)类似,通过滤波和池化来学习重要特征.但是GP算法能自动选择合适的滤波操作算子及池化算子,并生成合适的操作顺序.该方法对分类准确率和模型复杂度两个目标进行了研究.与传统的图像描述算子如HOG、SIFT、LBP及CNN相比,该方法在3个分类数据集上取得了更好的性能,缺点是该方法所提取的特征维度较大.Liu等[36]将文献[35]的方法扩展到时空特征学习解决视频中的动作分类, 在滤波层设计一序列滤波操作如高斯滤波等作为GP函数处理3D视频.该方法的性能在几个动作分类的数据集上得到了验证,且生成的视频时空特征描述算子具有很好的解释能力.
Price和Anderson[37]将GP算法应用于自动生成图像描述算子,采用了Harris角点检测、中值滤波、直方图均衡等作为GP函数进行特征提取,缺点是该方法的性能仅在一个图像数据集上进行了验证.
Lam[38]研究了3种不同特征即像素、直方图和像素位置作为输入的GP算法,并进行纹理特征提取,采用k近邻算法(k-nearest neighbours with k=1,1NN)来进行分类.实验结果表明,所提方法能够提取较好的特征以提高分类准确率.
Al-Sahaf等[39]将GP算法应用于自动生成纹理特征描述算子,并用1NN来进行纹理图像分类.该方法通过扫描图像,获取扫描区域的均值、最大值、平均值和最小值作为输入.该图像描述算子提取的特征具有旋转不变性,其基本原理与LBP类似,但采用了GP算法自动进行特征提取和优化.在几个纹理图像分类数据集上,所提方法能获得比LBP及其变型更好的分类准确率.Al-Sahaf等[40]对文献[39]中方法进行了改进,提出了一个能够提取动态长度的纹理特征方法.与原方法相比,该方法更为灵活,能够更高效地提取纹理特征进行分类.
Iqbal等[41]基于文献[40]的方法将迁移学习引入GP算法中,提高其在特征学习和纹理分类上的性能及训练效率.基于种群的GP算法在进化过程中能生成很多小模块,这些模块携带了特定图像领域信息,很容易通过迁移学习应用于其他相关领域或任务中.文献[41]将提取的模块用在GP算法种群初始化和变异操作中,该方法在不同分类数据集上获得了较好性能,是首次将迁移学习引入GP算法中来以提高其在图像分析上的学习效率和性能.
GP算法也能自动地从图像中选择较为重要的区域帮助传统方法提取特征.Al-Sahaf等[42]研究了两种不同的GP算法从图像中自动选择重要区域,并从选择的区域中提取直方图特征,采用1NN进行纹理图像分类.该方法通过区域选择,可以有效地降低所提取特征的维度和计算复杂度.
图像分类是根据图像的内容将图像归类入若干类别中的一个.根据输入的不同,GP算法在图像分类上的应用可大致分为两类:基于所提特征的GP分类方法和基于像素的GP分类方法.
基于所提特征的GP分类方法是以预先所提取的特征作为算法输入,将GP算法用于构建分类器解决分类问题.构建分类器时,GP算法可以自动地从输入的特征中选择更为重要的特征.基于像素的GP分类方法是以图像像素作为输入,生成分类器或者提取特征进行分类.此类方法又可细分为两种:第一种采用GP算法构建分类器,并同时进行特征提取、特征构建等;第二种用GP算法进行特征提取,用常见的分类方法如SVM进行分类.其中部分代表性工作已在2.1小节进行了讨论,因此本小节将重点对基于所提特征的GP分类方法和基于像素的GP分类方法的第一种类型进行综述.
2.2.1 基于所提特征的GP分类方法
Nandi 等[43]将GP算法应用于解决乳房医学图像分类.该方法首先人为选择一些感兴趣的区域,然后从区域中提取4个边缘特征、4个形状特征和14个GLCM特征.并采用传统特征选择方法来选择重要的特征,基于选择特征,用GP算法生成分类器.实验结果表明,该方法能获得较高准确率.
Zhang 等[44]设计了一个基于GP算法的多类别图像目标分类方法.该方法从固定区域提取均值和方差特征,然后采用GP算法生成分类器.为处理多类别分类问题,该方法采用了类别区域边界来确定所输入图像区域的类别,并采用梯度下降的邻域搜索方法为生成的GP模型搜索最优的常数参数.
Zhang等[45]针对GP算法在多类别图像目标分类上的应用, 设计了两种基于高斯分布的适应度函数.GP算法与这两种的适应度函数在3种数据集包括人脸识别数据上获得了较好的准确率.
Ul-Ain等[46]将GP算法应用于解决皮肤癌图像分类.该方法采用了71个纹理特征和领域相关特征作为输入,利用GP算法自动选择较为重要的特征构建分类器.与其他分类方法如1NN、朴素贝叶斯和决策树等相比,所提方法获得了较好的结果,然而该方法性能有待在更多数据集上进行验证.
Ryan等[47]设计了一个基于GP算法的第一阶段癌症检测系统.该系统包括一系列的操作:背景抑制、图像分割、特征检测、特征选择和图像分类.该系统的算法原理是从每个分割的区域中提取两个GLCM特征作为GP算法输入生成分类器.实验结果表明,所提方法在该图像分类中取得了高达100%的准确率.
Almeida和Torres[48]设计了一个基于PCA和GP算法(PCA+GP)的分类系统来解决多类别目标分类.该方法首先采用3种特征提取方法从图像中提取了颜色、纹理和形状特征,接着采用PCA对特征进行降维,最后采用GP算法构建分类器.与PCA+SVM和PCA+C4.5方法相比,PCA+GP获得了较有竞争力的结果,且生成的分类器具有较好的解释力.
文献[43-48]中的方法均是先从图像中提取特定的特征,然后采用GP算法进行图像分类, 所采用的GP算法只需要简单的函数,计算较快.但是这些方法需要人为介入,即预先进行特征提取和特征选择等,其算法性能也较依赖于所提取的特征.
2.2.2 基于像素的GP分类方法
基于像素的GP分类方法直接以图像像素作为输入,自动进行特征提取、特征构建等.Atkins等[49]提出了一个三层结构的GP方法用来解决二分类图像分类.该结构包括图像滤波层、聚合层和分类层.其中,图像滤波层采用了常见的滤波器如均值、最大值滤波等作为GP函数对输入图像进行处理;图像聚合层从处理的图像中选择合适的区域,并从所选区域中提取均值、最大值等特征;分类层则是从所提特征中构建一个新的特征用来实现分类.该方法在人脸图像分类及行人分类中获得了较好的结果,是首次在GP算法中引入CNNs与深度学习思想,直接从像素中学习特征并进行分类.基于此,更多方法被提出来,并逐渐形成了基于GP算法的进化深度学习(evolutionary deep learning)研究分支.
基于上述三层结构的GP方法,Al-Sahaf等[50]提出了一个二层结构的GP方法用来解决图像分类问题,即仅包括聚合层和分类层.该算法的过程是从输入的图像中选择合适的区域,提取像素统计值特征,构建特征并实现分类.4个分类数据集上的结果表明,与三层结构的GP方法相比,二层结构的GP方法效果更好且速度更快.
Lensen等[51]提出了一个GP方法+HOG方法用来实现区域检测、特征提取、特征构建和图像分类.该方法基于上述二层结构的GP方法,将HOG算子设计为函数提取特征,并设计了直方图和距离函数用来构建特征.与二层结构的GP方法相比,该方法能获得更好的分类结果.Bi 等[52]设计了一个四层结构的GP方法用以实现区域检测、特征提取、特征构建和图像分类.该方法在特征提取层采用常见的图像操作算子如高斯滤波器、Sobel 算子等来增强特征提取.实验结果表明,该方法能获得比其他GP和非GP方法更好的结果.
Agapitos等[53]设计了一个四层结构的GP方法用来对手写数字进行分类.该结构自下向上依次为:滤波器组层、变换层、平均池化层和分类层.该方法研究了两种不同的训练模式,最终分类层采用Quasi-Newton优化方法来训练正则化的多项回归分类器.与几种标准GP方法相比,该方法在手写数字分类上获得了较好性能.与文献[53]类似,Suganuma等[54]设计了一个四层结构的GP方法, 并在分类层采用SVM进行图像分类.然而,这两种方法都需要先对具体结构进行设计,没有用到GP算法结构灵活的优势;且这两种方法都与CNNs的结构框架相似,但并没有与CNNs进行对比.
边缘检测是一项用来检测图像中像素亮度不连续变化的技术,能够发现图像中目标的边界,帮助边缘特征提取和图像分割.基于GP算法的边缘检测技术是通过对图像像素或特征进行分析,构建边缘检测算子将像素分为边缘和非边缘点.相较于其他EC算法如遗传算法(genetic algorithms, GAs)等,近些年来GP算法在边缘检测上的应用较少,本小节将对代表性的研究工作进行综述.
Golonek等[55]将GP算法应用于自动生成边缘检测算子.该算法基于输入图像,采用4 × 4的移动窗口,生成64-bit的数字转化函数进行边缘检测,并与Sobel方法进行了对比.Kadar等[56]提出了一个基于GP算法的边界检测方法.该方法以单个图像作为输入,在函数集合中采用了纹理梯度及其他算术运算函数来生成边界检测算子.实验结果表明,该算法比其他几种传统方法的性能更好.
Ross等[57]提出了一个GP方法来检测岩石图像中的边缘.该方法首先采用9种不同的滤波器对采集的岩石图像进行处理,然后将得到的图像作为GP算法输入生成边缘检测算子.与人工神经网络相比,基于GP算法的边缘检测算子效果更好.
Fu等[58]设计了一个GP方法自动从区域中挑选像素点,并基于选择的像素点构建边缘检测算子.在标准数据集上的实验结果表明,所提方法能够获得较好的性能.对采用该方法构建边缘检测算子中的像素点的分析表明,所提方法能够选取丰富的像素点构建线性或二阶滤波器进行边缘检测.
在文献[59]中,Fu等提出了一个基于分布的GP方法来构建特征实现边缘检测.该方法从图像中提取高斯滤波梯度、归一化标准差和直方图梯度特征, 然后采用GP构建特征,并基于构建的特征估计边缘和非边缘像素点的分布,用于对未知像素点进行分类.实验结果表明,该方法能够构建具有旋转不变性的特征并获得较好的边缘检测性能.
Fu等[60]提出了一个基于高斯滤波器的GP方法来生成边缘检测算子.该方法在终止符集合中采用了基于高斯函数的滤波器如高斯梯度, 在操作符中采用了基本的算术运算函数及特定函数.实验结果表明,所提方法在边缘检测上的性能比高斯梯度算子和边缘抑制算法更好,但该方法需要相对长的训练时间才能获得较好的边缘检测算子.
图像分割是指将图像分割成小区域用以简化图像的表达和提取有用信息.在EC算法中,GAs在图像分割上的应用较为广泛[8],常见的基于GAs和PSO的图像分割方法多为基于阀值的方法、基于区域的方法和基于聚类的方法等[8].与这些方法不同,GP算法在图像分割上的应用更趋向于直接生成图像分割算子进行图像分割.这些生成的图像分割算子实际上是对图像中的每个像素点进行分类.
Song和Ciesielski[61]将GP算法应用于生成分类器来处理纹理图像分割.所提方法以移动窗口里的像素为输入,生成分类器对每个像素分类,得到最终图像分割结果.实验结果表明,所提方法能够发现纹理图像像素之间的关系,并获得较好的分割结果.该方法不仅可以用来解决二分类的图像分割问题,而且可以用来解决多分类的图像分割问题.
Liang等[62]提出了基于图像特征的GP方法处理图像分割,并研究了7种不同的图像特征作为GP输入,包括直方图特征、LBP特征、GLCM特征等.结果表明,以Gabor特征作为输入的方法性能较好.文献[63]提出了两种基于Gabor特征的多目标GP算法实现图像分割.所提算法包含了解的准确率和解的复杂性两个目标,分别基于两种已有的多目标算法即NSGA-Ⅱ和SPEA2来对非支配解排序,寻找Pareto前沿.结果表明,多目标方法能够获得较小的模型及较好的分割性能.
Liang等[64]引入特征选择用来提高GP算法在图像分割上的性能.基于Gabor特征、LBP特征、像素统计量、边缘特征和颜色特征等,设计了一个单目标GP算法和两个多目标GP算法用来实现特征选择.实验结果表明,多目标算法能够选择更好的子特征集并获得更优的性能.文献[62, 64]中的方法都是预先提取不同特征,采用特征操作如特征选择、特征构建来获取高质量的特征来提升图像分割的性能.然而,这些方法的性能较依赖于所提取特征,且这些方法只在很小的数据集上进行验证.
Perlin和Lopes[65]提出了一个基于像素的GP方法用来实现图像分割.该算法采用一系列不同大小的滤波器如中值、标准差等和算术运算函数来生成图像掩码.为降低计算成本,该方法采用整合了解的质量和解的复杂度评估的适应度函数.实验结果表明,在适应度函数中加入对解复杂度的惩罚能提升GP模型解释能力.
除特征提取、图像分类、边缘检测、图像分割外,GP算法也应用于目标识别、视频检测等领域.Barlow和Song[66]设计了一个GP方法来识别场景图像中的字母.在3种不同难度的数据集(包括合成图像、现实图像以及模糊图像)上的实验结果表明,所提方法在简单的数据集上能够获得较好的准确率.Bai等[67]将GP算法应用于自动生成滤波器进行图像处理.Bianco等[68]将已有的视频变化检测算法设计为GP函数,采用GP算法来自动选择和组合这些函数,从而获得更好的算子来解决视频变化检测.Wang和Tan[69]设计了一个GP方法生成数学形态操作序列用来解决二维图像分析和增强问题.Torres等[70]提出了一个GP方法解决基于内容的图像检索问题.所提方法能够自动生成相似性函数,并从数据库中找出与输入图像相似的图像.
近几年GP算法在特征提取、图像分类、图像分割、边缘检测等问题上取得了较大成功.图像分析也已成为GP算法的一个重要应用领域.GP算法具有非常灵活的结构框架,较易与现有的图像处理和分析操作算子相融合,从而获得更好的算法性能.与传统图像分析和特征提取方法相比,GP算法能自动搜索最优解,不需人为介入;与其他EC算法相比,GP算法不仅可以整合不同函数,充分利用已知领域知识,还具有很好的解释能力.目前GP算法在图像分析上具有较好的研究前景,但由于图像变化的多样性及复杂性,性能更好的GP算法有待进一步开发.本小节通过归纳已有研究工作,将未来GP算法在图像分析上的研究问题及热点归纳如下.
(1)目前已有部分研究工作基于CNNs中的卷积和池化思想来设计GP算法, 实现图像特征学习和图像分类[35-36, 49, 52-54].鉴于深度CNNs在计算机视觉领域取得的巨大成功,可以预见,将此思想引入GP算法中必将进一步挖掘GP算法在图像分析上的潜力.但是,目前该问题并没有得到较为系统而全面的研究, 特别是如何设计GP算法结构框架;如何选择合适的操作算子如滤波或者池化等作为GP函数;如何训练滤波器或相关参数等问题,都有待进一步深入研究.此外,目前相关方法仅应用于图像特征提取和分类上,对于其他问题如边缘检测、图像分割上的应用有待进一步研究.未来研究工作可围绕这些问题,开发研究具有深度结构的GP算法及其在图像分析上的应用潜力,并形成基于GP算法的深度学习理论框架与平台.
(2)目前的大部分研究工作都是将GP算法应用于尺寸较小的图像分析问题上[35, 40-43, 49-51, 53].针对较大的图像如医学图像、遥感图像上的分析,还尚未有较好的基于GP的方法提出.随着技术的发展,清晰度较高、分辨率较高的图像越来越容易获得,此类图像的分析也是研究热点及研究难点.现有方法在进行此类图像分析时往往采取对图像进行预处理的办法,如图像分割、图像压缩等来缩小图像大小[35, 40-43, 47, 58],然而这些方法可能导致图像丧失部分信息,从而影响最终结果.基于此,适用于尺寸较大的图像分析的高效GP算法有待进一步开发和研究.未来研究内容可围绕此难点问题,进一步探索GP算法在大图像分析上的应用潜力,重点研究内容包括区域检测、特征提取、特征构建等.
(3)计算复杂和膨胀是运行GP算法时较为显著的两个问题.原因之一是所生成的模型较为复杂,导致算法评估时间较长;而膨胀则是指在进化过程中GP模型复杂度增加但其性能并没有提高.由于图像数据的多样性和复杂性,将GP算法应用于图像分析无法避免这两个问题.目前已有研究工作提出将解的复杂度整合到单目标GP算法适应度函数中或作为另外一个目标来设计多目标GP算法控制生成的GP模型复杂度[35, 64, 66].随着更多的图像操作算子被设计为GP函数,在此情况下,如何评估模型复杂度有待进一步深入研究.此外,其他技术如邻域搜索等有待被开发整合为生成的GP模型搜索最优的常数参数用来控制模型复杂度.未来研究工作可围绕这两个问题,在保证GP算法性能的前提下提出有效的方法降低计算复杂度和模型复杂度.
(4)GP算法在图像分析上的应用多为监督学习,即从已有的带标签或有ground truth的数据集中训练获得较好的模型解决未知问题.GP算法往往在训练数据集上获得较好性能,在测试数据集上结果不理想,即出现过拟合(overfitting).解决过拟合问题、提高GP算法泛化(generalisation)能力是一个重要研究问题.目前已有研究工作提出多种策略增强GP算法的泛化能力,如在解决符号回归时加入特征选择[23]、基于VC-dimension理论评估GP算法泛化误差和实验误差之间的差距[71]等,然而这些方法均集中于符号回归上的应用.所以,图像分析问题较为困难,涉及函数更多,算法框架更为复杂,如何提高GP算法在图像分析上的泛化能力需进一步深入研究.此外,GP算法也应用于小样本图像训练数据集上[4, 39, 40, 42]及非平衡类数据集上,如医学图像[46-47]、边缘检测[58-60]等.在这些情况下,如何提高GP算法的泛化能力将更具有挑战性.未来研究工作可围绕GP算法在图像分析问题包括小样本训练数据集和非平衡类数据集上的应用,重点研究解决过拟合问题和提高GP算法泛化能力的策略,进一步提升GP算法性能及拓展GP算法应用领域.
(5)迁移学习(transfer learning)作为机器学习的一个重要分支,是近几年的研究热点.基于种群的GP算法在进化过程中能生成很多小模块,这些小模块携带了特定领域信息,较易被提取利用来增强GP算法在其他相关领域或任务上的学习效率和性能.但目前针对此问题的研究较少,已有研究工作也仅仅局限在特定的领域如纹理图像的特征提取和分类等[41],且所提出的迁移学习方法较为简单.为提高GP算法在图像分析问题上的性能,有待开发出更为有效的迁移学习方法.未来研究工作可围绕迁移什么、如何迁移、何时迁移等展开.
近些年来,GP算法较为广泛地应用于图像分析上,笔者对GP算法在图像分析领域包括图像特征提取、图像分类、边缘检测、图像分割、目标检测等的代表性研究工作进行了讨论和综述.已有的研究工作进一步表明,GP算法具有灵活的结构框架、并行计算、不需人为介入、较好的解释能力等优势.然而,GP算法在图像分析上仍然存在如计算复杂等问题.笔者通过总结归纳已有的研究工作,指出了未来GP算法在图像分析上的研究热点和问题,为专家学者和研究人员提供参考.
[1] SONKA M, HLAVAC V, BOYLE R. Image processing, analysis, and machine vision[M]. Pacific Grove, CA: PWS, 1999.
[2] CHAN T F, SHEN J H. Image processing and analysis: variational, PDE, wavelet, and stochastic methods[M]. Philadelphia,PA,USA: SIAM, 2005.
[3] HASSABALLAH M, ABDELMGEID A A, ALSHAZLY H A. Image features detection, description and matching[C]//Image Feature Detectors and Descriptors. Berlin: Springer, 2016: 11-45.
[4] AL-SAHAF H. Genetic programming for automatically synthesising robust image descriptors with a small number of instances[D]. New Zealand: School of Engineering and Compater Science, Victoria University of Wellington, 2017.
[5] 梁静,刘睿,瞿博阳,等. 进化算法在大规模优化问题中的应用综述[J]. 郑州大学学报(工学版), 2018, 39(3):15-21.
[6] 吴秀丽,张志强.求解柔性作业车间调度问题的细菌算法对比及改进[J].郑州大学学报(工学版), 2018, 39(3):34-39.
[7] XUE B, ZHANG M J. Evolutionary feature manipulation in data mining/big data[J]. ACM SIGEVOlution, 2017, 10(1): 4-11.
[8] LIANG Y, ZHANG M J, BROWNE W N. Image segmentation: A survey of methods based on evolutionary computation[C]//Proceedings of the 10th Iinternational Conference on Simulated Evolution and Learning. Berlin: Springer, 2014: 847-859.
[9] KRAWIEC K, HOWARD D, ZHANG M J. Overview of object detection and image analysis by means of genetic programming techniques[C]//Proceedings of the 2007 International Conference Frontiers in the Convergence of Bioscience and Information Technologies. Washington, DC, USA: IEEE, 2007: 779-784.
[10] KOZA J R. Genetic programming: on the programming of computers by means of natural selection[M]. Cambridge, MA: MIT Press, 1992.
[11] POLI R, LANGDON W B, MCPHEE N F. A field guide to genetic programming[M/OL]. [SL.]:Lulu, 2008:229. [2018-01-12]. http://lulu.com and freely available at http://www.gp-field-guide.org.uk, 2008.
[12] BRAMEIER M F, BANZHAF W. Linear genetic programming[M]. Berlin: Springer, 2007.
[13] MILLER J F, THOMOSON P. Cartesian genetic programming[C]//Proceedings of European Conference on Genetic Programming. Berlin: Springer, 2000: 121-132.
[14] MONTANA D J. Strongly typed genetic programming[J]. Evolutionary computation, 1995,3(2): 199-230.
[15] MCKAY R I, HOAI N X, WHIGHAM P A, et al. Grammar-based genetic programming: a survey[J]. Genetic programming and evolvable machines, 2010, 11(3/4):365-396.
[16] WHIGHAM P A. Grammatically-based genetic programming[C]// Proceedings of the Workshop on Genetic Programming: from Theory to Real-world Applications. Rochester:University of Rochester, 1995, 16(3): 33-41.
[17] MORAGLIO A, KRAWIEC K, JOHNSON C G. Geometric semantic genetic programming[C]// Proceedings of International Conference on Parallel Problem Solving from Nature. Berlin: Springer,2012:21-31.
[18] LUKE S, PANAIT L, BALAN G, et al. ECJ: A java-based evolutionary computation research system[EB/OL]. [2017-12-25].http://cs. gmu. edu/eclab/projects/ecj. 2007.
[19] FORTIN F A, RAINVILLE F M, GARDNER M A, et al. DEAP: evolutionary algorithms made easy[J]. Journal of machine learning research, 2012,13(1):2171-2175.
[20] SILVA S, ALMEIDA J. GPLAB-a genetic programming toolbox for MATLAB[C]//Proceedings of the Nordic MATLAB Conference. Nordic: MATLAB Inc, 2003:273-278.
[21] CIESIELKI V. The rmit-gp genetic programming system[EB/OL].[2018-05-11]. http://goanna.cs.rmit.edu.au/~vc/rmitgp.
[22] STAATS K, PANTRIDGE E, CAVAGLIA M, et al. Tensor flow enabled genetic programming[C]// Proceedings of the Genetic and Evolutionary Computation Conference Companion. New York, NY: ACM, 2017: 1872-1879.
[23] CHEN Q, ZHANG M J, XUE B. Feature selection to improve generalization of genetic programming for high-dimensional symbolic regression[J].IEEE transactions on evolutionary computation, 2017, 21(5): 792-806.
[24] HAERI M A, EBADZADEH M M, FOLINO G. Statistical genetic programming for symbolic regression[J]. Applied soft computing, 2017, 60: 447-469.
[25] BHOWAN U, JOHNSTON M, ZHANG M J, et al. Evolving diverse ensembles using genetic programming for classification with unbalanced data[J]. IEEE transactions on evolutionary computation, 2013, 17(3):368-386.
[26] BHOWAN U, JOHNSTON M, ZHANG M J, et al. Reusing genetic programming for ensemble selection in classification of unbalanced data[J]. IEEE transactions on evolutionary computation, 2014, 18(6): 893-908.
[27] NAG K, PAL N R. A multiobjective genetic programming-based ensemble for simultaneous feature selection and classification[J]. IEEE transactions on cybernetics, 2016, 46(2): 499-510.
[28] ESPEJO P G, VENTURA S, HERRERA F. A survey on the application of genetic programming to classification[J]. IEEE transactions on systems, man, and cybernetics, Part C (applications and reviews), 2010, 40(2): 121-144.
[29] NGUYEN S, ZHANG M J, JOHNSTON M, et al. A computational study of representations in genetic programming to evolve dispatching rules for the job shop scheduling problem[J]. IEEE transactions on evolutionary computation, 2013, 17(5): 621-639.
[30] NGUYEN S, ZHANG M J, JOHNSTON M, et al. Automatic design of scheduling policies for dynamic multi-objective job shop scheduling via cooperative coevolution genetic programming[J]. IEEE transactions on evolutionary computation, 2014, 18(2): 193-208.
[31] NGUYEN S, MEI Y, ZHANG M J. Genetic programming for production scheduling: a survey with a unified framework[J]. Complex & intelligent systems, 2017, 3(1): 41-66.
[32] LENSEN A, XUE B, ZHANG M J. Generating redundant features with unsupervised multi-tree genetic programming[C]//Proceedings of European Conference on Genetic Programming. Berlin: Springer, 2018: 84-100.
[33] TRAN C T, ZHANG M J, ANDREAE P, et al. An effective and efficient approach to classification with incomplete data[J]. Knowledge based systems, 2018, 154:1-16.
[34] TRAN CT, ZHANG M J, ANDREAE P, et al. Directly constructing multiple features for classification with missing data using genetic programming with interval functions[C]//Proceedings of the 2016 on Genetic and Evolutionary Computation Conference Companion. New York, NY: ACM, 2016: 69-70.
[35] SHAO L, LIU L, LI X. Feature learning for image classification via multiobjective genetic programming[J].IEEE transactions on neural networks and learning systems, 2014, 25(7): 1359-1371.
[36] LIU L, SHAO L, LI X, et al. Learning spatio-temporal representations for action recognition: A genetic programming approach[J]. IEEE transactions on cybernetics, 2016, 46(1): 158-170.
[37] PRICE S R, ANDERSON D T. Genetic programming for image feature descriptor learning[C]//Proceedings of the 2017 IEEE Congress on Evolutionary Computation. San Sebastian, Spain: IEEE, 2017: 854-860.
[38] LAM B. Discovery of texture features using genetic programming[M]. Melbourne, Victoria, Australia: School of Computer Science and Inform Technolog, RMIT University, 2012.
[39] AL-SAHAF H, AL-SAHAF A, XUE B, et al. Automatically evolving rotation-invariant texture image descriptors by genetic programming[J]. IEEE transactions on evolutionary computation, 2017, 21(1): 83-101.
[40] AL-SAHAF H, ZHANG M J, AL-SAHAF A, et al. Keypoints detection and feature extraction: a dynamic genetic programming approach for evolving rotation-invariant texture image descriptors[J].IEEE transactions on evolutionary computation, 2017, 21(6): 825-844.
[41] IQBAL M, XUE B, AL-SAHAF H, et al. Cross-domain reuse of extracted knowledge in genetic programming for image classification[J]. IEEE transactions on evolutionary computation, 2017, 21(4): 569-587.
[42] AL-SAHAF H, ZHANG M J, JOHNSTON M. Binary image classification: A genetic programming approach to the problem of limited training instances[J]. Evolutionary computation, 2016, 24(1): 143-182.
[43] NANDI R, NANDI A K, RANGAYYAN R M, et al. Classification of breast masses in mammograms using genetic programming and feature selection[J].Medical and biological engineering and computing, 2006, 44(8): 683-694.
[44] ZHANG M J, SMART W. Genetic programming with gradient descent search for multiclass object classification[C]//Proceedings of the 7th European Conference on Genetic Programming. Berlin: Springer, 2004: 399-408.
[45] ZHANG M J, SMART W. Using Gaussian distribution to construct fitness functions in genetic programming for multiclass object classification[J]. Pattern recognition letters, 2006, 27(11): 1266-1274.
[46] UL-AIN Q, XUE B, AL-SAHAF H, et al. Genetic programming for skin cancer detection in dermoscopic images[C]//Proceedings of the 2017 IEEE Congress on Evolutionary Computation. San Sebastin, Spain: IEEE, 2017: 2420-2427.
[47] RYAN C, FITZGERALD J, KRAWIEC K, et al. Image classification with genetic programming: Building a stage 1 computer aided detector for breast cancer[C] //Handbook of Genetic Programming Applications. Berlin: Springer, 2015: 245-287.
[48] ALMEIDA A E, TORRES R D S. Remote sensing image classification using genetic-programming-based time series similarity functions[J]. IEEE geoscience and remote sensing letters, 2017, 14(9): 1499-1503.
[49] ATKINS D, NESHATIAN K, ZHANG M J. A domain independent genetic programming approach to automatic feature extraction for image classification[C]// Proceedings of the 2011 IEEE Congress on Evolutionary Computation. New Orleans, LA: IEEE, 2011: 238-245.
[50] AL-SAHAF H, SONG A, NESHATIAN K, et al. Two-tier genetic programming: Towards raw pixel-based image classification[J]. Expert systems with applications, 2012, 39(16): 12291-12301.
[51] LENSEN A, AL-SAHAF H, ZHANG M J, et al. Genetic programming for region detection, feature extraction, feature construction and classification in image data[C]// Proceedings of the 19th European Conference on Genetic Programming. Berlin: Springer, 2016: 51-67.
[52] BI Y, XUE B, ZHANG M J. An automatic feature extraction approach to image classification using genetic programming[C]//Proceedings of the 21st European Conference on the Applications of Evolutionary Computation. Berlin: Springer, 2018: 421-438.
[53] AGAPITOS A, O’NEILL M J, NICOLAU M, et al. Deep evolution of image representations for handwritten digit recognition[C]//Proceedings of the 2015 IEEE Congress on Evolutionary Computation. Sendai, Japan: IEEE, 2015: 2452-2459.
[54] SUGANUMA M, TSUCHIYA D, SHIRAKAWA S, et al. Hierarchical feature construction for image classification using Genetic Programming[C]//Proceedings of the 2016 IEEE International Conference on Systems, Man, and Cybernetics. Budapest, Hungary: IEEE, 2016: 1423-1428.
[55] GOLONEK T, GRZECHCA D, RUTKOWSKI J. Application of genetic programming to edge detector design[J].IEEE international symposium on circuits and systems, 2006,20(2): 4683-4686.
[56] KADAR I, BEN-SHAHAR O, SIPPER M. Evolution of a local boundary detector for natural images via genetic programming and texture cues[C]//Proceedings of the 11th Annual Conference on Genetic and Evolutionary Computation. New York, NY: ACM, 2009: 1887-1888.
[57] ROSS B J, FUETEN F, YASHKIR D Y. Edge detection of petrographic images using genetic programming[C] //Proceedings of the 2nd Annual Conference on Genetic and Evolutionary Computation. San Francisco, CA, USA: Morgan Kaufmann Publishers Inc, 2000: 658-665.
[58] FU W, JOHNSTON M, ZHANG M J. Low-level feature extraction for edge detection using genetic programming[J]. IEEE transactions on cybernetics, 2014, 44(8): 1459-1472.
[59] FU W, JOHNSTON M, ZHANG M J. Distribution-based invariant feature construction using genetic programming for edge detection[J]. Soft computing, 2015, 19(8): 2371-2389.
[60] FU W, JOHNSTON M, ZHANG M J. Genetic programming for edge detection: a Gaussian-based approach[J]. Soft computing, 2016, 20(3): 1231-1248.
[61] SONG A, CIESIELSKI V. Texture segmentation by genetic programming[J]. Evolutionary computation, 2008, 16(4): 461-481.
[62] LIANG Y, ZHANG M J, BROWNE W N. Genetic programming for evolving figure-ground segmentors from multiple features[J]. Applied soft computing, 2017, 51: 83-95.
[63] LIANG Y, ZHANG M J, BROWNE W N. Figure-ground image segmentation using feature-based multi-objective genetic programming techniques[J]. Neural computing and applications, 2017(12): 1-20.
[64] LIANG Y, ZHANG M J, BROWNE W N. Image feature selection using genetic programming for figure-ground segmentation[J]. Engineering applications of artificial intelligence, 2017, 62: 96-108.
[65] PERLIN H A, LOPES H S. A Genetic programming approach for image segmentation[G]//Computational intelligence in image processing. Berlin: Springer, 2013: 71-90.
[66] BARLOW B, SONG A. Towards scene text recognition with genetic programming[C]//Proceedings of the 2013 IEEE Congress on Evolutionary Computation. Cancun, Mexico: IEEE, 2013: 1310-1317.
[67] BAI H, YATA N, NAGAO T. Efficient evolutionary image processing using genetic programming: Reducing computation time for generating feature images of the Automatically Construction of Tree-Structural Image Transformation (ACTIT)[C]//Proceedings of the 10th International Conference on Intelligent Systems Design and Applications. Cairo, Egypt: IEEE, 2010: 302-307.
[68] BIANCO S, CIOCCA G, SCHETTINI R. Combination of video change detection algorithms by genetic programming[J]. IEEE transactions on evolutionary computation, 2017, 21(6): 914-928.
[69] WANG J, TAN Y. A novel genetic programming based morphological image analysis algorithm[C]// Proceedings of the 12th Annual Conference on Genetic and Evolutionary Computation. New York, NY: ACM, 2010: 979-980.
[70] TORRES R D S, A X, GONCALVES M A, et al. A genetic programming framework for content-based image retrieval[J]. Pattern recognition, 2009, 42(2): 283-292.
[71] CHEN Q, XUE B, SHANG L, et al. Improving generalisation of genetic programming for symbolic regression with structural risk minimisation[C]// Proceedings of the 2016 Genetic and Evolutionary Computation Conference Companion. New York, NY: ACM, 2016: 709-716.