事前構築済みの検索スペース

Neural Architecture Search 検索スペースは、優れたパフォーマンスを実現するうえで重要です。ここでは、探索して検索するすべてのアーキテクチャとパラメータを定義します。Neural Architecture Search では、search_spaces.py ファイルに一連のデフォルトの検索スペースが用意されています。

  • Mnasnet
  • Efficientnet_v2
  • Nasfpn
  • Spinenet
  • Spinenet_v2
  • Spinenet_mbconv
  • Spinenet_scaling
  • Randaugment_detection
  • Randaugment_segmentation
  • AutoAugmentation_detection
  • AutoAugmentation_segmentation

また、次のような検索スペースの例も用意しています。

Lidar ノートブックは、検証結果をノートブックに公開します。PyTorch 検索スペースの残りのコードは、ベンチマークではなく例としてのみ使用されます。

各検索スペースには固有のユースケースがあります。

  • MNasNet 検索スペースは MobileNetV2 アーキテクチャをベースにし、画像分類タスクとオブジェクト検出タスクで使用されます。
  • EfficientNetV2 検索スペースは、オブジェクト検出タスクで使用されます。EfficientNetV2 には、Fused-MBConv などの新しい演算が追加されています。詳しくは、EfficientNetV2 の論文をご覧ください。
  • 通常、NAS-FPN 検索スペースは、オブジェクト検出に使用されます。詳細については、こちらのセクションをご覧ください。
  • SpineNet 検索スペース ファミリーには、spinenetspinenet_v2spinenet_mbconvspinenet_scaling があります。通常、これらはオブジェクト検出にも使用されます。SpineNet の詳細については、こちらのセクションをご覧ください。

    • spinenet は、このファミリーの基本検索スペースです。検索中に残余ブロックとボトルネック ブロックの両方の候補を提供します。
    • spinenet_v2spinenet の小型版で、検索中にボトルネック ブロックの候補のみを提供し、収束を高速化します。
    • spinenet_mbconv はモバイル プラットフォーム用の spinenet バージョンで、検索中に mbconv ブロックの候補を使用します。
    • spinenet_scaling は通常、spinenet 検索スペースで適切なアーキテクチャを検索した後に、レイテンシ要件に応じてスケールアップまたはスケールダウンを行うために使用されます。この検索は、画像サイズ、フィルタ数、フィルタサイズ、ブロックの繰り返し数などに基づいて実行されます。
  • RandAugmentAutoAugment の検索スペースを使用すると、それぞれ検出とセグメンテーションの最適なデータ拡張オペレーションを検索できます。注: 通常、データの拡張は適切なモデルを検索した後に使用されます。DataAugmentation の詳細については、こちらのセクションをご覧ください。

  • 3D ポイント クラウドの Lidar 検索スペースには、フィーチャライザ、バックボーン、デコーダ、検出ヘッドに関するエンドツーエンドの検索が示されています。

  • PyTorch 3D 医療画像セグメンテーション検索スペースの例には、UNet エンコーダと UNet デコーダでの検索が示されています。

ほとんどの場合、これらのデフォルトの検索スペースで十分です。しかし、必要な場合は、PyGlove ライブラリを使用して、こうした既存のスペースをカスタマイズすることや、新しいスペースを追加することが可能です。NAS-FPN 検索スペースを指定するサンプルコードをご覧ください。

MNasnet と EfficientNetV2 検索スペース

MNasNet 検索スペースと EfficientV2 検索スペースは、ConvOpsKernelSizeChannelSize などの異なる backbone ビルド オプションを定義します。backbone は、分類や検出など、さまざまなタスクに使用できます。

EfficientNet の構造。

NAS-FPN 検索スペース

NAS-FPN 検索スペースは、下図のように、オブジェクト検出で異なるレベルの特徴を接続する FPN レイヤの検索スペースを定義します。

NAS-FPN の構造。

SpineNet 検索スペース

SpineNet 検索スペースは、スケール交換の中間特徴とクロススケール接続があるバックボーンの検索を可能にし、1 ステージのオブジェクト検出で優れたパフォーマンスを実現します。COCO では計算量が 60% 削減され、ResNet-FPN に比べて 6% AP 優れたパフォーマンスが得られます。以下に、検索された SpineNet-49 アーキテクチャのバックボーン レイヤの接続を示します。

SpineNet の構造。

データ拡張検索スペース

最適なアーキテクチャが検索されたら、最適なデータ拡張ポリシーを検索できます。データ拡張により、以前に検索されたアーキテクチャの精度をさらに高めることができます。

Neural Architecture Search プラットフォームには、2 つのタスク((a)オブジェクト検出の randaugment_detection と(b)セグメンテーションの randaugment_segmentation)用に、RandAugment と AutoAugment 拡張検索スペースが用意されています。これは、トレーニング データに適用する拡張オペレーション(自動コントラスト、傾斜、回転など)をリストから選択します。

RandAugment 検索スペース

RandAugment の検索スペースは 2 つのパラメータで構成されます。1 つは、画像に適用される連続拡張オペレーションの数を表す N、もう 1 つは、これらのオペレーションのすべての強度を表す M です。たとえば、次の図は M=magnitude が異なる N=2 オペレーション(傾斜とコントラスト)を画像に適用する例を示しています。

RandAugment が適用された画像。

N の値を指定すると、オペレーションのリストがオペレーション バンクからランダムに選択されます。拡張検索では、現在のトレーニング ジョブの NM に最適な値を見つけます。この検索ではプロキシタスクを使用しないため、最後にトレーニング ジョブが実行されます。

AutoAugment 検索スペース

AutoAugment 検索スペースでは、オペレーションの choicemagnitudeprobability を検索して、モデルのトレーニングを最適化できます。AutoAugment 検索スペースでは、RandAugment がサポートしていないポリシーの選択肢を検索できます。