闫龙泉, 骆沛然, 史 伟, 刘秀全
(宁夏大学 信息工程学院,宁夏 银川 750021)
随着互联网的发展,网络世界中的图片也在与日俱增,尤其是随着web 2.0时代的到来,海量的、相似的图片长期存储在网络空间中,这也使得用户在大型图片库中寻找相似图片变得极其困难.基于内容的图像检索[1]可以充分发挥计算机的特性,从图片本身出发,提取图片的颜色、轮廓等特征以进行相似度的比对,从而实现图片检索,找到待搜索图片中最为相似的目标图片.
传统的基于内容的图像检索方法[2—4]主要是提取图片的颜色、纹理轮廓等特征,提取的特征往往比较复杂而又多变.由于唐卡图像种类繁多,视觉变化大,光照、拍摄角度等自然因素均会对唐卡图片的检索带来巨大的挑战.
近年来,基于内容的图像检索有了突破性的发展与创新.由于卷积神经网络(CNN)[5]可以自主学习和提取图片的高维特征,大量的研究者用深度学习的方法进行了图片的特征提取.
传统的提取图片的轮廓、颜色等特征的图像检索方法有SIFT[6]、颜色直方图[7]等.王维兰等人[8]在基于内容的唐卡检索技术研究中,提出了基于颜色特征进行唐卡图像检索的思想.其检索流程如下:首先,对唐卡图像进行预处理,进而便于提取其颜色和空间、形状特征;然后,用欧式距离度量方法对其进行相似性度量并得出最终的检索结果.GAL等人提出了形态学与RCF[9]相结合的唐卡图像边缘检测算法,提取唐卡图像的高维特征.接着使用PCA[10]进行特征降维.进而可以更高效地进行图像相似度计算.最后,对维度降低后的数组通过欧式距离进行相似度计算,而后得到最终的图像检索结果.随着深度学习[11]的飞速发展,卷积神经网络(CNN)在图像处理领域也被广泛应用.在唐卡图像检索领域也有大量的研究者将卷积神经网络应用到唐卡图像检索[12]中.
现如今大量学者将卷积神经网络应用到图像检索中,其检索效果也有了质的飞跃.然而卷积神经网络还存在着大量问题:
(ⅰ)随着深度学习网络层数的增加,网络的不断堆叠会出现梯度弥散的问题;
(ⅱ)网络越复杂的模型其梯度随着网络更新在不断累积,梯度变得越来越大,进而网络权重值也在大幅增加,网络也会变得不稳定,导致“梯度爆炸”;
(ⅲ)网络层数较浅的模型学习能力不足,特征提取效果欠佳.
残差神经网络中的残差模块,可以有效地解决随着网络加深出现的退化问题.本文通过借鉴残差神经网络可以有效地缓解训练过程中随着网络层数增加出现的梯度弥散问题.针对此类现象,本文提出了一种修改的ResNet50模型用来提高唐卡图像检索效果.
目前,绝大多数深度学习领域的研究者在提取唐卡图像的特征时会选用 AlexNet[13]和VGGNet[14]这2种卷积神经网络.但这2种网络模型的层数都比较少,面对种类繁多的唐卡图像时,其学习能力与特征提取能力有限.为此,学者们对这2种网络模型进行了持续的改进与创新,大致的方向都是通过增加深度卷积神经网络层数与神经单元,使网络变得饱满,学习与特征提取能力变强.之后出现的新的深度学习网络模型,如GoogleNet[15]和ResNet[16],都很好地证明了随着网络层数的增加,其网络模型进行图像识别检索的性能与效果会更理想.
残差神经网络(ResNet)是由微软研究院的何恺明等人提出的.该网络模型一经提出就在多项视觉识别领域的比赛中取得了优异成绩.残差神经网络发现了随着网络层数增加出现的“退化现象”,并且针该现象发明了 “快捷连接”,很大程度解决了深度过大、神经单元数量过多的神经网络训练困难的问题.神经网络的“深度”也是历史上第一次突破了100层,最大的卷积神经网络甚至可以超过1 000层.深度残差网络是由残差块组成的.每个残差块可以表示为
yi=h(xi)+F(xi,wi),xi+1=f(yi),
其中:f为激活函数;F为残差函数;xi和yi为第i层函数的输入和输出;wi为权值矩阵.F的表达式为F(xi,wi)=wiσ(B(w′i)σ(B(xi))),函数h为h(xi)=xi.
残差神经网络最突出的创新是梯度传播路径的分支.在inception模型中首次以并行路径的形式在卷积神经网络中引入这一思想.残差网络的思想与Highway Network在一定程度上是极其相似的,是对其增加了一些模块并进行了一定程度的修改.对Highway Network修正和改良的模块被称为恒等映射模块,为了有效地解决随着ResNet模型网络层数的增加出现的“梯度爆炸”与“梯度消失”问题,将残差块和shortcut进行了连接,也成功地解决了随着ResNet层数的增加而出现的“梯度消失”等问题.ResNet中每个卷积层的输入端与输出端都通过shortcut连接了起来.而不是将全部的残差单元堆叠到了一起,在这一点上与层数较低的卷积神经网络是一致的.所以残差网络最为突出的一点就是可以将其看作一系列网络路径的集合,而不是一个层次很深的网络架构,在残差网络[17]中有且仅有一条路径能贯穿全部的残差单元,而且其他网络路径的长度也各不相同.残差网络更能优化训练的原因是所有的信号路径都不能传播梯度.因此随着神经网络层数的增加,其准确率也不会出现大幅度下降.残差单元设计的主要思想就是进行恒等映射和快捷连接.快捷连接使得残差变得可能,而恒等映射使得网络变深,恒等映射是由跳跃连接和激活函数组成的.大多数情况下恒等映射与快捷连接是一致的.残差单元的结构见图1.
图1 残差单元结构
卷积神经网络是一种深度神经网络,其最为突出的一点是带有可以减少深层网络占用内存量的卷积结构.卷积神经网络模型最重要的组成通常是网络结构、局部感受野与权值共享、卷积层、下采样层、全连接层等.
本文选用ResNet50网络模型进行图像的特征提取.ResNet网络早已广泛应用于各领域的图像特征提取,图2是ResNet50网络的结构图.
图2 ResNet50网络结构
整个网络结构分为50层,由4个大模块组成:第1个大模块有3个小模块,第2个大模块有4个小模块,第3个大模块有6个小模块,第4个大模块有3个小模块,其中每个小模块都由3个卷积核组成.再加上网络第一层卷积层和网络最后一层全连接层,构成了50层网络结构.
初始状态输入网络模型的图片应是3×224×224,意味着图片是3个通道,图片尺寸为224×224;全连接层只会改变提取特征的维度,不会影响图片的个数.进行唐卡图像的特征提取需要较大规模的唐卡图片,因为缺少大规模唐卡图像,自己训练的网络模型很难做到合理训练.本文采用在ImageNet数据集上预先训练好的ResNet50网络模型进行特征提取.将图像批量输送到预先训练好的ResNet50模型中,建立唐卡图像的特征向量库,图像的特征向量为ResNet50模型的最后一层全连接层的1 024维的输出向量,然后将所有图片的特征向量存储在图像库的特征文件中,再将待检索的目标图像与唐卡图像特征向量库中的图像进行相似度比对,进而实现图像检索.
本次实验环境为:操作系统是Windows 10,电脑CPU主频是3.60 GHz,内存是8 GB,编程软件为Python 3.5、PyCharm 2020.用深度学习框架Tensorflow对图像进行ResNet50网络的特征提取.此次实验将图片批量输入ResNet50网络模型,经过ResNet50模型的特征提取,并将所有图片的特征向量用h5格式的文件保存起来.
本次实验所用唐卡图像库收集的图像共有436张,唐卡图像的来源主要是人为拍摄和各种网站整理,而后通过图像预处理进行唐卡数据库扩充.通过整理、归纳,将所有图像按核心人物分为4大类:佛像、供养人、菩萨、祖师.本次实验是基于此唐卡数据集进行的.唐卡图像的分类见图3.
图3 唐卡图像分类
基于ResNet50进行特征提取的唐卡图像检索流程见图4.利用ResNet50预先训练的网络模型提取唐卡图像的高维特征,而后对所有唐卡图像特征向量建立特征向量库,最后使用余弦距离进行相似性比较,将检索图像的特征向量与唐卡图像特征向量库进行比对,选取相似度最高的若干张图像,得出图像检索的结果.
图4 唐卡检索总体流程
本次实验方法如下:分别从供养人、佛像、祖师、菩萨4类图像中任选1张图像作为输入的待检索图
像,分别使用SIFT 、VGG16和ResNet50算法进行对比实验分析,每个结果的第1张图为输入图像.将第1张图作为输入的待检索图像,用黑框标定的为检索错误图像.
用SIFT进行特征提取检索唐卡图像.选取相似度最高的12张图片作为检索结果.输入佛像图像,检索出正确图像个数为6,错误图像个数为6(图5).输入供养人的图像,检索出正确图像个数为7,错误图像个数为5(图6).输入菩萨的图像,检索出正确图像个数为5,错误图像个数为7(图7).输入祖师的图像,检索出正确图像个数为6,错误图像个数为6(图8).
图5 佛像检索结果(SIFT) 图6 供养人检索结果(SIFT)
图7 菩萨检索结果(SIFT) 图8 祖师检索结果(SIFT)
用VGG16进行特征提取检索唐卡图像.选取相似度最高的12张图片作为检索结果.输入佛像图像,检索出正确图像的个数为10,错误图像个数为2(图9).输入供养人的图像,检索出正确图像个数为10,错误图像个数为2(图10).输入菩萨的图像,检索出正确图像个数为10,错误图像个数为2(图11).输入祖师的图像,检索出正确图像的个数为10,错误图像个数为2(图12).
图9 佛像检索结果(VGG16) 图10 供养人检索结果(VGG16)
图11 菩萨检索结果(VGG16) 图12 祖师检索结果(VGG16)
用ResNet50进行特征提取检索唐卡图像.选取相似度最高的12张图片作为检索结果.输入佛像图像,检索出正确图像个数为10,错误图像个数为2(图13).输入供养人的图像,检索出正确图像个数为11,错误图像个数为1(图14).输入菩萨的图像,检索出正确图像个数为10,错误图像个数为2(图15).输入祖师的图像,检索出正确图像个数为11,错误图像个数为1(图16).
图13 佛像检索结果(ResNet50) 图14 供养人检索结果(ResNet50)
图15 菩萨检索结果(ResNet50) 图16 祖师检索结果(ResNet50)
对本次实验结果中供养人、佛像、菩萨、祖师4大类唐卡图像中正确、错误的图像个数进行归纳、分析,并计算出3种算法的查准率(Precesion)和召回率(Recall)(表1、表2). 由实验结果可知,SIFT算法的查准率均低于VGG16算法,召回率均高于VGG16算法;3种算法中ResNet50的查准率和召回率均最优.这表明用ResNet50网络进行唐卡图像检索是可行的.
表1 3种算法查准率比较
表2 3种算法召回率比较
针对卷积神经网络,本文对残差神经网络应用于唐卡图像检索进行了改进与应用,并通过大量的实验对比证明了ResNet50网络的唐卡检索效果明显优于VGG16网络和SIFT算法.