记录贴:运行swin遇到assert palette.shape[0] == len(self.CLASSES)

一、原因分析

因为用的预训练模型、config文件所用的数据集是Ade20k,而默认的参数palette里的数据集是cityscapes,不一致导致的。
在这里插入图片描述

二、更改

在目录site-packages\mmseg\core\evaluation下有个文件class_name可以找到ade20k在palette里的参数被命名为ade,所以把default的参数改为ade就可以正常运行demo了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
这段代码定义了一个名为generate的方法,用于生成分类模型。具体实现过程如下: 1. `if self.backbone not in ['vit_b_16', 'swin_transformer_tiny', 'swin_transformer_small', 'swin_transformer_base']:`:判断模型的主干网络是否为vit_b_16、swin_transformer_tiny、swin_transformer_small、swin_transformer_base中的一种,如果不是则执行下一步,否则执行else语句。 2. `self.model = get_model_from_name[self.backbone](num_classes=self.num_classes, pretrained=False)`:调用get_model_from_name函数,通过主干网络名称获取对应的分类模型,并将类别总数作为参数传递给该函数,获取的模型赋值给self.model变量。 3. `else:`:如果模型的主干网络为vit_b_16、swin_transformer_tiny、swin_transformer_small、swin_transformer_base中的一种,则执行下面的代码。 4. `self.model = get_model_from_name[self.backbone](input_shape=self.input_shape, num_classes=self.num_classes, pretrained=False)`:调用get_model_from_name函数,通过主干网络名称获取对应的分类模型,并将输入图像大小和类别总数作为参数传递给该函数,获取的模型赋值给self.model变量。 5. `device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')`:判断当前设备是否支持GPU,如果支持则使用GPU进行计算,否则使用CPU进行计算。 6. `self.model.load_state_dict(torch.load(self.model_path, map_location=device))`:从模型文件中加载模型参数,并将其赋值给self.model。 7. `self.model = self.model.eval()`:将self.model设置为评估模式,即固定住模型参数,停止模型训练。 8. `print('{} model, and classes loaded.'.format(self.model_path))`:打印模型和类别文件已经加载的信息。 9. `if self.cuda:`:如果使用GPU进行计算,则执行下面的语句。 10. `self.model = nn.DataParallel(self.model)`:将模型转换为多GPU并行计算模型。 11. `self.model = self.model.cuda()`:将模型移动到GPU上进行计算。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值