数据增广+微调
2026/8/2 8:26:51 网站建设 项目流程

数据增广:

随机改变训练样本可以减少模型对某些属性的依赖,从而提高模型的泛化能力

左右反转,上下翻转....(符合实际),切割(变形到固定形状),明亮度,色调

图片增广代码实现:
定义辅助函数apply,此函数在输入图像img上多次运行图像增广方法aug并显示所有结果。

翻转使用transforms模块来创建RandomFlipLeftRight实例,这样就各有50%的几率使图像向左或向右翻转。

上下翻转:

随机裁剪一个面积为原始面积10%到100%的区域,该区域的宽高比从0.5~2之间随机取值。 然后,区域的宽度和高度都被缩放到200像素。

改变亮度:


改变色调:

随机更改图像的亮度(brightness)、对比度(contrast)、饱和度(saturation)和色调(hue):


通过构建一个Compose实例结合多种方法:

使用图像增广进行训练:
从CIFAR10中下载图片

对训练集做简单的左右翻转

加载数据集 + 构建 DataLoader"封装成了一个辅助函数


train_batch_ch13函数:负责一个batch的前向和反向传播

微调(重要)

一般的神经网络结构:


微调的含义
一般的步骤:
(1)在源数据集(例如ImageNet数据集)上预训练神经网络模型,即源模型。

(2)创建一个新的神经网络模型,即目标模型。这将复制源模型上的所有模型设计及其参数(输出层除外)。我们假定这些模型参数包含从源数据集中学到的知识,这些知识也将适用于目标数据集。我们还假设源模型的输出层与源数据集的标签密切相关;因此不在目标模型中使用该层。

(3)向目标模型添加输出层,其输出数是目标数据集中的类别数。然后随机初始化该层的模型参数

(4)在目标数据集(如椅子数据集)上训练目标模型。输出层将从头开始进行训练,而所有其他层的参数将根据源模型的参数进行微调

具体案例演示微调:热狗识别
数据集包含1400张热狗的“正类”图像,以及包含尽可能多的其他食物的“负类”图像。 含着两个类别的1000张图片用于训练,其余的则用于测试


规范化图片,增广

下载模型,指定pretrained=True以自动下载预训练的模型参数

更改输出层fc并利用xavier初始化参数

训练核心:
param_group 分参数组优化

params_1x除fc外的所有层:用较小的lr,预训练权重已经很好,只需微调

net.fc.parameters()最后一层全连接层:用较大lr,随机初始化,需要快速学习

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询