timm使用swin-transformer

文章介绍了如何使用timm库安装和加载Swin及VisionTransformer的预训练模型,包括遇到的下载问题及其解决方案,并提供了模型列表供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.安装

pip install timm

2.timm中有多少个预训练模型

#timm中有多少个预训练模型
model_pretrain_list = timm.list_models(pretrained=True)
print(len(model_pretrain_list), model_pretrain_list[:3])

在这里插入图片描述

3加载swin模型一般准会出错

model_ft = timm.create_model('swin_base_patch4_window7_224', pretrained=True, drop_path_rate = 0.2)

在这里插入图片描述
报错的内容如下

Downloading: "https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_base_patch4_window7_224_22kto1k.pth" to /root/.cache/torch/hub/checkpoints/swin_base_patch4_window7_224_22kto1k.pth

解决办法 去swin官网下载对应的swin_base_patch4_window7_224.pth(所有模型我都存自己百度网盘了)文件 然后根据提示 重命名为swin_base_patch4_window7_224_22kto1k.pth
再将该文件移动到/root/.cache/torch/hub/checkpoints/ 该目录下
这样timm就可以爽歪歪的用了

4下载预训练模型的官网

  • 官网:https://github.com/microsoft/Swin-Transformer 官网提供了百度云的下载连接
  • hrnet https://github.com/HRNet/HRNet-Image-Classification
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

注意convnext

  • connext输出与分类层的输入 一定要一样

在这里插入图片描述

timm中可用的swin模型

```python
#可用的swin模型
swin_transformer = ['swin_base_patch4_window7_224',
 'swin_base_patch4_window7_224_in22k',
 'swin_base_patch4_window12_384',
 'swin_base_patch4_window12_384_in22k',
 'swin_large_patch4_window7_224',
 'swin_large_patch4_window7_224_in22k',
 'swin_large_patch4_window12_384',
 'swin_large_patch4_window12_384_in22k',
 'swin_s3_base_224',
 'swin_s3_small_224',
 'swin_s3_tiny_224',
 'swin_small_patch4_window7_224',
 'swin_tiny_patch4_window7_224',
 'swinv2_base_window8_256',
 'swinv2_base_window12_192_22k',
 'swinv2_base_window12to16_192to256_22kft1k',
 'swinv2_base_window12to24_192to384_22kft1k',
 'swinv2_base_window16_256',
 'swinv2_cr_small_224',
 'swinv2_cr_small_ns_224',
 'swinv2_cr_tiny_ns_224',
 'swinv2_large_window12_192_22k',
 'swinv2_large_window12to16_192to256_22kft1k',
 'swinv2_large_window12to24_192to384_22kft1k',
 'swinv2_small_window8_256',
 'swinv2_small_window16_256',
 'swinv2_tiny_window8_256',
 'swinv2_tiny_window16_256',]
#可用的VIT模型
vision_tranformer = ['visformer_small',
 'vit_base_patch8_224',
 'vit_base_patch8_224_dino',
 'vit_base_patch8_224_in21k',
 'vit_base_patch16_224',
 'vit_base_patch16_224_dino',
 'vit_base_patch16_224_in21k',
 'vit_base_patch16_224_miil',
 'vit_base_patch16_224_miil_in21k',
 'vit_base_patch16_224_sam',
 'vit_base_patch16_384',
 'vit_base_patch16_rpn_224',
 'vit_base_patch32_224',
 'vit_base_patch32_224_clip_laion2b',
 'vit_base_patch32_224_in21k',
 'vit_base_patch32_224_sam',
 'vit_base_patch32_384',
 'vit_base_r50_s16_224_in21k',
 'vit_base_r50_s16_384',
 'vit_giant_patch14_224_clip_laion2b',
 'vit_huge_patch14_224_clip_laion2b',
 'vit_huge_patch14_224_in21k',
 'vit_large_patch14_224_clip_laion2b',
 'vit_large_patch16_224',
 'vit_large_patch16_224_in21k',
 'vit_large_patch16_384',
 'vit_large_patch32_224_in21k',
 'vit_large_patch32_384',
 'vit_large_r50_s32_224',
 'vit_large_r50_s32_224_in21k',
 'vit_large_r50_s32_384',
 'vit_relpos_base_patch16_224',
 'vit_relpos_base_patch16_clsgap_224',
 'vit_relpos_base_patch32_plus_rpn_256',
 'vit_relpos_medium_patch16_224',
 'vit_relpos_medium_patch16_cls_224',
 'vit_relpos_medium_patch16_rpn_224',
 'vit_relpos_small_patch16_224',
 'vit_small_patch8_224_dino',
 'vit_small_patch16_224',
 'vit_small_patch16_224_dino',
 'vit_small_patch16_224_in21k',
 'vit_small_patch16_384',
 'vit_small_patch32_224',
 'vit_small_patch32_224_in21k',
 'vit_small_patch32_384',
 'vit_small_r26_s32_224',
 'vit_small_r26_s32_224_in21k',
 'vit_small_r26_s32_384',
 'vit_srelpos_medium_patch16_224',
 'vit_srelpos_small_patch16_224',
 'vit_tiny_patch16_224',
 'vit_tiny_patch16_224_in21k',
 'vit_tiny_patch16_384',
 'vit_tiny_r_s16_p8_224',
 'vit_tiny_r_s16_p8_224_in21k',
 'vit_tiny_r_s16_p8_384',]`



