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 検索スペース ファミリーには、
spinenet
、spinenet_v2
、spinenet_mbconv
、spinenet_scaling
があります。通常、これらはオブジェクト検出にも使用されます。SpineNet の詳細については、こちらのセクションをご覧ください。spinenet
は、このファミリーの基本検索スペースです。検索中に残余ブロックとボトルネック ブロックの両方の候補を提供します。spinenet_v2
はspinenet
の小型版で、検索中にボトルネック ブロックの候補のみを提供し、収束を高速化します。spinenet_mbconv
はモバイル プラットフォーム用のspinenet
バージョンで、検索中に mbconv ブロックの候補を使用します。spinenet_scaling
は通常、spinenet
検索スペースで適切なアーキテクチャを検索した後に、レイテンシ要件に応じてスケールアップまたはスケールダウンを行うために使用されます。この検索は、画像サイズ、フィルタ数、フィルタサイズ、ブロックの繰り返し数などに基づいて実行されます。
RandAugment と AutoAugment の検索スペースを使用すると、それぞれ検出とセグメンテーションの最適なデータ拡張オペレーションを検索できます。注: 通常、データの拡張は適切なモデルを検索した後に使用されます。DataAugmentation の詳細については、こちらのセクションをご覧ください。
3D ポイント クラウドの Lidar 検索スペースには、フィーチャライザ、バックボーン、デコーダ、検出ヘッドに関するエンドツーエンドの検索が示されています。
PyTorch 3D 医療画像セグメンテーション検索スペースの例には、UNet エンコーダと UNet デコーダでの検索が示されています。
ほとんどの場合、これらのデフォルトの検索スペースで十分です。しかし、必要な場合は、PyGlove ライブラリを使用して、こうした既存のスペースをカスタマイズすることや、新しいスペースを追加することが可能です。NAS-FPN 検索スペースを指定するサンプルコードをご覧ください。
MNasnet と EfficientNetV2 検索スペース
MNasNet 検索スペースと EfficientV2 検索スペースは、ConvOps
、KernelSize
、ChannelSize
などの異なる backbone
ビルド オプションを定義します。backbone
は、分類や検出など、さまざまなタスクに使用できます。
NAS-FPN 検索スペース
NAS-FPN 検索スペースは、下図のように、オブジェクト検出で異なるレベルの特徴を接続する FPN レイヤの検索スペースを定義します。
SpineNet 検索スペース
SpineNet 検索スペースは、スケール交換の中間特徴とクロススケール接続があるバックボーンの検索を可能にし、1 ステージのオブジェクト検出で優れたパフォーマンスを実現します。COCO では計算量が 60% 削減され、ResNet-FPN に比べて 6% AP 優れたパフォーマンスが得られます。以下に、検索された SpineNet-49 アーキテクチャのバックボーン レイヤの接続を示します。
データ拡張検索スペース
最適なアーキテクチャが検索されたら、最適なデータ拡張ポリシーを検索できます。データ拡張により、以前に検索されたアーキテクチャの精度をさらに高めることができます。
Neural Architecture Search プラットフォームには、2 つのタスク((a)オブジェクト検出の randaugment_detection と(b)セグメンテーションの randaugment_segmentation)用に、RandAugment と AutoAugment 拡張検索スペースが用意されています。これは、トレーニング データに適用する拡張オペレーション(自動コントラスト、傾斜、回転など)をリストから選択します。
RandAugment 検索スペース
RandAugment の検索スペースは 2 つのパラメータで構成されます。1 つは、画像に適用される連続拡張オペレーションの数を表す N
、もう 1 つは、これらのオペレーションのすべての強度を表す M
です。たとえば、次の図は M=magnitude が異なる N=2 オペレーション(傾斜とコントラスト)を画像に適用する例を示しています。
N の値を指定すると、オペレーションのリストがオペレーション バンクからランダムに選択されます。拡張検索では、現在のトレーニング ジョブの N
と M
に最適な値を見つけます。この検索ではプロキシタスクを使用しないため、最後にトレーニング ジョブが実行されます。
AutoAugment 検索スペース
AutoAugment 検索スペースでは、オペレーションの choice
、magnitude
、probability
を検索して、モデルのトレーニングを最適化できます。AutoAugment 検索スペースでは、RandAugment がサポートしていないポリシーの選択肢を検索できます。