【深度学习进阶】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
相关推荐
风铃喵游28 分钟前
让大模型调用MCP服务变得超级简单
前端·人工智能
旷世奇才李先生32 分钟前
Pillow 安装使用教程
深度学习·microsoft·pillow
booooooty1 小时前
基于Spring AI Alibaba的多智能体RAG应用
java·人工智能·spring·多智能体·rag·spring ai·ai alibaba
PyAIExplorer1 小时前
基于 OpenCV 的图像 ROI 切割实现
人工智能·opencv·计算机视觉
风口猪炒股指标1 小时前
技术分析、超短线打板模式与情绪周期理论,在市场共识的形成、分歧、瓦解过程中缘起性空的理解
人工智能·博弈论·群体博弈·人生哲学·自我引导觉醒
ai_xiaogui2 小时前
一键部署AI工具!用AIStarter快速安装ComfyUI与Stable Diffusion
人工智能·stable diffusion·部署ai工具·ai应用市场教程·sd快速部署·comfyui一键安装
聚客AI3 小时前
Embedding进化论:从Word2Vec到OpenAI三代模型技术跃迁
人工智能·llm·掘金·日新计划
weixin_387545643 小时前
深入解析 AI Gateway:新一代智能流量控制中枢
人工智能·gateway
聽雨2373 小时前
03每日简报20250705
人工智能·社交电子·娱乐·传媒·媒体
二川bro4 小时前
飞算智造JavaAI:智能编程革命——AI重构Java开发新范式
java·人工智能·重构