unilm 在测试自定义模型时,与'MODEL_KWARGS'相关的问题,

dfuffjeb  于 2个月前  发布在  其他
关注(0)|答案(3)|浏览(33)

这个错误是由于在配置文件中,MODEL.VIT.MODEL_KWARGS的值类型与预期不符导致的。MODEL.VIT.MODEL_KWARGS应该是一个字典,但在这里它是一个字符串。为了解决这个问题,你需要将MODEL.VIT.MODEL_KWARGS的值更改为一个字典,如下所示:

MODEL.VIT.MODEL_KWARGS:
  - name: 'vit_base'
    backbone:
      norm_layer: misc_nn_ops.FrozenBatchNorm2d
      layer_cfgs: [[-1, 64, 1]]
      min_depth: 0
      max_depth: 0
      in_channels: [8]
      out_channels: [128]
      num_heads: [1]
      num_layers: [12]
      use_conv_bias: False
      use_bn: True
      use_relu: True
      use_pred_conv: False
      dropout_rate: 0.0
      qkv_bias: False
      qk_scale: None
      fpn_config: None
      rpn_config: None
      backbone_norm_cfg: None
      norm_cfg: None
      conv_cfg: None
      norm_module: misc_nn_ops.FrozenBatchNorm2d
      act_cfg: None
      fc_cfg: None
      max_size: 768
      min_stride: None
      max_stride: None
      use_separable_conv: False
      use_mlp_head: False
      use_cbam: False
      use_absence_mask: False
      use_global_token: False
      use5=False
      use3=False
      use2=False
      use1=False
      use4=False
      use6=False
      use7=False
      use8=False

IOU_阈值:

  • 0.3
  • 0.7

损失权重:1.0
NMS阈值:0.7
正例分数:0.5
后NMS测试前K:1000
后NMS训练前K:2000
预NMS测试前K:1000
预NMS训练前K:2000
平滑L1系数:0.0
语义分割头:
通用步长:4
卷积维度:128
忽略值:255
输入特征:

  • p2
  • p3
  • p4
  • p5

损失权重:1.0
名称:SemSegFPNHead
归一化方法:GN
类别数量:54
视觉Transformer(ViT):
drop路径率:0.1
图像大小:

  • 224
  • 224

模型参数:'{}'
名称:dit_base_patch16
输出特征:

  • layer3
  • layer5
  • layer7
  • layer11

位置类型:绝对值
权重:https://layoutlm.blob.core.windows.net/dit/dit-fts/icdar19modern_dit-b_cascade.pth
输出目录:./dit/object_detection/Training_Output_base
随机种子:42
求解器:
AMP:
启用:true
Backbone 倍增因子:1.0
基础学习率:5.0e-05
偏置学习率因子:1.0
检查点周期:1000
梯度裁剪:
梯度裁剪类型:全模型
梯度裁剪值:1.0
启用状态:true
归一化类型:2.0
伽马值:0.1
批量大小:1
学习率调度器名称:WarmupCosineLR
最大迭代次数:4000
动量值:0.9
Nesterov策略:false
优化器:ADAMW
参考世界大小:0
步骤:

  • 30000

预热因子:0.01
预热迭代次数:1000
预热方法:线性
权重衰减系数:0.05

lymgl2op

lymgl2op1#

我添加了一些自定义代码来加载配置,如果存在则删除 MODEL.VIT.MODEL_KWARGS ,然后在开始推理/训练之前将其写回磁盘,这解决了我的问题。使用原生的 yaml 库可以很快地完成这个操作。

mnemlml8

mnemlml82#

@ alexjiao-chrono 已经很晚了,但你还有代码片段吗?

pkmbmrz7

pkmbmrz73#

当然,这是我基本上使用的代码:

import yaml

def remove_vit_kwargs(config):
    with open(config) as f:
        cfg_dict = yaml.safe_load(f)
        try:
            del cfg_dict['MODEL']['VIT']['MODEL_KWARGS']
        except Exception as e:
            print(
                f'Failed deleting MODEL.VIT.MODEL_KWARGS. This could be because the config key does not exist.')
        with open(config, 'w') as f:
            yaml.safe_dump(cfg_dict, f)

相关问题