timm库是聚合了各种SOTA图像分类模型的python库,里面有上千种模型,大部分模型还提供了在ImageNet数据集上预训练的权重。典型的如Resnet系列、Inception系列、ConvNeXt系列,以及基于ViT的模型。
timm库支持的模型名称可通过内置的查询函数timm.list_models查看,各种模型性能评估排名在官网的Results章节中。模型通过 timm.create_model函数去创建,如果是从预训练权重加载模型,首次调用会自动从huggingface hub下载权重文件。
timm库的官网在两个地方,里面的内容侧重不同:
1.GitHub:https://github.com/huggingface/pytorch-image-models
这里有最全面的timm文档索引和最新模型更新动态,在熟练掌握了timm的使用方法后,适合定期关注此网页。它的Results章节中有非常全面的模型性能评估排名,包括了IN-1k Top1得分、模型参数量、模型图片分辨率等等细节。
2.HuggingFace:https://huggingface.co/docs/timm/index
这里包含了新手教程和参考文档,也有主要的模型家族说明,但关于模型本身的文档不是最新的,最新引入的模型说明在GitHub官网。这里的页面结构清晰全面,教程也写得很清楚,适合在这里全面学习。
timm库提供的主要功能包括:
- 模型仓库,并提供在ImageNet上预训练的权重。一般是在IN-22k数据集上预训练,在IN-1K数据集上微调。
- 定制修改模型,例如修改模型最后一层的结构,以适应定制化的图片分类需求。
- 训练/验证/推理脚本,在本地重新训练或者微调模型,直接运行脚本,无需编写代码。
- 优化器,各种常用优化器。
- 调度器,各种常用调度器。
- 数据增强,例如Mixup和CutMix
从官网的示例代码和脚本看,timm库有两种用法:
- 直接使用官方训练脚本,在自定义的数据集上训练或微调模型。训练脚本可指定调度器、学习率、数据增强方式等各种参数,无需编写pyhon程序。
- 编写python代码,从timm库创建模型,使用它的优化器、调度器、数据增强函数等,核心的训练循环需要自己编写代码。
总结:在图片分类模型训练上,和fastai.vision相比,timm库更底层,基于python库添加了预定义和预训练的模型,以及部分优化器、调度器、数据增强函数。而fastai封装了更高层的训练框架,和timm库集成也很好,可以在fastai中直接使用timm的模型库,故在图像分类任务上,基于fastai库开展工作更加便利。
标签:总结,训练,模型,学习,fastai,集上,官网,timm From: https://blog.csdn.net/speedlike/article/details/143622001