卷积神经网络CNN-VGG巅峰之作详解 VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION

卷积神经网络CNN-VGG巅峰之作详解

VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION

2025年3月1日 毛姝垚

目录

一、VGG 网络的优势

二、纯 CNN 网络结构

三、softmax 层在分类中的关键作用

四、softmax 层的计算步骤

五、网络结构的详细解释

六、卷积层和池化层的区别

七、VGG16和VGG19

八、医学影像更倾向于使用纯 CNN 的原因


深度学习 - 坚果云 - 云盘|网盘|企业网盘|同步|备份|无限空间|免费网络硬盘|企业云盘

一、VGG 网络的优势

VGG 的优势:

它通过使用小卷积核实现了较深的网络结构

同时参数量控制在了约 1 亿个左右,并不算特别庞大。

二、纯 CNN 网络结构

VGG 常见的有两种类型,分别是 16 层和 19 层,这两种类型在实际应用中最为广泛。

只有纯的CNN网络结构:

从第1层~第16层,通过多层卷积、维度激活、最大池化层、全连接层和 softmax ,逐步提取特征并进行分类。

三、softmax 层在分类中的关键作用

它将神经网络的输出转换概率分布,从而确定输入数据属于各个类别概率

具体来说,softmax 层将神经网络最后一层的输出值(通常是任意实数)映射到 [0, 1] 区间内,并且所有输出值的总和为 1,这使得它们可以被解释为概率。通过这种方式,softmax 层能够提供一个清晰的分类结果,即输入数据属于各个类别的相对可能性。这种概率化的输出不仅有助于模型的解释性,还使得模型在多分类任务中能够更有效地进行训练和优化。

四、softmax 层的计算步骤

假设神经网络的最后一层输出为一个向量 z=[z1​,z2​,…,zK​],其中 K类别数softmax 函数将这个向量转换为一个概率分布 p=[p1​,p2​,…,pK​],其中每个 pi​ 表示输入数据属于第 i 个类别的概率

计算步骤如下:

  1. 计算指数:对每个输出 zi​ 计算其指数 ezi​。这一步确保所有输出值都是正数。

  1. 计算总和:计算所有指数的总和 S

  1. 计算概率:对每个 zi​,计算其对应的概率 pi​:

概率分布 p 满足以下条件:

  • 每个概率 pi​ 都在 [0, 1] 区间内。
  • 所有概率的总和为 1

通过这种方式,softmax 层能够将神经网络的输出转换为一个概率分布,从而确定输入数据属于各个类别的概率。

五、网络结构的详细解释

  1. 输入层:
    • 所有网络配置的输入都是 224 × 224 的 RGB 图像。
    • 第一层是卷积层,卷积核大小为 3×3,输出通道数为 64
  2. 卷积层 (conv):
    • 每个卷积层后面通常跟着 ReLU 激活函数
    • 卷积层的输出通道数逐渐增加,从 64 到 128,再到 256 和 512。
  3. 最大池化层 (maxpool):
    • 每个卷积块后面跟着一个最大池化层,用于下采样减少特征图的尺寸
  4. 全连接层 (FC):
    • 网络的最后几层是全连接层,用于分类。
    • 第一个全连接层有 4096 个神经元,第二个全连接层也有 4096 个神经元。
    • 最后一个全连接层有 1000 个神经元,对应 ImageNet 数据集的 1000 个类别。
  5. softmax :
    • 最后一个全连接层的输出通过 softmax 函数,将输出转换为概率分布,用于分类。

参数数量

  • A 和 A-LRN: 133 百万参数
  • B: 133 百万参数
  • C: 134 百万参数
  • D: 138 百万参数
  • E: 144 百万参数

总结

这张图片展示了不同配置的卷积神经网络的结构和参数数量。通过增加网络的深度(层数),可以提高模型的表达能力和分类性能。不同的网络配置在参数数量上有所不同,但都保持了类似的结构,包括卷积层、最大池化层、全连接层和 softmax 层。

六、卷积层和池化层的区别

在卷积神经网络(CNN)中,卷积层和池化层是两个重要的组成部分,它们在功能和作用上有明显的区别:

卷积层(Convolutional Layer)

  1. 功能:
    • 特征提取:卷积层通过使用卷积核(filter)在输入数据上滑动,提取局部特征。每个卷积核可以检测输入数据中的特定模式,如边缘、纹理等。
    • 参数共享:卷积核在输入数据上滑动时,共享相同的参数,这大大减少了需要学习的参数数量,提高了模型的效率。
  2. 操作:
    • 卷积操作:卷积层通过卷积操作将输入数据转换为特征图(feature map)。卷积操作的数学公式为:

