一种基于深度学习的宫颈癌前病变识别的方法与流程

文档序号:18108381发布日期:2019-07-06 11:49阅读:542来源:国知局
一种基于深度学习的宫颈癌前病变识别的方法与流程

本发明涉及一种宫颈癌病变识别的领域,具体为一种基于深度学习的宫颈癌前病变识别的方法。



背景技术:

宫颈癌的发病率在女性恶性肿瘤中仅次于乳腺癌,但占据女性生殖道恶性肿瘤之首。宫颈癌的早期筛查对于降低发病率和死亡率都具有重要意义。基于阴道镜视野下的醋酸实验是目前临床上对宫颈癌筛查的重要技术手段。然而这种方法面临有主观性过强、精度低的问题,因此不利于筛查工作在缺少有经验医生的基层地区的推广。

针对上述问题,实现宫颈癌筛查的自动化和智能化就显得尤为重要。近年来由于深度学习中的卷积神经网络自动提取特征的优势,在图像分类上占据主导地位。目前已报道的各类相关研究只采用了醋酸实验后宫颈图像的单一信息,从精度上面来看并未比人工提取特征有更为明显的优势。为此,本发明提出了一种用宫颈比值图像代替原图用于迁移学习的方法。该方法运用多种图像处理手段得到基于醋酸实验前后的比值图像,并最终利用在imagenet数据集上预先训练好的vggnet-16模型对宫颈比值图像进行迁移学习,从而实现宫颈癌前病变识别。



技术实现要素:

本发明的目的在于提供一种基于深度学习的宫颈癌前病变识别的方法,研究目的是在醋酸实验得到的前后两种宫颈图像基础上,实现宫颈癌前病变的自动识别,进一步提高筛查准确性。同时通过将该项技术植入到现有阴道镜检测设备实现其临床应用。

围绕通过醋酸实验前后得到的两中模式的宫颈图像,本发明的技术方案如下:一种基于深度学习的宫颈癌前病变识别的方法,方法步骤如下:

第一步,阴道镜图像中宫颈区域的分割;

第二步,醋酸实验前后宫颈图像的配准和比值;

第三步,经典卷积神经网络vggnet-16的优化和迁移学习;

其中上述步骤中涉及到对图像数据预处理,在醋酸实验前后两套白光宫颈图像的基础上,对图像数据预处理的技术方案包括四步骤,具体为:

(1)从醋酸实验前白光图像中分割出宫颈区域作为感兴趣区域即roi,醋酸实验前白光图像和醋酸实验后白光图像将通过后续的配准将两者的像素坐标进行统一,从醋酸实验前白光图像中分割出了roi,醋酸实验后白光图像中的相应区域确定;对所有二幅图像的处理都将局限于roi中;

(2)对醋酸实验前白光图像和醋酸实验后白光图像进行配准,同时把配准后的醋酸实验前白光图像和醋酸实验后白光图像进行比值操作得到基于醋酸实验前后两套白光宫颈图像的宫颈比值图像;

(3)对反光点进行去除;

(4)送入模型进行训练前还要进行一系列的数据标准化操作流程,分割后经过配准得到的比值图像是不规则的,对其插值缩放。

进一步的,关于阴道镜图像中宫颈区域的分割,具体步骤为:对于宫颈区域的分割,

(1)结合宫颈区域的位置信息和色彩信息采用k-means聚类的分割方法;

(2)构造了如公式(2-1)所示的宫颈区域相似性测度函数:

其中(x,y)为任意像素点的横、纵坐标,s(x,y)为该像素点与宫颈区域的相似度,r(x,y)和g(x,y)以及b(x,y)分别为该像素点在rgb空间内的三个分量,lab_a(x,y)为该像素点在lab空间内的a分量,cx和cy分别为图像中心点的横坐标、纵坐标;

(3)由公式(2-1)计算出每一个像素点的相似性集合,然后利用k-means算法对其进行分类;对聚类之后得到的区域进行空洞填充以及膨胀、腐蚀去除部分零星区域,最终的面积最大区域即宫颈区域。

进一步的,关于醋酸实验前后宫颈图像的配准和比值,具体步骤为:

第一步,配准,遗传算法展开;

使用其梯度图像进行配准,空间变换模型采用如公式(2-2)所示的二维仿射模型:

其中(x,y)和(x*,y*)分别为待配准图像和配准图像对应像素点的坐标,(p1,p2,p3,p4,p5,p6)为两者之间的空间变换系数,最优组合通过遗传算法,寻优求解;

参考图像与待配准图像之间的相似性测度函数采用如公式(2-3)所示的相关系数:

