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
-