# 数据
- 500 张图 x 10 类, 共 5000 个样本
## 易混淆类别举例:
- 三明治 和 玉米饼
- 冰激凌 和 土豆泥
- 芒果班戟 和 鸡蛋布丁
# 方案
基于成熟模型进行迁移学习
# 模型
## EfficientNet B3
- 在 ImageNet 数据集上精度比较高
- 输入图像尺寸 300
- 参数少,训练快,部署快
# 训练策略
## 损失函数
- 标签平滑:抑制过拟合
## 优化器
- Ranger
- SGD
## 数据增强
- 随机进行旋转、平移、翻转变换
- 随机调节亮度对比度
## 过程
- 两阶段训练
- 阶段一
- Ranger + one-cycle
- 只训练离输出较近的几层,锁定其他层
- 用比较大的学习率,收敛到一个比较低的 validation loss
- 阶段二
- 改用 SGD
- 使用较低学习率
- 微调 epochs 和 lr 等超参数
# 其他尝试
## Selective-Backprop
- 参考:https://arxiv.org/abs/1910.00762
- minimum loss percentage 用 0.9
- 效果不明显
## Weighted CE
- '土豆泥', '鸡蛋布丁', '冰激凌', '小米粥', '三明治' 损失函数权重设置为 1.2
- 参考代码:
```python
weight = torch.Tensor(np.ones(data_.c))
if torch.cuda.is_available():
weight = weight.cuda()
hard_classes = ['土豆泥', '鸡蛋布丁', '冰激凌', '小米粥', '三明治']
hard_classes_idx = [data_.train_ds.c2i[x] for x in hard_classes]
weight[hard_classes_idx] = 1.2
loss_func = nn.CrossEntropyLoss(weight=weight)
```
- 效果不明显
# 展望
- 尝试注意力机制
- 尝试调整 WeightedCE 权重
# 其他参考
- https://towardsdatascience.com/label-smoothing-making-model-robust-to-incorrect-labels-2fae037ffbd0
- https://towardsdatascience.com/exploring-learning-rates-to-improve-model-performance-in-keras-e37f5e63f16c


干货帖!学习了!
你好,请问代码可以开源吗
非常棒,学习了!