其中(x,y)为任意像素点的坐标,tb(x,y)和ta(x,y)分别为参考图像和待配准图像中某一像素点的梯度值。分别为待配准图像和参考图像的梯度平均值。c(x,y)为参考图像和待配准图像对应位置的相似度;

第二步,比值,采用结合基于醋酸实验前后宫颈白光图像比值的方式来凸显出宫颈区域醋白的变法;

首先将醋酸实验前后两种宫颈白光图像的rgb三个通道分别进行归一化到0-255之间,再将两个图像rgb三个通道的进行对比,

然后考虑到配准上的误差将三个通道中大于2的值强制设为2,

最后生成了一张比值图像,然后再将其归一化到0-255之间。

进一步的,所述对反光点进行去除,具体步骤为:通过采用去掉灰度较高的部分的方法来剔除反光点;用灰度图像每个像素点的灰度值与255进行比较,去掉大于0.85的部分。

进一步的,所述数据标准化,具体步骤为:采用双线性插值法对其进行缩放,通过放大图像,通过内插来构造一些新像素;通过缩小,通过内插间接保持丢失像素的属性。

本发明的创新性主要有两点:

第一是检测过程的自动化和智能化。根据本发明制定的检测方案,医生在临床上只需要完成二张图像的拍摄工作,不需要依据自身临床经验做任何主观性判断(诸如hpv和宫颈刮片的检测方法则需要医生进行较为繁琐和主观性较强的操作)。因此本发明的检测方案对于宫颈癌的筛查工作在我国缺乏有经验临床医生的县一级及以下基层医院甚至社区医院中的推广具有重要意义。

第二是结合使用了醋酸实验前和醋酸实验后的宫颈图像。相比目前研究现状中只有利用醋酸实验后图像进行判别的方法,本发明提出的这种用宫颈醋酸实验前后的比值图像代替原图进行训练的方法突出了cin区域在醋酸实验前后的变化,能够有效避免因个体差异性和一些非cin病灶产生的疑似醋白反应区域对cin识别产生干扰。

本发明的优点:本发明提出了一种用宫颈比值图像代替原图用于迁移学习的方法。该方法运用多种图像处理手段得到基于醋酸实验前后的比值图像,并最终利用在imagenet数据集上预先训练好的vggnet-16模型对宫颈比值图像进行迁移学习,从而实现宫颈癌前病变识别。

附图说明

图1为本发明的图像数据预处理技术方案流程图。

图2为本发明的线性插值法示例图。四个正方形点表示数据点;三角形点表示我们想要插入的点。

图3为本发明的vggnet-16的网络架构图。

图4为本发明的卷积层过滤器(filter)结构示意图。

图5为本发明的一个二维图像过滤器的例子示意图。

图6为本发明的卷积层的运算图。

图7为本发明的当池化区域大小为2x2,步长为1时,最大池化层的操作图。

图8为本发明的relu图。

图9为本发明的简单的全连接神经网络图。

图10为本发明的迁移学习使用方法图。

具体实施方式

本发明的技术方案如下:一种基于深度学习的宫颈癌前病变识别的方法,方法步骤如下:

(1)阴道镜图像中宫颈区域的分割,由于阴道镜的视野内除了宫颈区域外还包含了夹杂着各种反光点的扩阴器、阴道内壁等其它无关的器件和组织,导致其背景非常复杂。如果在这样的图像基础上进行cin区域的识别显然会增加误判的概率。因此首先分割出宫颈区域的位置对后续各项图像处理工作的顺利开展有着重要的意义。

(2)醋酸实验前后宫颈图像的配准和比值,由于醋酸实验的目的是为了发现在宫颈表面涂抹醋酸后产生醋白反应的区域,因此分析醋酸实验前后宫颈表面同一区域色彩和纹理的变化是很重要的环节。而因为涂抹醋酸后等待醋白反应出现的时间较长(一般为20至60秒),在这一过程中病人的姿态很可能发生变化导致醋酸实验前后的宫颈区域在阴道镜视野下呈现出较大形变,因此对醋酸实验前后的宫颈图像进行配准是本发明中的又一个必要环节。根据研究现状可得知目前只有利用醋酸实验后的宫颈图像对癌前病变识别进行研究,这样会导致信息单一难以体现醋酸实验前后的变化,因此对醋酸实验前后宫颈图像在配准的基础上对rgb三通道归一化后再进行rgb三通道比值运算,利用比值图像代替原图来进行训练。

