蓝章礼,匡 恒,李 战,黄 涛,曹 娟
(重庆交通大学 信息科学工程学院,重庆 400074)
在计算机视觉领域中,图像复原是一个重要的研究方向,图像在形成、传播和保存的过程中,受成像系统、外界环境等各种因素的影响会造成不同程度失真的退化图像.湍流图像作为众多退化图像中的一种,其退化过程是在图像形成过程中受到大气或水流等不规则运动造成的图像模糊,湍流退化图像的复原曾一度困扰着人们,文献[1]从湍流的分形特征去详细描述了湍流的机理.后来又有学者通过分形特征[2]在相位屏[3]以及自然场景中模拟出湍流现象.湍流现象的模拟对湍流退化图想的复原起到指导性的作用,依据湍流图像形成过程以及一定的先验知识,文献[4]提出了一种基于奇异值分解估计点扩散函数的湍流图像复原算法.文献[5,6]提出一种基于小波变换进行湍流图像的复原方法.上述方法都结合了先验知识,这些复原方法具有一定试探性,效果并不是很理想.随着机器学习的发展,湍流图像的复原变得更加高效准确,文献[7]提出了一种基于支持向量机的湍流退化图想加速复原方法.通过上述传统机器学习的方法,湍流退化图想的复原取得了不错的效果,但是传统机器学习分类算法容易陷入局部最优,并不尽能满足要求.人工智能的发展,深度学习的崛起为湍流退化图像的复原拓宽了道路,本文提出了一种采用卷积神经网络(CNN)对湍流模型点扩展函数中的模糊比例因子进行分类的研究方法,该方法对湍流图像的分类取得了较为理想的效果,为新机器学习方法对湍流图像的复原作了铺垫.
光电成像系统出现退化的过程是复杂多变的,通常情况下将退化过程简化为一个线性移不变过程,在空域中退化过程可以表示为:
其中,g(x,y)为输出函数,f(x,y)为 输入函数,h(x,y)为点扩展函数,n(x,y)为加性噪声.在加性噪声不存在的情况下,退化过程模型化的频域表达式为:
其中,G(u,v)为 频域下的输出函数,F(u,v)为频域下的输入函数,H(u,v)为频域下的点扩展函数.退化过程原理图如图1所示.
图1 光电图像退化原理图
在退化图像复原过程中除了周期噪声以外,通常都可以采用空间域滤波的方法进行图像复原,而此时的图像复原与图像增强几乎是没有区别的,但是湍流退化图像是一种线性移不变退化图像,该类图像复原不能采用简单的空间域滤波器来实现,必须知道湍流退化模型的点扩展函数h(x,y).
本文提出的基于CNN 的大气湍流退化图像分类方法,湍流模型采用的是一直被沿用至今的经典大气湍流物理退化模型,模型中点扩展函数用光学传递函数(OTF)表示:
其中,k为一个反映大气湍流的严重程度的模糊比例因子.(u,v)分别代表了(x,y)方向的频域坐标.将OTF 中心化后表达式为:
其中,M、N分别为图像的长和宽.
由于人工智能领域并没有提供现有的大气湍流图像数据集,本文的图像数据来自网上,经过MATLAB编写大气湍流退化函数实验仿真模拟而来.图像的的预处理部分主要包括灰度化和归一化等简单操作.从左到右分别为一张100×100 大小的高空航拍灰度化后的灰度图像,以及对应模糊比例因子分别在0.0001、0.01、0.1 以及0.5 下的归一化大气湍流退化图像,如图2所示.
可以明显看出不同模糊比例因子对应的大气湍流退化图像差别较大,为验证CNN 对湍流特征分类的有效性,数据集应该选取多种场景下的高空航拍图在不同湍流强度下的退化图像.
实验中通过一张航拍图像调节模糊比例因子K值获取2000 张灰度图像数据,将所有的大气湍流图像数据划分为四类,对应的K值分别在0 到0.0001 之间、0.001 到0.01 之间、0.05 到0.1 之间以及大于0.5 的范围.四类标签在CNN 中对应的张量形式应该为[0,0,0,1]、[0,0,1,0]、[0,1,0,0]和[0,1,0,0]这样的一维数组,生成的标签数据和mat 图像数据相对应,每784 个图像数据对应一张图片也对应着一个标签数组,对全部数据按顺序标定完成后以4:1 的比例随机进行训练集和测试集的划分,最后进行打乱操作完成全部的数据预处理.
1962 年文献[8]通过研究猫的视觉皮层神经细胞,发现视觉皮层的神经细胞对输入空间中的小区域比较敏感,这些小的敏感区域覆盖了整个视觉区域,从而提出了感受野的概念.这些敏感区域局部地存在于输入空间中,非常适合用来提取图像中的局部空间相关性.1998年文献[9]提出了基于误差梯度反向传播的卷积神经网络LeNet-5,并成功应用于手写体数字识别等领域.传统人工设计的特征结合浅层的卷积神经网络就能取得较好的分类效果,但由于缺乏良好的泛化性能成为了其发展的障碍.直至2014年,文献[10]提出了通过增加网络层数,利用增加的非线性得出目标函数的近似结构以及更好的特征表达,构建了深度卷积神经网络AlexNet 并在ImageNet 上取得了显著的成绩,之后更复杂,准确率更高的深度卷积神经网络也相继被提出.
图2 一张航拍灰度图不同湍流程度下的退化图
下面通过一张图在卷积神经网络里与卷积核作用后的结果来解释卷积变化原理.如图3所示.
图3 一张特征图经过6 个卷积核后的变化示意图
一张32×32×3 的特征图与一个5×5×3 的卷积核卷积后加上偏置,经过激活函数产生一个运算结果,卷积核在特征图所有区域以步长为1 来进行滑动卷积,得到一个28×28×1 的特征图,同理经过一个有6 个5×5×3 的卷积核的卷积层后产生了一个28×28×6 的特征图.同理,每一个卷积核都在这张特征图上的所有区域进行滑动卷积,产生了6 个28×28×1 的特征图.特征图通过卷积层后进入池化层,降采样后的特征图会进入下一个卷积层继续进行卷积操作,直至最后通过全连接层将学到的分布式特征表示映射到标记样本空间进行分类.
本文实验平台有两个:MATLAB2016a 和Tensorflow框架.通过MATLAB 对航拍图进行湍流退化仿真得到样本数据,在tensorflow 框架下搭建CNN 模型对样本进行分类训练测试.
实验针对一张航拍图像的2000 张不同湍流退化强度对应的灰度图进行四分类设计了两层卷积层、一个全连接层、一个Dropout 层和一个Softmax 层的卷积神经网络.Conv k 代表第k层卷积层,(5,5,1,32)代表了该层有32 个5x5x1 的卷积核.FC 代表了全连接层,(7×7×64,1024)代表了输入张量的尺寸为7×7×64,全连接层隐含节点数为1024 个.为减轻过拟合引入了一个Dropout 层,通过keep_prob 比率随机丢弃一部分节点的数据.最后通过Softmax 层连接Dropout 层的输出的到最后的概率输出.所设计的CNN 网络结构如表1所示.
表1 所设计的CNN 网络结构
由于训练图像有 1600 张,且采用分批训练的方式,每批32 张训练图像,所以完成所有训练图像的一次训练需要实际迭代训练 1600/32=50 次.其中第 1 次训练(epoch1/8)对应实际的50 次训练,第 2 次训练(epoch2/8)对应实际的50×2=100 次训练,依次类推,第8 次训练(epoch8/8)对应实际的 50×8=400 次训练.用训练图像训练CNN 湍流退化图像分类模型,并通过不同迭代次数(generation)下训练准确率、损失值(loss)和测试准确率(test accuracy)来进行分类效果验证.所设计的CNN 对湍流退化图像数据的分类效果如表2所示.
表2 所设计网络的分类性能
所设计的CNN 训练时的迭代次数与训练损失值之间的关系趋势如图4所示.
图4 损失值与训练迭代次数的关系趋势
所设计的CNN 训练时的迭代次数与测试准确率之间的关系趋势如图5所示.
图5 测试准确率与训练迭代次数的关系趋势
通过训练 1600 张训练图像所得到的模型对400 张测试图像进行分类测试所得到的测试准确率与训练迭代次数的关系是由图5中的黑色虚线表示的.从测试图中选取六幅图来进行预测分类的结果(Pred)与实际所属类(Actual),如图6所示.
图6 6 幅随机退化图对应的实际类与预测类
根据以上实验结果可以看出CNN 湍流退化图像分类框架训练过程中的损失值随着迭代次数的增加呈逐渐减小的趋势,当训练迭代到两百次后,损失值基本稳定在20 左右.训练准确率与测试准确率随着迭代次数的增加总体呈上升趋势,当迭代到三百五十次时训练模型得到最佳分类效果,针对训练图像的训练准确率达到82.21%,针对测试图像的测试准确率达到79.47%.测试图中第一类与第二类湍流强度较为接近且都较小时,预测结果会出现偏差.实验证明搭建的CNN 模型对该场景不同湍流强度的退化图像分类的有效性.
更换八种不同场景的图像做相同预处理操作后以同样的网络参数进行训练测试,八种不同场景下的湍流退化图像在上述卷积神经网络模型下进行训练测试,所得的训练测试准确率如表3所示.
表3 不同场景退化图像训练测试准确率
由以上实验可以看出使用不同场景的图片进行湍流退化处理后,所设计的CNN 网络对该类图片分类准确率在80%左右与前面的准确率几乎完全相同.实验证明该CNN 网络模型学习到的是湍流退化图像的模糊特征而不是图像场景本身的特征,验证了CNN 网络对湍流退化图像湍流强度的分类的有效性.
考虑到在此基础上提高准确率,对网络结构参数进行调整.文献[11]提出了一种结合卷积神经网络和深度置信网络的卷积深度置信网络方法提升单一卷积神经网络分类的不足.文献[12]提出了一种基于图像DCT 变换后的卷积神经网络分类方法有效提高了分类准确率.文献[13]提出了一种结合度量学习包括Siamese和Triplet 两种的卷积神经网络(CNN)结构用于提升服装图像分类准确率取得了不错效果;文献[14]结合CNN 对图像高阶统计特性的忽略的缺点提出了一种结合CNN 与DBN 的深度卷积置信网络,该网络在场景图像分类中准确率有明显提高.文献[15]提出了一种融合卷积神经网络与受限波尔兹曼机混合模型的图像分类方法提高了图像分类准确率.文献[16]通过扩充样本数据并去除CNN 冗余连接有效降低了分类错误率.文献[17]通过结合CNN 与图像的DCT 变换进行图像分类比原始图像分类效果有显著提升.本文旨在通过修改激活函数以及调整学习率来提升模型分类性能.文献[18]通过改进激活函数Relu 调整参数a值使得卷积神经网络对脑脊液细胞图像分类速度以及准确率有较大提升.文献[19]通过CNN 预训练网络特征结合SVM 算法进行鱼类分类准确率有明显提升.激活函数选取Relu 函数替代Sigmoid 函数,Sigmoid 作为激活函数时,反向传播求误差梯度时求导涉及除法,计算量相对大.而采用Relu 激活函数,可以使整个过程的计算量节省很多,Relu 会使一部分神经元的输出为0,减少计算量的同时也造成了网络的稀疏性,并且减少了参数的相互依存关系.但是在初始化参数非常糟糕或者学习率设置较高的情况下,输出为0 的神经元中可能会有一部分永远不会被激活,相应的参数就永远无法更新,导致最后训练结果不尽人意,这里保持迭代次数不变,将学习率降低,从原来的1e-3 调整到1e-4 进行训练.调整参数后准确率与训练迭代次数的关系趋势如图7所示.
由上述实验结果可以看到,改进激活函数与降低学习率后,准确率能保持在82%左右,该实验说明了改进网络参数能在一定程度上提升损失函数的收敛速度与CNN 的分类准确率.
图7 调整参数后准确率与训练迭代次数的关系
本文提出了一种基于CNN 的湍流图像退化强度的分类方法,通过航拍图湍流退化仿真得到数据集,在搭建的卷积神经网络中进行仿真实验.网络结构中损失值随着训练的迭代很好的收敛,训练测试也得到较高的准确率.对于不同退化程度图像,通过人工提取有效特征十分困难,本文提出的通过卷积神经网络提取图像特征进行分类,实验结果证实了CNN 提取湍流特征的有效性以及分类的准确性,通过对激活函数与学习率参数的调整一定程度上提升分类准确率.该实验结果为基于机器学习的湍流退化图像复原做了铺垫.在后续研究中将进一步研究深度置信网络对湍流退化图像的分类.