首页 > 编程知识 正文

vgg16提取图像特征流程,vgg16提取图像特征

时间:2023-05-03 06:51:44 阅读:180250 作者:4550

图像特征提取(VGG和Resnet算法卷积过程的细节)第一章图像特征提取认知1.1一般算法的原理和性能是众所周知的,计算机不识别图像,只识别数字。 本章探讨了计算机如何从图像中提取有用的数据和信息,以获得图像“非图像”的表示和描述,如数值、向量和符号,从而使计算机能够“理解”图像并具有真正意义上的“视觉” 这个过程是特征提取,特征是被提取的这些“非图像”的表示和记述。 有了这些数值和矢量形式的特征,通过训练过程可以教计算机如何理解这些特征,使计算机具有识别图像的能力。

1.2图像特征是指一类对象区别于其他类型对象的相应的(本质的)特征或特性,或者这些特征和特性的集合。 特征是可以通过测量和处理提取的数据。 图像有自己的特点,可以将每个图像与其他图像区分开,也有亮度、边缘、纹理、颜色等直观的自然特征。 有些是通过变换或处理获得的,例如力矩、直方图和主要成分。

1.3特征向量及其几何解释我们常常将一类对象的多个或多个特性组合起来形成一个特征向量来表示这类对象。 如果只有单一的数值特征,则特征向量是一个一维向量,如果是n个特性的组合,则特征向量是一个n维特征向量。 这种特征向量常常作为识别系统的输入。 实际上,n维的特征之一是位于n维空间的点,识别分类的任务是找到这个n维空间的区分。 例如,要区分3种不同的鸢(yun )尾属植物,可以特征选择其花瓣长度和花瓣宽度。 由此,一个植物对象可以用一个二维特征来表示。 例如) 5.1,3.5 ) 1.4 )那样,如果加上萼片的长度和萼片的宽度,各鸢属植物对象用1个四维特征相对表示

1.4特征提取的一般原则图像识别实际上是一个分类的过程,为了识别一幅图像所属的类别,需要**区别于其他不同类别的图像。 这不仅是因为选择的特征能够很好地表达图像,更重要的是能够很好地区分不同类别的图像。 *希望选择类间差异小、类内距离小、类间距离大的图像特征。 这称为most discriminative。 另外,先验知识在特征提取中起着重要的作用,如何依靠先验知识来辅助特征的选择也是今后持续关注的问题。

第二章常见特征提取算法2.1常见图像特征提取的算法SIFT

HOG

ORB

HAAR

Deep Learning(神经网络特征提取)

SIFT (尺度不变特征变换) SIFT特征提取的本质是在不同尺度空间寻找关键点)特征点,计算关键点的方向。 SIFT找到的关键点是非常强调的点,不受光线、仿射变换和噪波等因素的影响,如角点、边缘点、暗部高光和亮部暗部。

HOG (方向梯度直方图) HOG特征提取的本质是通过计算和统计图像局部区域的梯度方向直方图来构造特征。 Hog特征结合SVM识别器已经广泛应用于图像识别,特别是在行人检测方面取得了很大的成功。

SIFT和HOG的比较共同点都是基于图像中梯度方向直方图的特征提取方法

区别: SIFT特性通常与使用SIFT检测器得到的兴趣点一起使用。 这些兴趣点与特定的方向和尺度相关联。 通常,在对一个图像中的方形区域进行相应的方向和比例变换后,计算该区域的SIFT特征。 由于HOG特征的单元尺寸小,可以保持一定的空间分辨率,同时对归一化操作引起的局部对比度变化不敏感。

ORB ORB特征描述算法的运行时间远优于SIFT算法,可用于实时性特征检测。 ORB特征基于FAST角点检测和描述技术,具有尺度和旋转不变性,同时对噪声和透视仿射也具有不变性,良好的性能使得ORB用于特征描述的应用场景非常广泛。

HAAR人脸检测的最经典算法Haar-like特征Adaboost。 这是最常用的物体检测方法(最初用于人脸检测),也是最常用的方法。

训练过程:输入图像-图像预处理-特征提取-训练分类器-二分类-训练的模型

测试过程:输入图像-图像预处理-特征提取-部署模型-二分类(是否为被检对象)。

第三章深度学习提取特征3.1神经网络提取图像特征的小块图形可由基本edge构成,更结构化、更复杂的是需要更高级别的特征表示,高级别的表示由低级的表示组合构成。 如图所示,这是神经网络各层提取的特征。 由于是通过神经网络自动学习的,所以也是没有被监视的特征性学习过程。 直观上,如果找到make sense的小patch并对其进行combine,就可以得到上层的feature,并递归地向上学习feature。 在不同的object上进行training时,得到的edge basis非常相似,但object parts和models是completely different。

p>

3.2 认识VGG网络和Resnet网络