(3)经典卷积神经网络vggnet-16的优化和迁移学习,由于国内一个普通的三甲医院一年的宫颈癌确诊病例不会超过200例,在数据上暂时达不到理想的百万量级带标签的数据。此外训练大量的图像数据需要消耗大量的显卡资源。因此可以使用前人在imagenet数据集上预先训练好的vggnet-16模型对上面提到的宫颈比值图像进行迁移学习。首先对网络进行部分修改,把最后全连接层中的dropout函数换成batchnorm函数。然后通过指数衰减设置学习率、正则化和滑动平均对网络进行了进一步的优化。最后通过两种迁移学习方案来对宫颈原图、宫颈区域分割图和基于宫颈醋酸实验前后的比值图像进行训练和测试结果统计。

在数据获取方面,目前通过合作企业(江西大福医疗科技股份有限公司)从布点开展实验的医院(广丰区妇幼保健院和横峰县妇幼保健院)已经获得了数千例阴道镜图像,从中精心挑出质量比较好的hsil(+)和lsil(-)各110套数据,此外还会通过数据增强技术扩充样本量。本发明采取了两种方案来进行实验,第一种将预先训练好的vggnet-16模型当作特征提取器来使用。具体做法是重新训练靠近输出的几层,将剩下的整个网络当作一个固定的特征提取器,应用到宫颈数据集中。第二种是对其部分进行微调。具体做法是将模型起始的一些层的权重保持不动,重新训练后面的层,得到新的权重。

实验结果显示使用本发明提出的第一种方案采用5-folds方法进行训练,测试得到的平均敏感性、特异性和精度为62.27%,68.18%和83.18%,对比使用宫颈原图和宫颈区域分割图进行训练,测试得到的结果在平均精度上提高了20.91%和15%;使用本发明提出的第二种方案采用5-folds方法进行训练,测试得到的平均敏感性、特异性和精度为72.27%,81.36%和90.91%,对比使用宫颈原图和宫颈区域分割图进行训练,测试得到的结果在平均精度上提高了18.64%和9.55%,同时复现了taoxu论文[multi-featurebasedbenchmarkforcervicaldysplasiaclassification]中提到的基于提取的三个互补的金字塔特征进行分类的方法在我们数据集上进行了训练,测试得到的平均敏感性、特异性和精度为79.21%,75.69%和77.45%。实验结果证明了本发明提出的方法的有效性。

本发明通过对图像数据预处理,可以尽量避免模型受到无关因素的干扰,可以提高模型的准确率。在醋酸实验前后两套白光宫颈图像的基础上,本发明对图像数据预处理的技术方案流程如图1所示。

该方案包含了四个主要技术环节,首先是从图a中分割出宫颈区域作为感兴趣区域(roi)。需要说明的是,因为图a和图b的拍摄间隔很长,可以理解为两幅图像之间会产生较大偏移,所以图a和图b将通过后续的配准将两者的像素坐标进行统一,因此一旦从图a中分割出了roi,图b中的相应区域也就可以同时确定。后续对所有二幅图像的处理都将局限于roi中。其次是对图a和图b进行配准,同时把配准后的图a和图b进行比值操作得到基于醋酸实验前后两套白光宫颈图像的宫颈比值图像。然后对反光点进行去除。最后送入模型进行训练前还要进行一系列的数据标准化操作流程,其中由于分割后经过配准得到的比值图像是不规则的,无法送入网络中进行训练,所以对其进行了插值缩放。此外,有一个可以加快训练速度的方法,那就是对训练数据集进行去均值、归一化、白化操作,还很有可能提高分类精度。对于技术处理方案,下面我们将根据其涉及到的四个主要技术环节依次介绍。

2.1宫颈区域分割#k-means聚类展开

传统阴道镜获取的图像除了宫颈区域外,往往包含周边的复杂背景区域。对于宫颈区域的分割,本发明结合宫颈区域的位置信息和色彩信息采用k-means聚类的分割方法。做此选择的理由有两点,首先是我们通过观察阴道镜的成像过程发现操作人员总会有意地将宫颈区域摆放在镜头视野中较为中心的位置,因此位于图像的整体中心位置是宫颈区域的第一个特征。其次是虽然有个体性差异,但是宫颈区域在白光阴道镜下的颜色都呈现出了特定的肉红色,即便这种肉红色有深有浅,但与背景色在整体上还是有一定的差异,因此这种色彩信息可以成为我们利用的第二个特征。在得到以上两个显著特征之后再通过k-means聚类算法[*]便不难从原始图像中分割出宫颈区域。

综合考虑,我们构造了如公式(2-1)所示的宫颈区域相似性测度函数:

其中(x,y)为任意像素点的横、纵坐标,s(x,y)为该像素点与宫颈区域的相似度,r(x,y)和g(x,y)以及b(x,y)分别为该像素点在rgb空间内的三个分量,lab_a(x,y)为该像素点在lab空间内的a分量,cx和cy分别为图像中心点的横坐标、纵坐标。

