百度网站审核期时间,做教育app的网站有哪些内容,怎样做网站视频,宏杰zkeys网站模板《深度学习实战》第2集#xff1a;卷积神经网络#xff08;CNN#xff09;与图像分类 引言
卷积神经网络#xff08;Convolutional Neural Network, CNN#xff09;是深度学习在计算机视觉领域的核心工具。从早期的 LeNet 到现代的 ResNet 和 Vision Transformer#xf…《深度学习实战》第2集卷积神经网络CNN与图像分类 引言
卷积神经网络Convolutional Neural Network, CNN是深度学习在计算机视觉领域的核心工具。从早期的 LeNet 到现代的 ResNet 和 Vision TransformerCNN 的发展推动了图像分类、目标检测和语义分割等任务的突破。在本集中我们将深入探讨 CNN 的基本原理回顾经典架构的发展历程并通过实战项目使用 ResNet 实现 CIFAR-10 图像分类任务。最后我们还将探讨大模型中的视觉架构如 Vision Transformer (ViT)展望未来的技术趋势。 一、卷积神经网络的基本原理
1.1 卷积层
卷积层是 CNN 的核心组件负责提取图像的空间特征。卷积操作通过对输入图像应用滤波器Filter生成特征图Feature Map。
作用捕捉局部特征如边缘、纹理。公式
卷积层示意图
图 1: 卷积操作示意图
1.2 池化层
池化层用于降维减少计算量并增强模型的鲁棒性。常见的池化操作包括
最大池化Max Pooling取局部区域的最大值。平均池化Average Pooling取局部区域的平均值。
池化层示意图
图 2: 最大池化操作示意图
1.3 批归一化Batch Normalization
批归一化通过对每一批数据进行标准化处理加速训练并提高模型稳定性。
作用缓解梯度消失问题提升收敛速度。公式 二、经典 CNN 架构
2.1 LeNet
LeNet 是最早的 CNN 架构之一由 Yann LeCun 提出主要用于手写数字识别。
特点包含卷积层、池化层和全连接层。应用MNIST 数据集。
LeNet 结构图
图 3: LeNet 架构图
2.2 AlexNet
AlexNet 在 2012 年 ImageNet 竞赛中取得突破性成绩标志着深度学习时代的到来。
特点引入 ReLU 激活函数、Dropout 和 GPU 加速。创新点首次使用多层卷积网络。
AlexNet 结构图
图 4: AlexNet 架构图
2.3 VGG
VGG 以简单的结构和强大的性能著称通过堆叠多个 3x3 卷积核实现深层网络。
特点统一使用 3x3 卷积核参数量较大。应用ImageNet、迁移学习。
VGG 结构图
图 5: VGG 架构图
2.4 ResNet
ResNet 引入残差连接Residual Connection解决了深层网络中的梯度消失问题。
特点通过跳跃连接Skip Connection实现信息流动。创新点支持训练超过 100 层的网络。
ResNet 结构图
图 6: ResNet 残差块结构图 三、实战项目使用 ResNet 实现 CIFAR-10 图像分类
3.1 数据集介绍
CIFAR-10 数据集包含 10 类彩色图像如飞机、汽车、猫等每类 6,000 张图片其中 50,000 张用于训练10,000 张用于测试。
CIFAR-10 样例
图 7: CIFAR-10 数据集样例
3.2 使用 PyTorch 实现
以下代码展示了如何使用预训练的 ResNet 模型对 CIFAR-10 进行微调。
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms, models# 数据预处理
transform transforms.Compose([transforms.Resize(224),transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])train_dataset datasets.CIFAR10(root./data, trainTrue, transformtransform, downloadTrue)
test_dataset datasets.CIFAR10(root./data, trainFalse, transformtransform)train_loader torch.utils.data.DataLoader(train_dataset, batch_size64, shuffleTrue)
test_loader torch.utils.data.DataLoader(test_dataset, batch_size64, shuffleFalse)# 加载预训练的 ResNet 模型
model models.resnet18(pretrainedTrue)
num_ftrs model.fc.in_features
model.fc nn.Linear(num_ftrs, 10) # 修改最后一层以适应 CIFAR-10 的 10 类# 定义损失函数和优化器
criterion nn.CrossEntropyLoss()
optimizer optim.Adam(model.parameters(), lr0.001)# 训练模型
device torch.device(cuda if torch.cuda.is_available() else cpu)
model.to(device)for epoch in range(5):model.train()running_loss 0.0for images, labels in train_loader:images, labels images.to(device), labels.to(device)optimizer.zero_grad()outputs model(images)loss criterion(outputs, labels)loss.backward()optimizer.step()running_loss loss.item()print(fEpoch {epoch1}, Loss: {running_loss/len(train_loader):.4f})# 测试模型
model.eval()
correct 0
total 0
with torch.no_grad():for images, labels in test_loader:images, labels images.to(device), labels.to(device)outputs model(images)_, predicted torch.max(outputs, 1)total labels.size(0)correct (predicted labels).sum().item()print(fTest Accuracy: {correct / total:.4f})程序运行后输出:
Epoch 1, Loss: 0.5615
Epoch 2, Loss: 0.3187
Epoch 3, Loss: 0.2207
Epoch 4, Loss: 0.1634
Epoch 5, Loss: 0.1233
Test Accuracy: 0.9017可以看到五个批次训练后最终的精确率是90.17%.
模型选择为什么选择 PyTorch 而不是 TensorFlow
在本实战项目中我们选择了 PyTorch 作为实现 ResNet 的框架。以下是详细的原因分析和对比
1. 动态计算图 vs 静态计算图
PyTorch 使用动态计算图Dynamic Computation Graph允许开发者在运行时动态构建网络结构。这种灵活性非常适合研究和实验尤其是在需要调试或修改模型结构时。TensorFlow 在早期版本中主要依赖静态计算图Static Computation Graph虽然从 TensorFlow 2.x 开始引入了 Eager Execution 模式以支持动态图但其底层仍保留了静态图的复杂性可能增加学习成本。
优势PyTorch 的动态图设计使得代码更加直观易于理解和调试特别适合初学者和研究人员。 2. 社区与生态系统
PyTorch 的社区活跃度近年来迅速增长尤其在学术界备受青睐。许多最新的深度学习研究成果如 Vision Transformer、Diffusion Models都优先提供 PyTorch 实现。TensorFlow 的生态系统更加成熟特别是在工业部署领域具有明显优势但在研究领域的创新速度相对较慢。
优势对于本项目中的图像分类任务PyTorch 提供了更丰富的预训练模型如 torchvision.models并且社区资源丰富便于快速实现和验证。 3. 易用性与代码简洁性
PyTorch 的 API 设计更加 Pythonic代码风格接近原生 Python降低了学习门槛。例如在定义模型时PyTorch 使用类继承的方式nn.Module逻辑清晰且易于扩展。TensorFlow 的 Keras API 虽然提供了高层次封装但在某些场景下可能显得不够灵活尤其是当需要自定义层或损失函数时。
优势PyTorch 的代码更加简洁直观适合快速原型开发和教学。 4. 性能与硬件支持
PyTorch 和 TensorFlow 在性能上基本相当但在 GPU 加速方面PyTorch 对 CUDA 的支持更为直接开发者可以轻松利用 GPU 进行加速。TensorFlow 提供了对 TPU 的原生支持这在大规模分布式训练中是一个显著优势但对于中小型项目如 CIFAR-10 分类TPU 的优势并不明显。
优势对于本项目PyTorch 的 GPU 支持已经足够满足需求且配置简单。 5. 可视化工具
TensorFlow 提供了强大的可视化工具 TensorBoard能够实时监控训练过程、绘制损失曲线和可视化模型结构。PyTorch 的可视化工具相对较少但可以通过第三方库如 TensorBoardX 或内置的 torch.utils.tensorboard实现类似功能。
劣势PyTorch 在可视化方面稍逊于 TensorFlow但对于本项目来说这一差距并不影响核心任务的完成。 综合以上分析我们选择 PyTorch 的主要原因在于其动态计算图的灵活性、Pythonic 的代码风格以及丰富的研究社区支持。尽管 TensorFlow 在工业部署和分布式训练方面具有优势但对于本项目的图像分类任务PyTorch 更加适合快速实现和迭代。如果你对 TensorFlow 的实现感兴趣也可以尝试使用 Keras API 构建类似的 ResNet 模型体验两种框架的不同之处 四、前沿关联大模型中的视觉架构Vision Transformer, ViT
随着 Transformer 在自然语言处理中的成功研究者将其引入计算机视觉领域提出了 Vision Transformer (ViT)。
特点 将图像分割为固定大小的 Patch作为输入序列。使用自注意力机制捕捉全局依赖关系。 优势 在大规模数据集上表现优异。可扩展性强适合超大规模模型。
ViT 结构图
图 8: Vision Transformer 架构图 总结
本集详细介绍了卷积神经网络的基本原理和经典架构并通过实战项目展示了如何使用 ResNet 实现 CIFAR-10 图像分类任务。最后我们探讨了 Vision Transformer 的前沿技术展望了计算机视觉的未来方向。
希望这篇文章能为你提供清晰的学习路径如果你有任何问题或想法欢迎在评论区留言讨论。 附图
图 1: 卷积层示意图图 2: 池化层示意图图 3: LeNet 架构图图 4: AlexNet 架构图图 5: VGG 架构图图 6: ResNet 残差块结构图图 7: CIFAR-10 数据集样例图 8: Vision Transformer 架构图 下集预告第3集将聚焦于循环神经网络RNN与序列建模任务带你深入了解 LSTM 和 GRU 的改进及其在时间序列预测中的应用。