《计算机视觉之PyTorch数字图像处理》第8-9章阅读心得之图像分类与图像分割
[复制链接]
本帖最后由 a54137621 于 2024-12-20 17:22 编辑
继续本次阅读计划的第三部分。我深入研读《计算机视觉之PyTorch数字图像处理》第8、9章,书中对经典卷积神经网络做了详细的剖析。
第8章阐释图像分类相关的内容。VGGNet、ResNet等经典CNN模型其诞生的背景,都基于“AI教母”李飞飞构建的ImageNet数据集以及以这个数据集发起的图像分类竞赛。以VGGNet的架构设计体现了深度学习的优雅哲学:用统一的3x3卷积核替代大尺寸卷积,通过堆叠实现更大的感受野。这种设计既减少了参数量,又加深了网络深度。书中给出的PyTorch实现巧妙利用了nn.Sequential容器,将卷积层、批归一化层、ReLU激活函数打包成基本单元。而ResNet部分详细讲解了残差连接的数学原理,short-cut分支通过跨层连接缓解了梯度消失问题。以我过往用ResNet50做CIFAR10的实践经验来看,能在测试集达到97%、98%左右的准确率,不过如果是CIFAR100,分类数明显增大后,整体的准确率也就在84%、85%左右了。
迁移学习小节揭示了预训练模型的强大潜力。finetune策略有三种:完全冻结特征提取层只训练分类头部、解冻高层block允许微调、全部解冻自由训练。每种策略都配备的详细的学习率设置都各有不同:已冻结层采用1e-3以下的小学习率防止破坏预训练特征,新增层使用1e-2数量级的大学习率加速收敛。在可视化预训练权重时,我们可以用t-SNE展示特征分布,低层特征呈现局部纹理模式,高层特征则形成了语义聚类。这种层次化的特征表达解释了为什么迁移学习如此有效。在参数量与计算力受限的场景下,推荐使用MobileNet或ShuffleNet这样的轻量级骨干网络,配合知识蒸馏技术压缩模型体积。实验表明,这种方案能在CIFAR-10数据集上实现95%以上的准确率,而模型大小只有VGG的1/10。
第9章是对图像分割的讲解。FCN网络通过反卷积层实现像素级预测,但上采样过程中容易丢失细节信息。UNet架构通过编码器-解码器结构配合跳跃连接,完美解决了这个问题。作者详细分析了跳跃连接的实现细节:需要注意特征图尺寸的对齐,必要时使用crop操作裁剪到相同大小。在损失函数设计上,传统交叉熵容易受类别不平衡影响。推荐使用focal loss,通过调节gamma参数(建议值2.0)自适应降低易分样本的权重。这个改进在医学图像分割数据集上将mIoU提升了5个百分点。分割任务的评估也很讲究,书中提出了几个重要的指标:混淆矩阵全面体现模型性能,pixelAcc衡量整体准确率,meanIoU评估分割质量。此外还有一个书中没有提到的FWIoU,这个可以用来考虑类别频率加权。建议在验证集上同时监控这几个不同的指标,防止模型过度偏向主导类别。
整体上来说这两章节细致讲解了图像分类、图像分割(可以看做一种特殊的图像分类——逐像素的分类),对于相应的从数据集准备、数据预处理、模型初始化、定义损失函数、训练和验证、测试和评估都做了全方位的介绍,让读者对建模的全流程也有一个清晰的认识。
附第8章部分习题的解答如下,仅供参考:
2. 详细说明 VGGNet 图像分类网络的结构
VGGNet是一种经典的卷积神经网络,因其深度和简单的结构而闻名。其主要特点是通过多个3x3的小卷积核和2x2的最大池化层交替堆叠来增加网络深度。VGGNet结构的主要亮点是:
- 每层的卷积核均为3x3,既能够捕捉局部特征,又减少了计算复杂度。
- 池化层用于逐步减小特征图的尺寸,同时保留重要特征,避免信息丢失。
- 网络最后通过几个全连接层和Softmax输出,用于分类任务。
这种深层网络设计增强了模型的表征能力,但也带来了计算量大、参数多的问题。
3. 详细说明 ResNet 图像分类网络的结构,解释残差连接是如何实现的,其对分类深度的提升有什么功效
ResNet是通过引入“残差连接”来解决深层网络中的梯度消失和退化问题的一种网络结构。其核心思想是让每一层学习与输入之间的“残差”,而不是直接学习目标映射。
- 残差连接通过“快捷路径”实现,具体为:跳过若干层,将输入直接加到输出上,即 y = F(x) + x ,其中 F(x)是通过卷积和激活函数学到的残差。
- 这种设计使得深层网络更容易训练,因为即使某些层的参数未能很好地学习,快捷路径至少可以保证梯度顺畅地传递到前面的层。
- 实际证明,ResNet能够显著提高网络深度(例如ResNet-50、ResNet-101),在分类任务中获得更高的准确率,同时减少过拟合问题。
附第9章 部分习题的解答如下,仅供参考:
2. 详细说明 FCN 图像分割神经网络的结构
全卷积网络是第一种端到端的图像分割网络。其核心思想是将全连接层替换为卷积层,以保留输入图像的空间信息。FCN主要包含以下部分:
- 编码器:通常使用预训练的分类网络(如VGG、ResNet)提取特征。
- 解码器:通过反卷积或上采样操作将特征图恢复到与输入图像相同的大小,从而生成像素级预测。
FCN的优势在于其端到端的训练方式以及较好的语义理解能力,但其输出的分割图可能不够平滑,容易丢失细节。
3. 详细说明 UNet 图像分割神经网络的结构
UNet是一种专为医学图像分割设计的网络结构,因其U型结构而得名。其主要特点是:
- 编码器:逐步下采样提取高层语义特征。
- 解码器:逐步上采样恢复空间分辨率。
- 跳跃连接:通过连接编码器和解码器中相应的层,融合高层语义信息和低层细节信息,增强分割精度。
UNet因其高效的特征融合能力,常用于精细分割任务,如医学影像分析。
4. 训练一个图像分割神经网络,并说明其训练过程
训练图像分割网络的步骤类似于分类任务,但针对分割特点进行了调整:
- 数据准备:包括图像和分割掩膜的加载与预处理。
- 损失函数:常用交叉熵损失或Dice系数,用于衡量像素级预测与真实掩膜的差异。
- 数据增强:随机裁剪、旋转、翻转等方式增强训练样本。
- 网络训练:通过小批量梯度下降优化网络参数,迭代至损失函数最小。
整个过程需要较大的显存和计算能力,但通过合适的优化策略和模型选择,可以实现较高的分割精度。
|