s(x,y)的值越大说明与宫颈区域的相似程度越高。由公式(2-1)计算出每一个像素点的相似性集合,然后利用k-means算法对其进行分类。对聚类之后得到的区域进行空洞填充以及膨胀、腐蚀[*]去除部分零星区域,最终的面积最大区域即宫颈区域。

2.2宫颈醋酸实验前后图像配准和比值

2.2.1配准#遗传算法展开;

醋酸白实验中病变组织的泛白是相对的。通常来说,涂抹醋酸之后的cin部位会变得比涂抹醋酸之前更为泛白,同时,cin部位相对于周边正常组织的泛白又更为明显。在宫颈图像中,泛白最为直观的表现是病变组织区域的像素点灰度等级(0~255级)更高。而醋酸一般需要1-2min才会发挥作用,在此期间,患者,设备可能会发生较大的相对偏移,患者组织也可能会发生较大的形变。因此,为了准确地了解醋酸实验前后某像素点灰度等级的变化,本发明对醋酸实验前后的宫颈图像进行配准。

配准是指同一目标的两幅或多幅图像在空间位置上的匹配、对准。为了提高配准效率,本发明使用其梯度图像代替原有的宫颈图像进行配准。空间变换模型采用如公式(2-2)所示的二维仿射模型:

其中(x,y)和(x*,y*)分别为待配准图像和配准图像对应像素点的坐标,(p1,p2,p3,p4,p5,p6)为两者之间的空间变换系数,最优组合通过遗传算法[*]寻优求解。

参考图像与待配准图像之间的相似性测度函数采用如公式(2-3)所示的相关系数:

其中(x,y)为任意像素点的坐标,tb(x,y)和ta(x,y)分别为参考图像和待配准图像中某一像素点的梯度值。分别为待配准图像和参考图像的梯度平均值。c(x,y)为参考图像和待配准图像对应位置的相似度。

2.2.2比值

根据研究现状可知目前对宫颈癌前病变识别的研究都是建立在醋酸实验后的宫颈白光图像基础上进行的。这样会导致信息单一,难以体现醋酸实验前后的宫颈区域醋白的变化,因此我们采用结合基于醋酸实验前后宫颈白光图像比值的方式来凸显出宫颈区域醋白的变法。首先将醋酸实验前后两种宫颈白光图像的rgb三个通道分别进行归一化到0-255之间,再将两个图像rgb三个通道的进行对比,然后考虑到配准上的误差将三个通道中大于2的值强制设为2,最后生成了一张比值图像,然后再将其归一化到0-255之间。

2.3反光点的去除

在传统阴道镜图像的拍摄过程中,由于宫颈粘液未清理干净或人为操作不当等原因,宫颈图像不可避免地会出现反光区域,但是我们并不能准确判断出这部分区域的原始灰度情况,这将对我们后期的训练会造成一定的干扰误差。因此在图像数据预处理过程中,我们选择剔除这部分区域。本发明通过采用去掉灰度较高的部分的方法来剔除反光点。用灰度图像每个像素点的灰度值与255进行比较,去掉大于0.85的部分,其中阈值0.85是经过多次实验得到的。

2.4数据标准化

由于经过醋酸实验前后的两张宫颈图像经过配准比值分割后的图是不规则的形状,无法被送入卷积神经网络中进行训练,此外又考虑到分类性能的影响,所以本发明采用双线性插值法对其进行缩放。缩放图像有两种方式,使其更大或使其更小。通过放大图像,通过内插来构造一些新像素。通过缩小,我们倾向于认为选择正确的像素以保持其他像素被丢弃,但事实并非如此。与抛出像素的最近邻居收缩不同,双线性收缩估计原始图像的分辨率较小。即使细节丢失,缩小图像中的几乎所有新像素都不是直接来自它们的原始像素,而是内插,间接保持丢失像素的属性。在数学中,双线性插值是线性插值的扩展,用于在直线2d网格上插值两个变量(例如,x和y)的函数。关键思想是首先在一个方向上执行线性插值,然后在另一个方向上再次执行线性插值。尽管每个步骤在采样值和位置上都是线性的,但是插值作为整体不是线性的,而是在样本位置中是二次的。下面通过图2来说明线性插值法的原理。

假设我们已知q11=(x1,y1),q12=(x1,y2),q21=(x2,y1)和q22=(x2,y2),我们先沿x方向然后再沿y方向进行双线性插值,通过公式(2-4)和(2-5)可以算出r1和r2的位置。

我们继续在y方向插值,通过公式(2-6)可以获得p的位置。

注意,如果首先沿y方向然后再沿x方向进行插值,我们将得到相同的结果。

在向网络传递输入数据之前,需要对数据进行标准化处理。使用的一般处理步骤如下:

