深度神经网络在这里特指CNN这种计算模型,它通过多层的处理,可以学习到数据在不同层级上的抽象表征。该部分主要介绍搭建、训练深度网络的实现细节与技巧。包括以下四部分:
- 介绍深度学习中必要的数据扩充和数据预处理
- 网络参数初始化的细节技巧
- 如何设计网络结构并进行微调
- 使用正则化防止过拟合的发生
一、数据扩增
因为深度网络需要在大规模的训练图像上来满足性能,所以当原始图像中的训练数据集规模不够多时,较好的办法是通过扩增数据来提升模型性能。常见的数据扩增方法有:
- 水平翻转图像
- 随机剪裁
- 颜色抖动
- 将这几种处理过程任意组合,如旋转并对其缩放等
完成数据扩增后,会得到大量由原始图像和其随机剪裁构成的训练样本集,但此时还需要对这些图像做预处理。最基本的预处理方法也就是下面即将提到的白化处理。
此外,样本不均衡也需要注意。若基于类别不均衡数据训练深度卷积网络,会导致严重的性能问题。解决办法:
- 最简单的解决办法是使用上采样或者下采样平衡数据类别。
- 基于特殊的图像剪裁,将原本类别较少的图片通过剪裁得到新图像的方法,解决类别不平衡
- 使用参数微调(Fine-Tuning)策略,将原始数据划分成包含大量类别的训练样本图像或剪裁和有限类别的样本图像两部分,针对每部分分别训练,首先在大量类别训练图像上进行参数微调,之后再基于第二部分(样本图像较少的类别数据)