VGGNet:2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司的研究员一起研发出了新的深度卷积神经网络:VGGNet,并取得ILSVRC2014比赛分类项目的第二名(第一名是GoogLeNet,也是同年提出的)和定位项目的第一名。由此可见,VGGNet的效果非常的好。VGGNet探索了卷积神经网络的深度与其性能之间的关系,成功地构筑了16~19层深的卷积神经网络,证明了增加网络的深度能够在一定程度上影响网络最终的性能,使错误率大幅下降,同时拓展性又很强,迁移到其它图片数据上的泛化性也非常好

Resnet: ResNet获得2015年ImageNet比赛的冠军,主要创新点在于设计了一种使用了skip connection的残差结构,使得网络达到很深的层次,同时提升了性能。神经网络随着层数的增加,显示出退化问题,即深层次的网络反而不如稍浅层次的网络性能;而且这并非是过拟合导致的,因为在训练集上就显示出退化差距。所以,一种直觉是:如果神经网络能够轻松的实现层次间的等效映射,即一个block的输入等于这个block的输出,那么更深层次的网络也就不应该出现比浅层网络性能更差的退化问题。所以fdfh等设计了一种skip connection结构,使得网络具有更强的identity mapping的能力,从而拓展了网络的深度,同时也提升了网络的性能。

3.3 VGG16

VGG16构成:13个卷积层,5个池化层,3个全连接层组成。13+3 = 16,所以叫VGG16。
5个池化层没有计入其中。是不做运算的,为什么后面不做运算,在后面章节做解释。一张图经过多层网络提取得到的特征。

3.4 VGG网络系列

3.5.1 卷积层怎么工作的

卷积立体图解

一副彩色图像有 RGB 三个通道,一个 (6×6) 大小的图像维度是(6×6×3),这里的 3 便对应三个通道(颜色RGB),对这样的图像进行卷积运算时,用到的过滤器的通道数必须与其一致,比如这里可以使用 一个 维度为 (3×3×3) 的过滤器,得到卷积后的图像维度为 (4×4),最后输出的维度为(4×4×2)。如果使用 (y) 个该维度的过滤器,那么卷积后的图像维度应为 (4×4×y)

3.5.2 卷积过程平面图解

卷积层计算:矩阵采用点乘方式,卷积核与滑动到的位置的每个元素与输入的矩阵单元相乘,每次乘积得到的结果后相加作为输出的特征矩阵的一个单元。

前后卷积形状大小变化

3.5.3 池化层是怎么运作的

池化层通常有两种方式,第一种是最大池化,第二种是平均池化,在VGG16中采用的是最大池化,池化层是不参与计算的,池化层作用是降维,每一移动一个步长取最大值也就是为什么VGG16 是等于13 + 3 ,而不是13 + 3 + 5。在VGG16采用的是2x2 的矩阵,移动步长为2.

3.5.4 全连接层工作原理

全连接可以看成是特殊的卷积层。全连接层的每一个节点都与上一层每个节点连接,是把前一层的输出特征都综合起来,所以该层的权值参数是最多的。例如在VGG16中,第一个全连接层FC1有4096个节点,上一层POOL2是77512 = 25088个节点。由于可以把全连接层看成卷积层的一个特例,比如VGG16,POOL2到FC1层是全连接的,把pool2的输出节点按向量排列,即有25088个维,每一维大小为1*1,卷积核可以看成num_filters = 4096,channal = 25088,kernel_size = 1,stride=1,no pad。

3.5.5 VGG16网络性能评估

VGG优点
VGGNet的结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)。
几个小滤波器(3x3)卷积层的组合比一个大滤波器(5x5或7x7)卷积层好:验证了通过不断加深网络结构可以提升性能。

VGG缺点
VGG耗费更多计算资源,并且使用了更多的参数(这里不是3x3卷积的锅),导致更多的内存占用(140M)。其中绝大多数的参数都是来自于第一个全连接层。VGG有3个全连接层 PS:据测试发现这些全连接层即使被去除,对于性能也没有什么影响,但这样就显著降低了参数数量。注:很多pretrained的方法就是使用VGG的model(主要是16和19),VGG相对其他的方法,参数空间很大,所以train一个vgg模型通常要花费更长的时间,所幸有公开的pretrained model(预训练模型)让我们很方便的使用。

3.6 神经网络深度增加的研究和发现

在计算机视觉里,网络的深度是实现网络好的效果的重要因素,输入特征的“等级”随增网络深度的加深而变高。然而在网络深度不断加深的情况下,梯度消失和/爆炸成为训练深层次的网络的障碍,导致导致网络无法收敛。虽然,归一初始化,各层输入归一化,使得可以收敛的网络的深度提升为原来的十倍。虽然网络收敛了,但网络却开始退化 (增加网络层数却导致更大的误差), 如下图所示:

3.6.1 Resnet网络

Resnet的残差单元:

ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,检测,分割,识别等领域里得到广泛的应用。它使用了一种连接方式叫做“shortcut connection”,顾名思义,shortcut就是“抄近道”的意思,下面是这个resnet的网络结构:

其中σ代表激活函数ReLU:

当需要对输入和输出维数进行变化时(如改变通道数目),可以在shortcut时对x做一个线性变换Ws,如下式:

3.6.2 Resnet残差单元

这两种结构分别针对ResNet34(左图)和ResNet50/101/152(右图),一般称整个结构为一个“building block” 。其中右图又称为“bottleneck design”,目的就是为了降低参数的数目,实际中,考虑计算的成本,对残差块做
了计算优化,即将两个3x3的卷积层替换为1x1 + 3x3 + 1x1,如右图所示。新结构中的中间3x3的卷积层首先在
一个降维1x1卷积层下减少了计算,然后在另一个1x1的卷积层下做了还原,既保持了精度又减少了计算量。
第一个1x1的卷积把256维channel降到64维,然后在最后通过1x1卷积恢复,

整体上用的参数数目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而不使用bottleneck的话就是两个3x3x256的卷积,参数数目: 3x3x256x256x2 = 1179648,差了16.94倍。对于常规ResNet,可以用于34层或者更少的网络中,对于Bottleneck Design的ResNet通常用于更深的如101这样的网络中,目的是减少计算和参数量。

3.6.3 Resnet各类模型卷积参数

3.6.4 Resnet50网络构成

Resnet50 网络中包含了 49 个卷积层、1个全连接层。如图下图所示,Resnet50网络结构可以分成七个部分,第一部分不包含残差块,主要对输入进行卷积、正则化、激活函数、最大池化的计算。第二、三、四、五部分结构都包含了残差块。在 Resnet50 网 络 结 构 中 , 残 差 块 都 有 三 层 卷 积 , 那 网 络 总 共 有1+3×(3+4+6+3)=49个卷积层,加上最后的全连接层总共是 50 层,这也是Resnet50 名称的由来。网络的输入为 224×224×3,经过前五部分的卷积计算,输出为 7×7×2048,池化层会将其转化成一个特征向量,最后分类器会对这个特征向量进行计算并输出类别概率。

3.6.5 Resnet50 卷积和池化

注意:当尺寸不被整除时,卷积向下取整,池化向上取整。

3.6.6 Resnet与普通神经网络对比(向前传播和误差向后传播)

前向过程,最后的结果表示直接的前向过程,连加的运算(考虑的残差元为一个单元,残差元的内部还是两层的连
乘),即从第l层可以直接到第L层,而传统的网络则是连乘运算,计算量明显不同。(从连乘到连加)

对于残差元来说,前向过程是线性的,而且后面的输入等于输入加上每一次的残差元的结果,而普通的网络,则为每一层卷积的连乘运算;残差网络的第一大特点,反向更新解决梯度消失的问题.

3.6.7 为什么残差网络能解决梯度消失

BP神经网络举例,其使用sigmiod函数作为激活函数,其导数下面第二个图,最大值是0.25。

在BP网络的误差方向传导过,由求导的链式法则,对激活函数求导,随着网络层数增加,由于连乘,即使取最大值,若干个0.25相乘慢慢趋近于0,到后面梯度基本消失,权值也不再变化,即使网络再多也学不到东西。

3.6.8 Resnet能解决梯度消失

Resnet误差向后传播过程:

可以看出反向传播的梯度由两项组成:

1.对xl 求导,梯度为1
2.对多层普通神经网络求导为:

即使普通神经网络求导趋近0,那两项相加,那和1相加不可能为0,所以误差也能够有效传播到很深的网络,所以使用残差网络结构能够避免梯度消失的问题。

3.6.9 Resnet网络性能评估

在过于深的网络在反传时容易发生梯度消失,一旦某一步开始导数小于1,此后继续反传,传到前面时,用float32位数字已经无法表示梯度的变化了,相当于梯度没有改变,也就是浅层的网络学不到东西了。这是网络太深反而效果下降的原因。加入ResNet中的shortcut结构之后,在反传时,每两个block之间不仅传递了梯度,还加上了求导之前的梯度,这相当于把每一个block中向前传递的梯度人为加大了,也就会减小梯度消失的可能性,从而能够很好的学习更深层的特征。

特征冗余:认为在正向卷积时,对每一层做卷积其实只提取了图像的一部分信息,这样一来,越到深层,原始图像信息的丢失越严重,而仅仅是对原始图像中的一小部分特征做提取。这显然会发生类似欠拟合的现象。加入shortcut结构,相当于在每个block中又加入了上一层图像的全部信息,一定程度上保留了更多的原始信息。
总的来说,由于每做一次卷积(包括对应的激活操作)都会浪费掉一些信息:比如卷积核参数的随机性(盲目性)、激活函数的抑制作用等等。这时,ResNet中的shortcut相当于把以前处理过的信息直接再拿到现在一并处理,起到了减损的效果。对于深层特征的学习效果还是比较优越的

3.7 Resnet50提取特征并实现图像相似性比对实操


这篇文章有没有帮到你呢,有的话欢迎关注点赞收藏哦,后续还有大波福利推送!!!!!!!!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。