1、去均值:输入的patch(既属于训练集,也属于测试集)通过减去整个训练集的计算平均值来归零。给定n张训练图像,每张图像用x∈rh×w×c表示,均值减去步骤如下面公式(2-7)所示。

2、归一化:将训练集上的输入数据(既属于训练集,也属于测试集)与计算得到的每个输入维数(图像中的像素)的标准差相除,将标准差归一化为一个单位值。表示步骤如下面公式(2-8)所示。

3、pca白化:pca白化的目的是通过对不同的数据维数进行独立归一化,降低它们之间的相关性。该方法从以零为中心的数据出发,计算协方差矩阵,并对数据维数之间的相关性进行编码。然后利用奇异值分解(svd)算法对协方差矩阵进行分解,并将其投影到奇异值分解得到的特征向量上,实现数据的去相关。然后,将每个维数除以对应的特征值,对数据空间中的所有维数进行归一化。

4、局部对比归一化:这种归一化方案的动机来自神经科学。正如名称所描述的,这种方法将特征映射的局部对比规范化,以获得更突出的特征。它首先为每个像素生成一个局部邻域,例如,对于一个单位半径,选择8个相邻像素。然后,像素以零为中心,使用其本身和相邻像素值计算平均值。同样,像素也使用其自身和相邻像素值的标准差进行标准化(只有当标准差大于1时)。得到的像素值用于进一步的计算。另一种类似的方法是局部响应归一化,它将卷积层中相邻滤波器的特征对比归一化。

注意pca白化可以放大数据中的噪声,因此最近的卷积神经网络模型只使用简单的均值减法(可选的归一化步骤)进行预处理。通过均值减法和归一化实现的缩放和移位有利于梯度学习。这是因为对所有输入维度的网络权重进行了等价的更新,从而实现了稳定的学习过程。此外,局部对比标准化(lcn)和局部响应标准化(lrn)在最近的体系结构中并不常见,因为其他方法(我们将在第四章中描述的批处理标准化)已经被证明更有效。

vggnet-16网络架构;卷积神经网络是最受欢迎的神经网络类别之一,特别是对于高维数据(如图像和视频)。卷积神经网络的运作方式非常类似于标准的神经网络。然而,一个关键的区别是,卷积神经网络层中的每个单元都是一个二维(或高维)滤波器,它与该层的输入进行卷积。这对于我们想要从高维输入媒体(例如图像或视频)中学习模式的情况非常重要。cnn过滤器通过拥有类似(但更小)的空间形状作为输入媒体来整合空间上下文,并使用参数共享来显著减少可学习变量的数量。与传统的机器学习相比,卷积神经网络的优势在于不用自己手动提取特征来训练分类器,可以自动学习有用特征进行深层次的组合,并将分类和特征提取阶段集成到一个可以端到端的训练的单一管道中。减少了手工设计和专家人工干预的需要。

vggnet架构是自2014年引入以来最受欢迎的cnn模型之一,尽管它不是ilsvrc'14[*]的获胜者。其流行的原因在于其模型的简单性和使用小型卷积内核,这导致了非常深的网络。作者介绍了一组网络配置,其中配置d和配置e(文献中通常称为vggnet-16和vggnet-19)是最成功的配置[*]。vggnet体系结构严格使用3个具有中间maxpooling层的卷积内核进行特征提取,并在最后使用一组3个完全连接的层进行分类。在vggnet体系结构中,每个卷积层后面都有一个relu层。使用较小内核的设计选择会导致相对较少的参数,因此可以进行有效的训练和测试。此外,通过将3×3个大小的卷积核串联堆放,可以使有效感受野增加到更大的值(如5×5两层、7×7三层等)。最重要的是,使用更小的过滤器,可以堆叠更多的层,从而形成更深层的网络,从而提高视觉任务的性能。这本质上传达了该体系结构的核心思想,它支持使用更深层次的网络来改进特性学习。图3显示了性能最好的模型vggnet-16(configurationd),它有1.38亿个参数。与alexnet[*]类似,它还在前两个完全连接的层中使用激活dropout来避免过拟合。

由图3可知vggnet-16由几个基本的构建层组成,称为卷积神经网络层。在本节中,我们将研究这些构建层及其在vggnet-16架构中的功能。注意,其中一些层实现了基本功能,如卷积层、池化层、激励层和全连接层等等。本节主要介绍这些基本层,以便对vggnet-16架构有一个基本的了解。

