EfficientNet B0 训练 Standford 汽车图片分类(对比ResNet34)

时间:2024-05-23 11:19:39

EfficientNet B0 训练 Stanford 汽车图片分类(对比ResNet34)

近期google发布了新的model,不仅让整个参数量大幅的降低, 主要利用同时调整模型的width, depth, resolution来让训练过程跟结果达到比较高效的目的, 大概也是为什么model直接叫做Efficient Net吧?(笑)
详细的参数公式在论文里面有介绍, 有兴趣可以自行参考研究,我是数学傻帽

环境:
Python 3.7
Pytorch 1.01


Pretrained 模型:
1.ResNet34
2.EfficientNet B0


数据集:Stanford Car
一共196分类,test set 8041张, train set 8144 张
Download here:https://ai.stanford.edu/~jkrause/cars/car_dataset.html


Efficient代码实现参考,作者是来自哈佛的小哥哥
https://github.com/lukemelas/EfficientNet-PyTorch
提醒一下,作者的pytorch versions是1.1最新版本
原作者这段代码是这样:
for idx in torch.topk(outputs, k=5).indices.squeeze(0).tolist():
如果你跟我一样是1.0.1版本 请改成以下才能正常运行作者的example
for idx in torch.topk(outputs, k=5)[1].squeeze(0).tolist():
EfficientNet完整安装方法跟分类方法, 作者github都有完整介绍, 就不赘述啦


训练参数(调整建议欢迎告诉我,我会很感激的)

  • learning rate = 0.01
  • Batchsize = 32
  • optimizer = SGD




    直接来看训练结果

ResNet34 训练结果

EfficientNet B0 训练 Standford 汽车图片分类(对比ResNet34)
EfficientNet B0 训练 Standford 汽车图片分类(对比ResNet34)

EfficientNet B0 测试结果

EfficientNet B0 训练 Standford 汽车图片分类(对比ResNet34)
EfficientNet B0 训练 Standford 汽车图片分类(对比ResNet34)
可以很明显的看出EfficientNet运行的效果,收敛速度大幅提升
EfficientNet B0 训练 Standford 汽车图片分类(对比ResNet34)EfficientNet B0 训练 Standford 汽车图片分类(对比ResNet34)

遗憾的是 10个epochs, 最终EfficientNet只达到test 87% accuracy
正当我要继续调整参数训练的时候,colab就崩溃了 T-T

TeslaT4 16G的显存, 在我这只剩下30MB吧…
调整batchsize好像没什么用
要有哪位大神知道稳定获取显存小弟我先跪了哈哈