一、CNN
CNN(Convolutional Neural Network,卷积神经网络)是专用于处理网格化数据(如图像、音频频谱图)的深度学习模型,其核心思想是通过局部感知和权重共享机制显著降低参数量,同时提升特征提取能力。
模型结构
CNN主要由卷积层、池化层和全连接层组成。
- 卷积层:提取局部特征(如边缘、纹理)。
- 池化层(如Max Pooling):降低特征图维度,增强鲁棒性。
- 全连接层:用于分类或回归。
工作原理
卷积层通过卷积核在输入数据上进行卷积运算,提取局部特征;池化层则对特征图进行下采样,降低特征维度,同时保留主要特征;全连接层将特征图展开为一维向量,并进行分类或回归计算。CNN利用卷积操作实现局部连接和权重共享,能够自动学习数据中的空间特征。
优点
- 高效处理空间数据(图像、视频)。
- 参数共享减少过拟合风险。
缺点
对序列数据(如文本、时序数据)处理能力较弱。
经典模型
- 图像分类(LeNet、ResNet、VGG)、
- 目标检测(YOLO)
- 图像分割(U-Net)
例如:LeNet是最早的卷积神经网络之一。1998年,Yan LeCun第一次将LeNet卷积神经网络应用到图像分类上,在手写数字识别任务中取得了巨大成功。
二、开发框架
PyTorch(Meta)
特点:
- 动态计算图:灵活支持自定义 CNN 结构(如残差连接、多尺度卷积)。
- 研究友好:社区资源丰富,适合论文复现和前沿模型开发(如 Vision Transformers)。
- 混合精度训练:通过
torch.cuda.amp
加速训练,减少显存占用。 - 部署灵活:PyTorch Mobile 支持移动端推理,ONNX 导出兼容多平台。
TensorFlow(Google)
特点:
- Keras 集成:提供高层 API(如
tf.keras.layers.Conv2D
),简化 CNN 的快速搭建。 - 端到端支持:支持数据预处理、模型构建、训练、评估和部署。
- 硬件优化:自动利用 GPU/TPU 加速,支持分布式训练。
- 生态完善:TensorBoard 可视化、TFX 模型流水线、TensorFlow Lite 移动端部署。