1.RandomResizedCrop(224)
-
Resized = 改尺寸(缩放)
-
Crop = 裁剪
合起来:随机裁剪后再缩放到 224×224
它在干嘛
-
从原图里随机裁一块(大小、位置都随机)
-
再 resize 到 224×224
为什么有用
-
迫使模型学“目标本身”,而不是死记某个固定位置/背景
-
相当于告诉模型:
“东西在哪不重要,是什么才重要”
为什么 ViT 更需要
-
ViT 没有 CNN 那种“局部平移不变性”
-
不裁剪的话,ViT 特别容易记背景和位置
基本是 ViT 的标配,几乎必开
2.RandAugment随机增强
它在干嘛
-
随机对图片做一堆强扰动:
-
旋转、颜色抖动、对比度、锐化、平移……
-
-
强度也是随机的
它具体干啥?
它会随机挑几种“照片编辑操作”套在图片上,比如:
-
旋转一点
-
变亮/变暗
-
改对比度
-
改颜色(偏冷/偏暖)
-
平移一点
-
轻微模糊/锐化
为什么有用?
因为真实世界里拍照条件千变万化。
训练时提前把这些变化“模拟出来”,模型就更不容易只记住训练集那种固定风格。
可以理解成:
训练时给图片加“滤镜和小扰动”,让模型别挑食。
3.Mixup混合增强 / Cutmix剪切混合
这俩都是 “把两张图混在一起” 的方法。
Mixup
做法
-
两张图按比例相加
-
label 也按比例相加
(例如 0.7 猫 + 0.3 狗)
效果
-
标签变“软”
-
模型被迫学 线性、平滑的决策边界
拿两张图 A 和 B 做加权平均:
-
新图片 = 0.7×A + 0.3×B
-
新标签 = 0.7×标签A + 0.3×标签B
举例:
-
A 是“猫”
-
B 是“狗”
那新图看起来像“有点猫又有点狗”,标签也变成“70% 猫 + 30% 狗”。
为什么有用?
它强迫模型学得更“平滑”,不要过度自信,也不要只靠某个小特征就下结论。
可以理解成:
给模型出“混合题”,让它别一看到一点猫毛就立刻断言 100% 是猫。
Cutmix
做法
-
把 A 图的一块区域剪下来贴到 B 图上
-
label 按面积比例混合
举例:
-
图 A:猫
-
图 B:狗
把“猫的脸”那块贴到狗图上,模型看到的图既有猫也有狗。
如果猫区域占 40% 面积:标签就 40% 猫 + 60% 狗。
为什么有用?
它逼模型不要只盯一个区域,而要学“哪些区域对应哪些类别特征”。
效果
-
强迫模型关注多个区域
-
防止只盯某一个 patch
为什么 ViT 特别吃这套
-
ViT 是 patch-level 建模
-
Mixup / Cutmix 正好在“patch 语义”上打击投机行为
很多 ViT 论文:不开 mixup = 精度直接掉
4.RandomErasing
它具体干啥?
训练时随机在图片上抹掉一块区域(变成纯色/噪声)。
比如猫图里把“猫眼睛”那块抹掉。
为什么有用?
如果模型老是靠“猫眼睛”一个特征判断,那擦掉后它就得学会用别的特征(耳朵、轮廓、纹理…)。
作用
-
告诉模型:
“别太依赖某一小块特征”
ViT 视角
-
ViT 很容易“迷信某几个 patch”
-
Erasing = 逼它看全局
5)LabelSmoothing:标签平滑
它具体干啥?
正常分类标签是 one-hot:
-
猫 = 100% 猫,其他 = 0%
Label smoothing 会把它变成:
-
猫 = 90%~95%
-
其他类别各分一点点概率(比如每个 0.5%)
为什么有用?
让模型别学得太“死”,别动不动就输出 0.999999 的自信度。
这样训练更稳定,也更不容易学偏。
可以把它理解成:
告诉模型:别那么自信,世界上也有“长得像猫的别的东西”。
ViT 准确率较低的原因
当日志里 ViT 训练集准确率都只有 67%,说明它不是“记得太死”,而是根本没学起来。
造成“没学起来”的常见组合是:
-
训练设置不适合 ViT(比如优化器/学习率)
-
数据增强太弱,ViT 很难从小数据中学到稳定规律
这些增强(尤其 RandomResizedCrop / RandAugment)就是在帮 ViT “更容易学到规律”。
最通俗的类比
把模型当成学生:
-
ResNet 像“天生擅长抓关键点的学生”,题稍微变一下也会。
-
ViT 像“很聪明但缺乏经验的学生”,你不给他看各种变形题,他就学不出规律。
这些增强就是“出各种变形题”。
网硕互联帮助中心






评论前必须登录!
注册