研究 02 · 计算机视觉 · 图像分类
使用 ResNet 对服装照片进行分类的模型
2021·本科生研究生我训练了将 K-Fashion 服装照片分为连衣裙、外套、裤子和上衣的模型,并分析了各类别的错误。
- 14 种服装照片
抽样至最少类别数
- 2ResNet50V2
从 ImageNet 预训练权重开始
- 3按类别进行错误分析
精度、召回率、混淆矩阵
利用ImageNet预训练ResNet50V2
直接分配的角色和结果
- 已分配角色
- 使用 ResNet50V2 和特定类别的采样和评估流程实现了服装分类训练代码,并使用混淆矩阵分析了误分类情况。
- 成果
- 搭建了将 K-Fashion 照片分为连衣裙、外套、裤子和上衣的训练与分析流程。之后在公开数据集 Fashion-MNIST 上逐一调整设置,分别确认了数据增强和捷径连接对预测的影响。
我内部实施和分析的内容
- ResNet50V2分类训练代码
- 按类别对训练和验证数据进行下采样
- 查看类别指标和混淆矩阵
- 连衣裙和外套错误案例分析
基于研究 · 公开模型
- ImageNet 预训练的 ResNet50V2 权重
- 韩国时尚数据
原始研究中分析的数据
实验结果与试错
在数据增强设置和捷径连接错误中找到了预测偏斜的原因
即使在公开的 Fashion-MNIST 数据集上运行相同的代码,预测结果也偏向一侧。原因是数据增强设置和快捷连接存在错误。
- RTX A6000
- TensorFlow 2.15
- Fashion-MNIST的4类(连衣裙、外套、长裤、T恤)
- 10 epoch

- 48.9% → 94.4%仅比较增强效果 · Fashion-MNIST · 种子 0
- +29.8%p仅修改快捷键连接 · 相同种子 0
- 0%原始设置的涂层再现率 · 相同种子 0
问题及解决方案
问题不同服装类型的照片数量不同,导致训练样本偏向某些类别。
已解决。分别对训练和验证数据进行下采样,使其与样本量最小的类别相匹配。
问题仅凭总分很难判断哪些衣服混淆了。
已解决。记录了按类别划分的精确率、召回率和混淆矩阵,并分析了诸如 dress 和 outer 等混淆案例,同时附上照片。
问题即使预测偏向一侧,也很难分辨原因是数据还是代码设置。
原因分析在 Fashion-MNIST 上逐一调整数据增强、捷径连接和正则化设置进行比较,在代码设置中找到了预测偏斜的原因。
实验对比及详细结果
| 已逐一替换设置 | 测试准确率 | 预测比例最高的类别 |
|---|---|---|
| 原始设置 | 48.9% / 39.1% | 36% / 49% |
| 增强功能关闭 | 94.4% / 94.3% | 26% / 26% |
| 修改快捷键连接 | 78.7% / 63.1% | 35% / 53% |
| L2系数0.01→0.0001 | 39.4% | 48% |
| 关闭混合精度 | 52.2% | 51% |
| 动量 0.1 → 0.9 | 24.9% | 99.9% |
| 修改快捷键 + 关闭增强 + L2 0.0001 | 96.4% | 25% |
已观察到的原因和剩余任务
- 增强效果超出预期
原本用于弱增强,但实际操作为±72°旋转、翻转和半尺寸缩减;由于缓存的原因,第一个周期的变形一直保持不变直至结束。
- 快捷键连接错误
恒等快捷方式传递的是经过 BN 和 ReLU 的值,而不是原始输入。 ImageNet 权重输入没有错误并且是不可见的。
- 评估方法
README 的召回基于 0.5 的阈值,并且在评估中重写了验证数据。此处发布的准确性是在非重叠测试集上测量的。
读取结果的条件
- 自述文件中的评估不是独立测试,因为它重写了验证数据。
- 错误原因(不平衡、组成)未经核实
- 以下数值来自在 Fashion-MNIST 4 个类别上训练 10 个 epoch 的结果