3.2.1卷积层;顾名思义,卷积层是卷积神经网络中最重要的组成部分,也是“卷积神经网络”名字的来源。卷积层主要有局部关联和窗口滑动着两个关键操作。卷积层包括一组过滤器(也称为卷积内核),这些过滤器与给定的输入进行卷积,生成输出特征图,如图4所示,过滤器可以将神经网络上的一个子节点矩阵转化成下一层神经网络中的一个单位节点矩阵。

什么是过滤器?卷积层中的每个滤波器都是由离散数组成的网格。以图5所示的一个2×2过滤器为例。每个过滤器的权值(网格中的数字)是在卷积神经网络的训练中学习的。学习过程包括在训练开始时随机初始化过滤器的权重。然后,给定输入-输出对,在学习过程中通过多次不同的迭代调整过滤器权重。

什么是卷积运算?我们之前提到卷积层执行卷积层执行滤波器和该层输入之间的卷积。让我们考虑图6中的2d卷积,以深入了解层的操作。给定一个二维输入特征图和一个矩阵大小为4×4和2×2的卷积滤波器,卷积层用突出显示的输入特征图的patch(也为2×2)乘以2×2滤波器,并将所有值相加,在输出特征图中生成一个值。注意,过滤器沿着输入特征图的宽度和高度滑动,这个过程将继续,直到过滤器不能再进一步滑动为止。

在信号处理中,“卷积”和“互相关”是有区别的。我们上面描述的操作就是“相关操作”。在卷积过程中,唯一的区别是,在乘法和合用之前,滤波器沿高度和宽度翻转。在机器学习中,这两种操作是等价的,两者之间很少有区别。这两个术语可以互换使用,大多数深度学习库在卷积层中实现相关操作。原因是网络优化将收敛于这两种操作中的任何一种。如果将卷积网络的权值替换为使用相关网络学习的权值,网络性能将保持不变,因为这两个网络中只改变了操作的顺序,并且它们的判别能力保持不变。

(a)-(i)显示在每个步骤执行的计算,因为过滤器被滑动到输入特征映射上,以计算输出特征映射中的对应值。将2×2滤波器(绿色表示)与大小相同的区域(橙色表示)在一个4×4输入特征图中相乘,并将得到的值求和,得到在每个卷积步骤输出特征图中对应的条目(蓝色表示)。

在上面的例子中,为了计算输出特征图的每个值,filter沿着水平或垂直位置(沿输入的列或行)。这一步称为卷积滤波器的步长,如果需要,可以将其设置为不同于1的值。这种维数的减少称为子抽样操作。这种维数的减少为对象的比例和姿态提供了适度的不变性,这在对象识别等应用程序中是一个有用的特性。本发明将在讨论池化层的部分讨论其他子抽样机制。精确地说,对于大小为f×f的滤波器,大小为h×w,步长为s的输入特征图,输出特征维度可以根据公式(3-1)算出。

式中,为floor操作。然而,在一些应用中,如图像去噪、超分辨率或分割,我们希望保持卷积后的空间大小不变(甚至更大)。这很重要,因为这些应用程序需要在像素级进行更密集的预测。此外,它允许我们通过避免输出特性维度的快速崩溃来设计更深层次的网络。这有助于实现更好的性能和更高的分辨率输出标签。这可以通过在输入特性映射周围应用零填充来实现。在水平和垂直维度上填充0可以增加输出维度,因此在架构设计中提供了更大的灵活性。其基本思想是增加输入特征图的大小,从而获得具有所需尺寸的输出特征图。如果p表示输入特征图沿每个维度的增加(通过填充0),则可以表示修改后的输出特征维度可以根据公式(3-2)求得。

填充卷积通常根据零填充的涉及程度分为以下三类:

(1)validconvolution:不涉及补零的最简单情况。过滤器始终保持在输入特征图中的“有效”位置(没有填充为零的值),并且输出大小沿高度和宽度减小f-1。

(2)sameconvolution:确保输出和输入特征图具有相同的大小。为了实现这一点,输入适当地填充为零。例如,步幅为1时,填充由给出,这就是为什么它也被称为“半”卷积的原因。

(3)fullconvolution:在卷积之前对输入特征图应用最大可能的填充。最大可能填充是指在所有卷积的情况下,至少有一个有效的输入值。因此,对于一个滤波器大小为f的值,它等于填充f-1个0,这样在最极端的角处卷积中至少包含一个有效值。

对于输入,我们使用了一个相对较小的内核。在计算机视觉中,输入是非常高维的(如图像和视频),需要通过大规模的cnn模型进行高效处理。因此,我们不定义与输入空间大小相等的卷积滤波器,而是定义它们的大小要比输入图像小得多。

这种设计提供了两个关键的好处:

1)当使用较小的内核时,可学习参数的数量大大减少;

