画像分類コンテストtricks


最近いくつかの画像分類の試合に参加し、いくつかの画像分類試合のtricksをまとめた.(フレーム選択pytorch)
  • 完全コードgithubに移動してください:https://github.com/lxztju/pytorch_classification
  • 助けがあればstarを呼んでください.
  • データ前処理
  • 学習率調整
  • モデル選択
  • 移行学習
  • モデル融合
  • TTA(テスト時の強化)
  • 試合に参加する一般的なやり方は、いくつかの分類モデルを訓練し、そこから最適モデルを選択し、最後にensample(モデル融合)を使用してTTAと最適結果を得ることだ.

    データプリプロセッシング


    データの前処理は試合にとって最も重要である可能性があり、データの前処理がよく、同時に優れたモデルを選択すれば、1つの試合で良い成績を得ることができる.
    この部分の内容は、私はまだ比較的良いプログラムファイル、データ分析のコードを整理していません.今は簡単な処理方法しか採用していません.
    後期に良いデータ分析前処理方法をまとめ,githubでコードを更新し続ける.
    torchvisionではtransformsで多くの前処理方法が提供されています.
    transforms.Compose([
            transforms.RandomCrop(size),
            transforms.RandomVerticalFlip(),
            transforms.RandomHorizontalFlip(),
            RandomRotate(15, 0.3),
            RandomGaussianBlur(),
            transforms.ToTensor(),
            transforms.Normalize(mean=mean, std=std),
        ])
    

    学習率の調整


    学習率調整戦略は、一般的にwarmup付きの学習率調整戦略を採用し、基本的な考え方は訓練開始のいくつかのepochで、学習率が小さい頃から大きくなり、後期の訓練過程で徐々に小学校の学習率を減らすことである.
    warmup付きcosine学習率は私が主に使用しており、代替訓練中にcosine学習率を階段的に低下させる案がある場合があります.

    モデル選択


    一般に,DenseNet,ResNet,ResneXt,EfficientNetという一連のモデルを用いて訓練を行い,最適なモデルを選択する.ここで私がよく使うモデルは、ResNeXtとEfficientNetの2つのモデルグループです.
    これらのモデルはEfficientNetのほか、他のモデルtorchvisionで提供されており、EfficientNetはgithubでも大物が再現されたことがある.

    学習の移行


    通常の試合のデータセットは比較的小さいので,移行学習は非常に必要であり,ImageNetでの事前トレーニングウェイト移行学習を用いることが基本である.
    採用したモデルが大きい場合、データセットが小さい場合、凍結モデルの前のいくつかの層が訓練されていないことも、データセットが小さく、モデルパラメータが多すぎると、深刻なオーバーフィットの問題を防止します.
    c = 0
    for name, p in model.named_parameters():
        c += 1
        if c >=450:
            break
        p.requires_grad = True
    

    モデル融合


    一般的にいくつかの比較的良いモデルを訓練した後、試合の結果を向上させるために、複数のモデルを融合させ、得られた結果を投票または重み付け融合することができる.

    TTA


    TTA(テスト時増強)とは、テスト時にテスト画像を処理(反転、回転、裁断)するなどの操作を行い、同じ画像のいくつかの処理後のコピーを予測し、結果を同様に投票または重み付け融合させることで、結果を向上させることができる.

    cnnとsvmなどの結合を利用する


    ある分類試合では,cnnを用いて特徴を抽出し,svmやランダム森林などを用いて画像の分類処理を行う精度が,全接続層を直接分類するよりも優れている.githubコードライブラリにこの実装機能のコードが含まれています.詳細はgithubに移動してください.