参考paperswithcode
关于图像分类训练排行榜,我挨个尝试了各种神经网络,其中ResNeSt50残差网络
的表现非常令人满意,精度从LetNet的72%提高到了86%左右。查阅资料才发现,虽然在该项目在今年4月份才诞生,但是GitHub已经标星2K多,下面就来具体介绍为啥这么厉害。
0. ResNeSt50残差网络
在测试ResNeSt50
后,我也去测试了ResNet
,后者内存和CUDA都非常高,而且计算时间比LetNet大多了,前者的CPU消耗很低,在bache_size=128的情况下,只有30%。
因此对CPU要求比其他的都低,资料显示,该模型曾在4月份登顶目标检测/实例分割/全景分割。
项目开源地址:zhanghang1989/ResNeSt
论文参见文章结尾附录。
1. 安装
ResNeSt
的作者已经将该模型做成了pypi库,因此安装非常简单。
pip install resnest --pre
2. 使用
from resnest.torch import resnest50
net = resnest50(pretrained=True)
或者使用torch远程加载
import torch
# get list of models
torch.hub.list('zhanghang1989/ResNeSt', force_reload=True)
# load pretrained models, using ResNeSt-50 as an example
net = torch.hub.load('zhanghang1989/ResNeSt', 'resnest50', pretrained=True)
3. 讨论
关于实验背景知识,可以参考上一篇文章。
在分类CIFAR10的训练上,我们继续使用上一篇文章的代码结构,然后直接调用resnest50
模型.在《图像分类训练-使用LetNet卷积网络分类CIFAR10》里,最优秀的训练结果是72%的精度。而resnest50
模型下,第一个Epoch时就给出了81.3%的精度,10次训练后更是给出了86.66%的精度,结果非常令人满意。
然年继续在上面训练的结果是,把学习率从0.001调整到0.0001时,精度会达到89%左右。
最后再来谈谈训练后的模型大小,LetNet
在72%优化精度下,大小为2.12Mb.而resnest50
的模型大小为105Mb。这些模型的大小是固定的!这点也是神经网络的特殊之处。
4. 小结
到目前为止我都没有实现99.99%的精度,虽然文献资料摆在那里,但是入手还是比较困难的,目前已经尝试过五六种神经网络了,后续等我理清了排行第一的BiT-L(ResNet)后再来写文章。另外ResNeSt
的作者除了resnest50
模型外,还有resnest101
、resnest200
、resnest269
可选,相应的模型体积也倍增,需要更多算力,至于精度提升,实测比较微小。
4. 相关参考
- Image Classification on CIFAR-10
- ResNeSt: Split-Attention Networks
- ImageNet Classification
- 文章代码请参考Pytorch官方文档:TRAINING A CLASSIFIER