2)小型滤波器确保从与图像中不同对象部分对应的局部区域(例如,图像中不同的对象部分)学习到独特的模式。滤波器的大小(高度和宽度)定义了一个区域的空间范围,滤波器可以在每个卷积步骤中修改这个区域,称为滤波器的“感受野”。接受域与输入图像/特征感受野的空间维度特别相关。当我们将多个卷积层叠加在一起时,每一层的“有效感受野”(相对于网络的输入)就变成了之前所有卷积层的感受野的函数。对于n个卷积层堆,根据公式(3-3)可以求得每个卷积层的核大小为f的有效接收域的大小。

如果我们将两个卷积层分别堆起来,每个卷积层的核大小分别为5×5和3×3,那么第二层的接收域为3×3,但是它对输入图像的有效接收域为7×7。当叠加卷积层的步长和滤波器尺寸不同时,各层的有效感受野可以用如公式(3-4)更一般的形式表示。

其中fn为第n层的滤波器大小,si为前一层的步长,为前一层的有效感受域。

二维情况是最简单的情况,其中过滤器只有一个通道(表示为矩阵),它与输入特征通道进行卷积以产生输出响应。在高维情况下,当卷积神经网络的输入为张量,过滤器应该也是三维立方体,沿高度,宽度和深度和输入进行卷积运算生成一个相应的三维特征图。然而,本发明在上面讲述的二维例子中设计讨论的所有概念仍然适用于处理三维和更高维度的输入。

唯一的区别是卷积运算被扩展到一个额外的维度,例如在三维情况下,除了在二维情况下沿高度和宽度进行卷积外,还沿深度进行卷积。类似地,零填充和跨行可以沿深度以三维情况被执行。

卷积层的核心关键还是它的参数共享机制。在卷积层中,每个神经元和数据窗口的相连的权重是固定的,每个神经元只关注图像中的一个特性。神经元说直白点就是图像处理中的滤波器,每个滤波器只会关注图像中的一个特征,比如颜色、纹理、边缘等等,将这些神经元结合起来就好比图像的特征提取器集合。这种参数共享机制将会大大减少参数的数量,从而减少过拟合的可能性,但减少参数量的任务主要还是由下面介绍的池化层担任。

3.2.2池化层;池化层主要放在连续的卷积层之间,对特征图中的块并结合激活函数进行操作,用于压缩数据减少参数的数量,从而减少过拟合。简单点说池化层的作用就是用来压缩图像的,使图像保留最重要的特征信息,把冗余的信息全部剔除掉。这种组合操作由池化层函数(如平均池化函数或最大池化函数)定义。池化层使用的方法主要有最大池化(maxpooling)和平均池化(averagepooling)这两种。因为本发明中用的前者,所以对其进行介绍。与卷积层类似,我们需要指定池化区域的大小和步长。图7显示了最大池化的操作,其中最大激活是从所选的值块中选择的。这个窗口在输入特征图上滑动,步长由stride定义(图7中为1)。如果池化区域的大小为f×f,步长为s,则输出特征图的大小由公式(3-5)可以求出。

(a)-(i)显示池化操作每一步执行的计算,输入特征图(橙色)中的池化区域在每一步滑动,以计算输出特征图(蓝色)中的对应值。

池化操作有效地对输入特征图进行下采样。这样的下采样过程对于获得有效的特征表示是有用的,该特征表示对于图像中目标尺度、姿态和平移的适度变化是不变的[*]。

3.2.3激活层

卷积神经网络中的权重层(例如卷积层和全连接层)通常后面都会接一个非线性激活层,对其输出结果进行非线性映射。激活函数接受实值输入,并将其压缩在一个小范围内,比如[0,1]和[1,1]。在权重层之后应用非线性函数是非常重要的,因为它允许神经网络学习非线性映射。在不存在非线性的情况下,权重层堆叠网络等价于从输入域到输出域的线性映射。

非线性函数也可以理解为一种转换或一种选择机制,它决定一个神经元是否会在给定所有输入的情况下触发。在深度神经网络中常用的激活函数是可微的,可以实现误差反向传播。因为vggnet-16中使用到的非线性激活函数为线性整流函数(rectifiedlinearunit,relu)和softmax函数。下面介绍一下这两种非线性激活函数。

relu激活函数的激活是由人类视觉皮层的处理过程驱动的[*]。如图8所示,线性整流变换是一种有趣的变换,它只在输入大于一定数量时才激活节点。它是一个简单的激活函数,计算速度快,具有特殊的实用价值。根据下面公式(3-6)可知,如果输入为负,relu激活函数将其映射为0;如果输入为正,则保持其值不变呈线性关系。relu激活函数体现了目前的技术水平,因为它们已被证明可以在许多不同的情况下工作。由于relu激活函数的梯度要么为零,要么为常数,因此有可能控制消失的爆炸梯度问题。在实践中,relu激活函数比sigmoid函数体现出更好的训练效果。与sigmoid和tanh激活函数[*]相比,relu激活函数没有消失梯度问题。如果我们使用hardmax作为激活函数,我们可以在层的激活输出中引入稀疏性。研究表明,使用relu激活函数的深层网络可以在不使用训练前技术的情况下很好地训练[*]。

