CNN在图像分类和目标检测的应用


从目前所学习到的东西来看,CNN在图像等领域主要有两大方面的应用,第一是图像的分类,第二是图像目标的检测。本文主要是做一个概述性的学习总结,每个网络的详细细节没具体阐述。

基于CNN图像分类算法

LeNet(1998)

由Yann LeCun发表的论文《Gradient based learning applied to document-recognition》,该网络主要由卷积层、池化层和全连接层构成,下图表示了其原理。

AlexNet(2012)

AlexNet是2012年ILSVRC(ImageNet Large Scale Visual Recognition Challenge)冠军, 由Hinton和他的学生Alex Krizhevsky设计,此后CNN开始走进人们的视野,下图所示为其网络结构。
其主要特点如下:
(1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。
(2)训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。
(3)在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。
(4)提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。
(5)使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算。AlexNet使用了两块GTX 580 GPU进行训练,单个GTX 580只有3GB显存,这限制了可训练的网络的最大规模。因此作者将AlexNet分布在两个GPU上,在每个GPU的显存中储存一半的神经元的参数。因为GPU之间通信方便,可以互相访问显存,而不需要通过主机内存,所以同时使用多块GPU也是非常高效的。同时,AlexNet的设计让GPU之间的通信只在网络的某些层进行,控制了通信的性能损耗。 
(6)数据增强,随机地从256256的原始图像中截取224224大小的区域(以及水平翻转的镜像),相当于增加了2*(256-224)^2=2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值。同时,AlexNet论文中提到了会对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,这个Trick可以让错误率再下降1%。

VGGNet

ILSVRC 2014的亚军,VGG网络作者尝试了多种结构,较常用的有VGG16和VGG19(VGG16网络更简单,性能也可以,应用最广泛)。
VGG16的基本架构为conv12 (64) -> pool1 -> conv22(128) -> pool2 -> conv33(256) -> pool3 -> conv43 (512) -> pool4 -> conv5*3 (512) -> pool5 -> fc6 (4096) -> fc7 (4096) -> fc8 (1000) -> softmax。 *3代表重复3次。

VGGNet特点:

  • 结构简单,只有3x3,stride 1,pad 1的卷积和2x2,stride 2的max pooling,每过一次pooling,feature map大小降低一半。
  • 参数量大
  • 合适的网络初始化
  • 使用batch normalization
  • FC7提取的特征对其他任务有帮助。FC7始于AlexNet,表示某一全连接层,该层提取特征用于分类任务。

GoogLeNet

GoogLeNet是ILSVRC2014冠军,使用average pooling代替了最耗参数(相应的也最耗时间)的全连接层,同时使用inception模块来代替简单的卷积层(inception的名字来源于盗梦空间中的we need to go deeper的梗);另外,使用1x1的卷积进行了降维。
ResNet
ResNet是ILSVRC 2015的冠军。ResNet最大的贡献在于解决了深层网络难以训练的问题(反向传播梯度弥散),它的网络深度达到了152层!
在这里插入图片描述
ResNet的特点:

  • 使用BN(Batch Normalization)layer在每个conv layer后
  • 每个residual block包含两个3x3 conv layer
  • 周期性的使用stride 2 pooling降低维度,相当于除2
  • 最耗时的FC层使用pool代替
  • SGD + Momentum 0.9
  • learning rate 0.1, divided by 10 when validation error plateaus
  • 0
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
像匹配是指在两幅或多幅像中,找出相同或相似的目标物体或场景。可以分为基于特征的匹配和基于深度学习的匹配。 基于特征的匹配主要包括以下几种方法: 1. SIFT (Scale-invariant feature transform):SIFT算法通过检测像中的关键点,并提取这些关键点的局部特征,然后通过计算这些特征的相似度来进行像匹配。 2. SURF (Speeded Up Robust Features):SURF算法是SIFT算法的改进版,通过使用积分像的方法来加速特征点检测和特征描述子的计算。 3. ORB (Oriented FAST and Rotated BRIEF):ORB算法结合了FAST角点检测和BRIEF描述子,具有速度快、对像旋转和缩放具有不变性等优点。 4. BRISK (Binary Robust Invariant Scalable Keypoints):BRISK算法是ORB算法的改进版,它使用更加稳健的描述子,并加强了对旋转和缩放的不变性。 基于深度学习的匹配主要包括以下几种方法: 1. Siamese网络:Siamese网络是一种双塔结构的网络,通过将两幅像输入到两个相同的网络结构中,输出两个特征向量,然后通过计算这两个特征向量的距离来进行像匹配。 2. Triplet网络:Triplet网络是一种三塔结构的网络,通过将三幅像输入到三个相同的网络结构中,输出三个特征向量,然后通过计算正样本和负样本的距离差值来进行像匹配。 3. CNN特征匹配:基于CNN像匹配方法,通过使用预训练的卷积神经网络提取像的特征向量,然后通过计算这些特征向量的相似度来进行像匹配。这种方法可以使用端到端的方法进行训练,从而学习到更加高效的特征表达方式。 总体来说,基于特征的匹配方法适用于小规模数据集和轻量级任务,而基于深度学习的匹配方法适用于大规模数据集和复杂任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值