参考文章
[vison transformer](https://zhuanlan.zhihu.com/p/350837279)
[swin](https://zhuanlan.zhihu.com/p/485716110#:~:text=Swin%20Transformer%20%E6%98%AF%E5%9C%A8%20Vision%20Transformer%20%E7%9A%84%E5%9F%BA%E7%A1%80%E4%B8%8A%E4%BD%BF%E7%94%A8%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%EF%BC%88shifted,windows,%20SW%EF%BC%89%E8%BF%9B%E8%A1%8C%E6%94%B9%E9%80%A0%E8%80%8C%E6%9D%A5%E3%80%82%20%E5%AE%83%E5%B0%86%20Vision%20Transformer%20%E4%B8%AD%E5%9B%BA%E5%AE%9A%E5%A4%A7%E5%B0%8F%E7%9A%84%E9%87%87%E6%A0%B7%E5%BF%AB%E6%8C%89%E7%85%A7%E5%B1%82%E6%AC%A1%E5%88%86%E6%88%90%E4%B8%8D%E5%90%8C%E5%A4%A7%E5%B0%8F%E7%9A%84%E5%9D%97%EF%BC%88Windows%EF%BC%89%EF%BC%8C%E6%AF%8F%E4%B8%80%E4%B8%AA%E5%9D%97%E4%B9%8B%E9%97%B4%E7%9A%84%E4%BF%A1%E6%81%AF%E5%B9%B6%E4%B8%8D%E5%85%B1%E9%80%9A%E3%80%81%E7%8B%AC%E7%AB%8B%E8%BF%90%E7%AE%97%E4%BB%8E%E8%80%8C%E5%A4%A7%E5%A4%A7%E6%8F%90%E9%AB%98%E4%BA%86%E8%AE%A1%E7%AE%97%E6%95%88%E7%8E%87%E3%80%82)



			
			
使用Swin-Transformer进行图像分类任务时,迁移学习是一个非常重要的环节,它允许我们利用预训练模型在大型数据集上学习到的特征来提高特定任务的性能。对于花数据集的分类任务,可以通过以下步骤来实现并分析性能指标: 参考资源链接:[Swin-Transformer实现花数据集分类与迁移学习](https://wenku.youkuaiyun.com/doc/5fy5gibm3t?spm=1055.2569.3001.10343) 首先,你需要安装PyTorch和相关库,并确保已经下载了花数据集。然后,根据《Swin-Transformer实现花数据集分类与迁移学习》中的指示,将数据集放置在正确的目录结构中,以便模型能够正确加载数据。 接下来,使用Swin-Transformer预训练模型作为起点。在PyTorch中,通常可以通过调用预定义的模型并加载相应的预训练权重来实现这一点。例如,使用以下代码加载预训练的Swin-Transformer模型: ```python from timm.models import swin_transformer model = swin_transformer(pretrained=True) ``` 在模型准备就绪后,你需要根据数据集的类别数调整模型的最后几层,以适应新的分类任务。这通常涉及替换或重新初始化最后的全连接层。 在训练过程中,设置合适的超参数至关重要。根据资源,你可以调整学习率、批次大小和优化器等参数。值得注意的是,资源中还提到了Cosine衰减学习率曲线,这是一种能够帮助模型在训练过程中稳定收敛的学习率调度策略。 在训练过程中,使用混淆矩阵、精确度(accuracy)和召回率等指标来评估模型性能非常重要。精确度反映了模型预测正确的样本占总预测样本的比例,而召回率则衡量了模型成功识别的正样本占实际正样本的比例。混淆矩阵提供了分类问题中每个类别的详细性能指标,能够帮助我们了解模型在不同类别上的表现。 训练完成后,你可以使用以下代码来计算和打印混淆矩阵: ```python import sklearn.metrics as metrics y_true = [...] y_pred = [...] cm = metrics.confusion_matrix(y_true, y_pred) print(cm) ``` 精确度和召回率可以通过以下方式计算: ```python precision = metrics.precision_score(y_true, y_pred, average='macro') recall = metrics.recall_score(y_true, y_pred, average='macro') print('Precision:', precision) print('Recall:', recall) ``` 在性能评估完成后,根据《Swin-Transformer实现花数据集分类与迁移学习》资源的代码解读,你可以调整模型的参数并重复上述训练和评估过程,直到达到满意的性能为止。 通过《Swin-Transformer实现花数据集分类与迁移学习》这一资源,你可以全面学习到如何使用Swin-Transformer模型进行高效的图像分类,以及如何通过迁移学习来优化模型性能。资源中不仅提供了完整的代码示例,还详细解释了每个代码段的作用,这将帮助你在实际应用中快速搭建和调试模型。 参考资源链接:[Swin-Transformer实现花数据集分类与迁移学习](https://wenku.youkuaiyun.com/doc/5fy5gibm3t?spm=1055.2569.3001.10343)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值