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版本 请改成以下才能正常运行作者的examplefor idx in torch.topk(outputs, k=5)[1].squeeze(0).tolist():
EfficientNet完整安装方法跟分类方法, 作者github都有完整介绍, 就不赘述啦
训练参数(调整建议欢迎告诉我,我会很感激的)
- learning rate = 0.01
- Batchsize = 32
- optimizer = SGD
直接来看训练结果
ResNet34 训练结果
EfficientNet B0 测试结果
可以很明显的看出EfficientNet运行的效果,收敛速度大幅提升
遗憾的是 10个epochs, 最终EfficientNet只达到test 87% accuracy
正当我要继续调整参数训练的时候,colab就崩溃了 T-T
TeslaT4 16G的显存, 在我这只剩下30MB吧…
调整batchsize好像没什么用
要有哪位大神知道稳定获取显存小弟我先跪了哈哈