其中,I 是输入数据,K 是卷积核,k 是卷积核的大小,(i,j) 是特征图的位置。

  1. 参数:
    • 卷积核数量:卷积层中可以有多个卷积核,每个卷积核提取不同的特征。卷积核的数量决定了输出特征图的数量。
    • 卷积核大小:卷积核的大小通常较小,如 3×3、5×5 等,以捕获局部特征。

池化层(Pooling Layer)

  1. 功能:
    • 降维:池化层通过下采样操作减少特征图的尺寸,从而减少计算量和参数数量,防止过拟合。
    • 增强鲁棒性:池化操作可以增强模型对输入数据的小变化的鲁棒性,使其对位置变化不那么敏感。
  2. 操作:
    • 最大池化(Max Pooling):在每个池化窗口内取最大值作为输出。最大池化的数学公式为:

    • 平均池化(Average Pooling):在每个池化窗口内取平均值作为输出。平均池化的数学公式为:

           

  1. 参数:
    • 池化窗口大小:池化窗口的大小通常为 2×2 或 3×3。
    • 步长:池化窗口在特征图上滑动的步长,通常为 2。

总结

  • 卷积层:主要用于提取输入数据中的局部特征,通过卷积操作生成特征图。卷积层的参数包括卷积核的数量和大小。
  • 池化层:主要用于减少特征图的尺寸,通过下采样操作降维,增强模型的鲁棒性。池化层的参数包括池化窗口的大小和步长。

通过交替使用卷积层和池化层,CNN 能够有效地提取和压缩输入数据中的特征,从而提高模型的性能和效率。

七、VGG16和VGG19

from tensorflow.keras.applications.vgg import VGG16

from tensorflow.keras.preprocessing import image

from tensorflow.keras.applications.vgg16 import preprocess_input, decode_predictions

import numpy as np

# 加载预训练的 VGG16 模型

model = VGG16(include_top=True, weights='imagenet')

# 加载并预处理图像

img_path = 'path_to_your_image.jpg'

img = image.load_img(img_path, target_size=(224, 224))

x = image.img_to_array(img)

x = np.expand_dims(x, axis=0)

x = preprocess_input(x)

# 使用模型进行预测

preds = model.predict(x)

decoded_preds = decode_predictions(preds, top=5)

# 输出预测结果

print('Predicted:', decoded_preds)

加载一个预训练的 VGG16 模型,并将其用于图像分类任务。VGG16 是一个深度卷积神经网络,具有 16 个权重层,广泛用于图像分类任务。

通过设置 include_top=True 和 weights='imagenet',我们可以直接使用在 ImageNet 数据集上预训练的模型,从而节省大量的训练时间和计算资源。

八、医学影像更倾向于使用纯 CNN 的原因

1. 局部特征提取

CNN 的核心组件包括卷积层和池化层,这些层能够有效地提取图像的局部特征。医学影像通常包含大量的局部特征,如边缘、纹理等,这些特征对于诊断和分析至关重要。CNN 通过卷积操作可以自动学习这些局部特征,而无需手动设计特征提取器。

2. 参数共享

CNN 中的卷积核在输入数据上滑动时共享相同的参数,这大大减少了需要学习的参数数量,从而降低了计算成本。这种参数共享机制使得 CNN 在处理大规模医学影像数据时更加高效。

3. 端到端学习

CNN 可以通过深度学习算法进行端到端训练,使得模型的各个层次之间可以自动学习出有效的特征表示。这种端到端的学习方式减少了对中间特征提取步骤的依赖,使得模型更加简洁和高效。

4. 鲁棒性

CNN 具有位移不变性,能够识别图像中的各种形状和结构,即使这些结构在图像中的位置发生变化。这种鲁棒性对于医学影像分析非常重要,因为医学影像中的病灶或组织结构可能出现在不同的位置。

5. 高效的特征提取和合并能力

在医学图像分割任务中,如 U-Net 架构所示,CNN 能够高效地提取和合并特征,从而实现对复杂结构的精确分割。这种能力在医学影像分析中尤为重要,因为医学影像通常包含复杂的解剖结构和病灶。

6. 处理多模态影像

CNN 能够处理多模态的医学影像数据,如 CT、MRI、X 光等,并通过融合不同类型的信息进行综合分析。这种多模态处理能力为医生提供了全面的诊断依据和个性化治疗方案。

7. 实际应用案例

在实际应用中,CNN 已经在医学影像分析中取得了显著成果。例如,在肺癌检测中,CNN 可以识别出肺部 CT 图像中的微小结节,辅助医生进行早期诊断。此外,CNN 还应用于阿尔茨海默病、视网膜疾病等多种疾病的分类诊断中,显著提高了诊断的准确性和效率。

8. 数据驱动的学习方式

CNN 的多层结构使其能够作为非线性函数逼近器,在多个抽象层次上学习输入数据的不同表征。这种数据驱动的学习方式非常适合处理大规模和复杂的医学影像数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值