【深度学习进阶】CNN-VGG

介绍

VGG网络是由牛津大学计算机视觉组(Visual Geometry Group, VGG)的研究人员设计的一系列深度卷积神经网络。这些网络在2014年的ImageNet大规模视觉识别挑战赛(ILSVRC-2014)中表现出色,虽然不是当年的冠军,但其简洁而有效的结构引起了学术界和工业界的广泛关注。

主要特点

  • 统一的小型滤波器:VGG网络使用了3x3的小型卷积核,并且在网络的不同层之间保持了这种一致性。这样的小型滤波器可以堆叠在一起以增加感受野,同时保留图像的空间分辨率。
  • 简单的架构:整个网络由一系列的卷积层和最大池化层构成,最后是几个全连接层。每经过一定数量的卷积层后就会有一个最大池化层用于降采样。
  • 深层结构:VGG网络有多个版本,其中最著名的是VGG16和VGG19,它们分别包含16层和19层可训练的权重层(包括卷积层和全连接层)。这使得它们能够学习到更复杂的特征表示。
  • 预训练模型:VGG网络的预训练模型被广泛应用于各种迁移学习任务中,因为它们能够在大型数据集如ImageNet上取得良好的泛化性能。

应用

VGG网络不仅因其优异的性能而在学术研究中得到应用,也因其简单易懂的架构成为教育和实践中的首选模型之一。此外,由于其强大的表征能力,VGG也被用来作为其他复杂网络的基准或组成部分。

VGG网络尽管不是最新的模型,但在多个领域和应用中仍然扮演着重要的角色。其简单而有效的架构,以及强大的特征提取能力,使得它在以下几种应用场景中依然具有重要价值:

图像分类

VGG网络最初就是为了解决大规模图像分类问题而设计的。由于其良好的性能和易于理解的结构,它仍然是图像分类任务中的一个可靠选择,特别是在资源有限或需要快速实现的情况下。

目标检测

在一些目标检测框架中,如R-CNN系列(Fast R-CNN, Faster R-CNN),VGG网络作为骨干网络来提取图像特征。虽然现在有更先进的主干网(如ResNet),但VGG仍然被用作教学示例或是在特定情况下使用。

迁移学习

VGG预训练模型广泛应用于迁移学习任务。对于小规模数据集或是计算资源受限的环境,利用预训练好的VGG模型进行微调可以显著提高模型的表现力,同时减少训练时间和计算成本。

风格迁移

VGG网络是风格迁移任务中最常用的特征提取器之一。通过比较内容图片与风格图片在不同层上的特征表示,可以生成既保留原图内容又融合新风格的艺术图像。这是因为它能够捕捉到不同层次的视觉信息,从低级边缘到高级语义概念。

人脸识别

尽管有更多专门针对人脸特征设计的深度学习模型,但VGG网络也被用于人脸识别系统中,尤其是那些基于传统方法构建的人脸识别解决方案,或者是需要快速原型开发的场景。

医学影像分析

医学图像通常具有较高的分辨率和复杂的结构,这使得VGG这样的深层卷积神经网络非常适合于处理这类数据。例如,在病理切片、X光片等医疗图像上进行病变区域的分类或分割。

视频动作识别

在视频处理任务中,VGG可以用来抽取每一帧的特征,然后结合时间维度的信息来进行动作分类或其他相关任务。

艺术创作和娱乐

除了风格迁移外,VGG还被应用于其他创意项目中,如将照片转换成绘画风格的作品,或是创建独特的视觉效果。

农业和自然科学研究

如案例所示,VGG被用于中草药识别、鸟类识别等任务,帮助科学家们更好地理解和保护自然资源。

缺点

尽管VGG网络有许多优点,但它也有一些缺点:

  • 计算资源消耗大:由于网络较深,参数量较大,导致VGG网络在训练时需要大量的计算资源和时间。
  • 内存占用高:特别是对于较大的输入图片尺寸,VGG网络可能会占用较多的GPU内存。

VGG详解

网络中的亮点

  • 通过堆叠多个3x3的卷积核来替代大尺度卷积核(减少所需参数)

论文中提到,可以通过堆叠两个3x3的卷 积核替代5x5的卷积核,堆叠三个3x3的 卷积核替代7x7的卷积核

拥有相同的感受野

使用7x7卷积核所需参数,与堆叠三个3x3卷积核所需参数(假设输入输出channel为C)

  • 7 x 7 x C x C = 49C²
  • 3 x 3 x C x C + 3 x 3 x C x C + 3 x 3 x C x C = 27C²

CNN感受野

在卷积神经网络中,决定某一层输出结果中一个元素所对应的输入层的区域大 小,被称作感受野(receptivefield) 。通俗的解释是,输出featuremap上的一个单元对应输入层上的区域大小。


outsize = (insize - Fsize+ 2P ) / S + 1

感受野计算公式:

F (i) = (F (i + 1) - 1) ´ Stride + Ksize

F(i)为第i层感受野, Stride为第i层的步距,Ksize为卷积核或池化核尺寸

VGG

  • conv的stride为1,padding为1
  • maxpool的size为2,stride为2
相关推荐
Allen2000012 分钟前
wow-agent---task2使用llama-index创建Agent
人工智能·llama
BoostingIsm16 分钟前
【环境安装】安装LLaMA-Factory
人工智能·深度学习
不去幼儿园1 小时前
【博客之星】2024年度个人成长、强化学习算法领域总结
人工智能·python·算法·机器学习·强化学习·个人总结
程序猿阿伟1 小时前
《AI与鸿蒙Next:建筑设计可视化的革新力量》
人工智能·华为·harmonyos
爱学习的uu1 小时前
KAGGLE竞赛实战2-捷信金融违约预测竞赛-part2-用lightgbm建立baseline
python·机器学习·金融
微学AI2 小时前
GPU算力平台|在GPU算力平台部署虚拟服装试穿工具OOTDiffusion的教程
人工智能·gpu算力·服装试穿
I_Am_Me_3 小时前
【专题三:穷举vs暴搜vs深搜vs回溯vs剪枝】46. 全排列
算法·机器学习·剪枝
董董灿是个攻城狮3 小时前
020:为什么 Resnet 如此重要?
人工智能·计算机视觉·cnn
AI布道Mr_Jin3 小时前
昇腾AI行业案例(三):基于 AI 图像处理的铝板缺陷检测
深度学习
汪子熙3 小时前
为什么 BERT 仅使用 Transformer 的编码器部分,而不使用解码器部分?
人工智能