MIAOD の学習変数とトレーニング フェーズのパラメーター

MIAOD トレーニング フェーズの変数とパラメーター

論文: MIAOD CVPR_2021
コード: https://github.com/yuantn/MI-AOD

トレーニング

  • 各トレーニングには 6 つのアクティブなサイクルが含まれており、最初はトレーニング セットの 5%、その後各サイクルの 2.5% が選択されて次のアクティブなサイクルに参加します。
    • cfg.epoch = 2 は、アクティブなサイクル内のトレーニングが 2 回繰り返されることを意味します。

    • 1 つのアクティブなサイクル内のエポック数は、1 つのサイクル内のエポック数に相当し、それに応じて X_U_repeat および X_L_repeat を乗算したものになります。つまり、次のようになります。

      total epoches = (epoch_ratio[0]*X_L_repeat+(epoch_ratio[1]*X_U_repeat*2 +
      epoch_ratio[0]*X_L_repeat)*inner epoch)*len(cycle),
      
      默认值为  (3*2+(1*2*2+3*2)*2)*7=(3*2+(1*2*2+3*2)*2)*7=182。
      
      • epoch_ratio: 配列の構造は [モデル全体のトレーニングに必要なエポック数、重み付けと最小/最大に必要なエポック数] です。

      • X_U_repeat と X_L_repeat の使用位置 (これら 2 つの値に割り当てられた cfg.data.train.times を含む)、X_U_repeat と X_L_repeat の使用は実際に cfg.data.train.times に割り当てられ、その呼び出し位置は mmdet/ を参照してください。 datasets/dataset_wrapper.py クラスRepeatDataset()。これは、データローダー内でデータが繰り返される回数を意味します。その設計ロジックは、MMDetection に付属する構成ファイル /configs/ base /datasets/voc0712.pyから来ています。

        data = dict(
          samples_per_gpu=2,
          workers_per_gpu=2,
          train=dict(
          type='RepeatDataset',
          *times=3*,...}
        

1 アクティブなサイクル

1.1 外側の epoch-cfg.epoch=2、アクティブなサイクルでのトレーニングが 2 回繰り返されます

  • 1.1.1 ラベルセットトレーニング - つまり、epoch_ratio[0]=3 内部エポック、epoch=0 の場合のみ、次のステップがあります: ラベル付きデータセットでトレーニングし、バックボーン、ネック、f1、f2、fr、fmil をトレーニングします。同時に。しかし、トレーニング後、resnet50 がレイヤー 1 をフリーズするように設定したため、トレーニングをマークした後、レイヤー 1 はフリーズされます。

    • 損失タイプ = 0:self.L_det()。

    • 凍結されたプラマ: パラメータを凍結し、損失の逆伝播に参加しません。

      • 1-before トレーニング フレーズの凍結されたネットワーク + レイヤー []:requires_grad=False

      • 2 トレーニング後、フリーズされたネットワーク + レイヤー ['backbone.conv1.weight', 'backbone.bn1.weight', 'backbone.bn1.bias', 'backbone.layer1.0.conv1.weight', 'backbone. layer1.0.bn1.weight'、'backbone.layer1.0.bn1.bias'、'backbone.layer1.0.conv2.weight'、'backbone.layer1.0.bn2.weight'、'backbone.layer1. 0.bn2.bias'、'backbone.layer1.0.conv3.weight'、'backbone.layer1.0.bn3.weight'、'backbone.layer1.0.bn3.bias'、'backbone.layer1.0. downsample.0.weight'、'backbone.layer1.0.downsample.1.weight'、'backbone.layer1.0.downsample.1.bias'、'backbone.layer1.1.conv1.weight'、'backbone.layer1.0.downsample.1.bias'、'backbone.layer1.1.conv1.weight'、'backbone.layer1.0.downsample.1.bias' 「layer1.1.bn1.weight」、「backbone.layer1.1.bn1.bias」、「backbone.layer1.1.conv2.weight」、「backbone.layer1.1.bn2.weight」、「backbone.layer1. 1.bn2.bias'、'backbone.layer1.1.conv3.weight'、'backbone.layer1.1.bn3.weight'、'backbone.layer1.1.bn3.bias'、'backbone.layer1.2. conv1.weight','backbone.layer1.2.bn1.weight'、'backbone.layer1.2.bn1.bias'、'backbone.layer1.2.conv2.weight'、'backbone.layer1.2.bn2.weight'、'backbone .layer1.2.bn2.bias', 'backbone.layer1.2.conv3.weight', 'backbone.layer1.2.bn3.weight', 'backbone.layer1.2.bn3.bias']

  • 1.1.2 インスタンスの不確実性の再重み付けと最小化 - つまり、epoch_ratio[1]=1 内部エポック: 同量のラベルなしデータをトレーニングに追加し、インスタンスの不確実性を計算します。ここで、f1、f2 分類器は不確実性行を計算する前にフリーズされ、バックボーン層 1 と f1、f2 は不確実性を計算した後にフリーズされます。

    • losstype = 1:self.L_wave_min()。

    • 凍結されたプラマ: パラメータを凍結し、損失の逆伝播に参加しません。

      • 1 最小化前のフレーズ、フリーズされたネットワーク + レイヤー ['bbox_head.f_1_convs.0.conv.weight'、'bbox_head.f_1_convs.0.conv.bias'、'bbox_head.f_1_convs.1.conv.weight'、'bbox_head. f_1_convs.1.conv.bias'、'bbox_head.f_1_convs.2.conv.weight'、'bbox_head.f_1_convs.2.conv.bias'、'bbox_head.f_1_convs.3.conv.weight'、'bbox_head.f_1_convs. 3.conv.bias'、'bbox_head.f_2_convs.0.conv.weight'、'bbox_head.f_2_convs.0.conv.bias'、'bbox_head.f_2_convs.1.conv.weight'、'bbox_head.f_2_convs.1。 conv.bias'、'bbox_head.f_2_convs.2.conv.weight'、'bbox_head.f_2_convs.2.conv.bias'、'bbox_head.f_2_convs.3.conv.weig

Supongo que te gusta

Origin blog.csdn.net/github_38060285/article/details/129285710
Recomendado
Clasificación