【深度学习进阶】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
相关推荐
量子-Alex4 分钟前
【遥感图像分类】【综述】遥感影像分类:全面综述与应用
人工智能·分类·数据挖掘
张申傲6 分钟前
多模态(3):实战 GPT-4o 视频理解
人工智能·chatgpt·aigc·多模态
阡之尘埃8 分钟前
Python数据分析案例73——基于多种异常值监测算法探查内幕交易信息
人工智能·python·机器学习·数据分析·异常检测·无监督学习
猫先生Mr.Mao16 分钟前
2025年3月AGI技术月评|技术突破重构数字世界底层逻辑
人工智能·aigc·大语言模型·agi·多模态·行业洞察
睿创咨询34 分钟前
科技与商业动态简报
人工智能·科技·ipd·商业
科技在线34 分钟前
科技赋能建筑新未来:中建海龙模块化建筑产品入选中国建筑首批产业化推广产品
大数据·人工智能
HED1 小时前
用扣子快速手撸人生中第一个AI智能应用!
前端·人工智能
极小狐1 小时前
极狐GitLab 如何 cherry-pick 变更?
人工智能·git·机器学习·gitlab
小宋加油啊1 小时前
深度学习小记(包括pytorch 还有一些神经网络架构)
pytorch·深度学习·神经网络
沛沛老爹1 小时前
从线性到非线性:简单聊聊神经网络的常见三大激活函数
人工智能·深度学习·神经网络·激活函数·relu·sigmoid·tanh