frelu(x)=max(0,x)(3-6)

如何将神经网络最后的输出结果变成一个概率分布?softmax回归就是一个经常用到的方法。softmax激活函数是逻辑回归的泛化,因为它可以应用于连续数据(而不是对二进制进行分类),并且可以包含多个决策边界。它处理多项标记系统。softmax激活函数经常被放置在分类器的输出层,softmax激活函数可以返回互斥输出类上的概率分布。假设原始的神经网络输出为y1,y2…yn,那么经过softmax激活函数处理的值如公式(3-7)所示。

3.2.4全连接层

全连接层(fullyconnectedlayers)本质上对应于具有1x1大小滤波器的卷积层。如图9所示,在全连接层中的每个单元都与上一层的所有单元紧密连接。在一个典型的cnn中,全连接层通常位于架构的末尾,也就是跟传统神经网络神经元的连接方式是一样的。然而,文献中也报道了一些成功的架构,它们在cnn的中间位置使用了这种类型的层[*]。如公式(3-8)所示,它的运算可以表示为一个简单的矩阵乘法,然后添加一个偏置项向量并应用一个非线性函数。

y=f(wtx+b)(3-8)

其中x和y分别为输入和输出激活的向量,w为包含层单元间连接权值的矩阵,b为偏置项向量。

3.4迁移学习

在许多机器学习和数据挖掘算法中,一个主要的假设是训练和未来的数据必须在相同的特征空间中,并且具有相同的分布。然而,在许多实际应用中,这种假设可能不成立。例如,我们有时在一个感兴趣的领域中有一个分类任务,但是只有在另一个感兴趣的领域中有足够的训练数据,在另一个领域中,后者可能位于不同的特征空间或遵循不同的数据分布。在这种情况下,如果成功地进行知识转移,就可以避免昂贵的数据标记工作,从而大大提高学习性能。近年来,迁移学习作为一种新的学习框架应运而生。

我们越来越擅长训练深度神经网络,从大量的标签数据(图像、语言、句子等等)学习到从输入到输出准确的映射。但是我们的模型仍然严重缺乏概括在不同训练中遇到的情况的能力。我们不是将训练好的模型应用于精心构造的数据集,而是应用于实际世界。现实世界是混乱的,包含了无数的新场景,其中许多场景是您的模型在训练期间没有遇到过的,而对于这些场景,模型又没有做好做出预测的准备。将知识转移到新环境的能力通常被称为迁移学习。

与传统的监督机器学习相比,深度学习最大的缺点是贵!当我们试图处理现实生活中的问题,如图像识别,声音识别等。如果模型中有了几个隐藏层,再添加一个层将消耗大量计算资源。幸运的是,有一种叫做迁移学习的方法,它允许我们对别人训练过的模型进行小的修改便可以投入使用。比如神经网络的训练需要大量的数据支撑,通过从数据中获得重要信息,从而转化成相应的权重。我们再将这些从其他数据中提取的权重迁移到新的神经网络中去,那我们就不需要从头开始花费大量的计算时间和资源训练一个神经网络了。其实通过权重的迁移来对新的数据集进行学习和人类通过自己理解传递给其他人是一个道理。

我们在解决新的图像分类问题时可以使用预训练模型来对新的图像数据集进行训练,这种方法不但可以提高训练效率,而且还可以提高准确率。一般比较有名的预训练模型都是在imagenet数据集上花费大量的时间和计算资源得来的。现在imagenet数据集已经被广泛用作训练集来使用。因为它包括120万张图片,有助于训练模型。此外预训练模型也对于imagenet数据集之外的很多图片表现出了很好的泛化性能。因为预训练模型是经过大量图片训练得到的,因此我们不需要过多对其进行修改,往往只需要对其进行微调即可。但是在微调的过程中对修改的层会采用更低的学习率进行训练。图10展示了迁移学习的使用方法。

迁移学习总体可以分为两种方法。第一种是被当作特征提取器来使用。首先将预训练模型前面所有层的参数固定住,然后用来提取低层次的特征,再通过提取的特征来训练一个分类器。第二种是对预训练模型进行微调。将预训练模型的前几层的参数固定住,然后用自己的数据集对网络进行训练,具体固定几层要经过自己逐层尝试根据测试效果来最终确定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1