'''
Author: Chenye.Wan
Last Modified Time: 2023-8-14
Lisences: CC 4.0 BY-SA
Version: /none
Author-Info:
Wan,Chenye(Junior)
School of Information Science and Technology
Nantong University Nantong 226019,China
wanchenye@foxmail.com
'''
13.1 图像增广
应用神经网络的先决条件:大型数据集[大量的数据]
改进模型范化的方法:图像增广、微调
增广含义:依据原有数据集,进行随机变化,生成相似但不相同的训练样本
意义:减少模型对于某些属性的依赖,提高泛化能力
13.1.1 常用的图像增广方法
1、翻转和裁剪
1.1 翻转 [前提:通常情况下]
在左右翻转的操作下,不会影响图像的类别识别,使用频率高
在上下翻转的操作下,可能会影响识别结果,使用频率相比于左右翻转较低
1.2 裁剪 [前提:通常情况下]
已知,汇聚层可以降低卷积层对目标位置的敏感性。
另外一种方法:随机裁剪,使目标以不同比例出现在图像的不同位置。
超参:1、裁剪图像的所占原图的面积占比(scale)
2、裁剪图像的长宽比(ratio)
3、生成图片的大小
2、改变颜色
1.1 图片颜色的4个方面:亮度(brightness)、对比度(contrast)
饱和度(saturation)、色调(hue)
3、结合多种图像增广方法
本质:利用compose方法结合多种方式进行结合使用
Step:1、单独定义翻转,裁剪,颜色改变等方法
2、利用compose方法结合以上单独定义的方法
13.1.2 使用图像增广进行训练
1、训练前提,注意点
通常只对训练样本进行图像增广——目的:在预测过程中可以取得确切的结果
图像增广一般使用在 预测数据集与验证数据集中,原因如下:
1、模型评估的一致性:
在验证和测试阶段,我们希望评估模型在真实世界数据上的表现,
而不是考虑模型在扩增后的数据上的表现。
通过在验证和测试数据上应用与训练数据相同的图像增强操作,
可能会引入不一致性,使模型在测试集上的性能估计不准确。
2、泛化能力的评估:
验证集用于评估模型在不同样本上的泛化能力。
如果我们在验证集上应用了图像增强,模型可能会在验证数据上表现良好,
但这并不能真正反映出模型对未见过数据的泛化能力。
3、防止信息泄漏:
应用图像增强操作可能会将某些信息从训练集中传递到验证和测试集中,
从而使模型在验证和测试数据上表现得过于乐观。
这可能导致模型在实际应用中的性能不如预期。
ps:在某些情况下,也可以考虑在「验证阶段」应用轻微的图像增强,
以测试模型对轻微变换的鲁棒性。
「鲁棒性」
定义:模型对于数据中的噪声、扰动、异常值等变化的适应能力
· 在「验证数据集」中使用条件:
1、适当增强:不会造成过于扭曲的数据
2、不影响标签信息:在增强操作后,标签类型不会发生改变
3、保持一致:每一次的验证,增强的设置应当相同
· 在「验证数据集」中使用注意点:
1、多情况评估:尝试多种增强参数组合,全面评估
2、注意过拟合:避免过度增强,可能会导致验证模型过于乐观
3、与原始未增强的验证还是进行比较
4、综合考虑:增强后的验证结果和原始验证结果综合考虑,不将增强后结果作为唯一的标准
2、训练步骤(GPU训练)
1、利用ToTensor格式标准化数据集
2、定义辅助函数
3、定义小批量训练函数
4、定义模型训练函数
5、结合增强操作,进行训练
13.2 微调
应用背景:
在实际应用场景下,收集到的数据量可能远远小于适用于在大型数据训练下产生的模型
以致于适合大数据集的复杂模型会在实际数据集上过拟合,精度也将会降低
在此背景下,迁移学习是最优方案,
利用模型在原本的大数据集训练中所得到的通用的图像特征
微调是迁移学习中的一个方法
13.2.1 步骤
1、在源数据集上训练源模型
2、创建目标模型(复制源模型所有模型设计及参数,除输出层)
前提:模型参数包含源模型中的特征,且特征适用于目标数据集
3、目标模型中添加输出层(输出数为目标数据集中的类别数),随机初始化该层模型参数
4、在目标数据集上训练目标模型,输出层将会重新训练,其余层则为微调
目标数据集远小于源数据时,微调有助于提高模型的泛化能力
「在此过程中,我们需要做的」:
1、选择要微调的层:(优先级:1)
预训练模型的不同层具有不同的抽象级别和特征表示能力。
我们需要确定哪些层对于目标任务更有用。
一般而言,底层的特征可以更通用,而高层的特征更具特定性。
2、调整学习率:(优先级:3)
通常,预训练模型的低层需要使用较小的学习率,以避免破坏通用特征,
而高层可以使用较大的学习率,以更快地适应目标任务。
3、数据集适应: (优先级:2)
在微调过程中,模型需要适应目标任务的数据分布。
这可能涉及到数据预处理、调整标签、处理类别不平衡等。
4、监控和调整:(优先级:4)
在微调过程中,需要监控训练过程,观察验证集上的性能,
并根据性能表现进行调整。根据模型的进展来调整超参数,以达到更好的性能。
5、过拟合控制:(优先级:-1)
微调时可能会出现过拟合的情况,特别是在目标任务数据较少的情况下。
需要选择合适的正则化方法和训练策略
13.3 目标检测和边界框(目标检测类问题)
1、边界框
两种表达方法:
1、左上角和右下角的x,y坐标确定
2、边界框的中心点以及框的宽度和高度
方向定义:
1、x向右为正
2、y向下为正