Vordefinierte Suchbereiche

Der Suchbereich der Neural Architecture Search ist entscheidend für eine gute Leistung. Er definiert alle potenziellen Architekturen/Parameter für die Erkundung und Suche. Neural Architecture Search bietet eine Reihe von Standardsuchbereichen in der Datei search_spaces.py:

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

Außerdem stellen wir folgenden Beispiele für Suchbereiche bereit:

Das Lidar-Notebook veröffentlicht Prüfungsergebnisse im Notebook. Der Rest des PyTorch-Suchbereichscode sollte nur als Beispiel und nicht für das Benchmarking verwendet werden.

Jeder dieser Suchbereiche hat einen bestimmten Anwendungsfall:

  • Der MNasNet-Suchbereich wird für die Bildklassifizierung und Objekterkennung verwendet und basiert auf der Architektur MobileNetV2.
  • Der EfficientNetV2-Suchbereich wird für Objekterkennungsaufgaben verwendet. EfficientNetV2 fügt neue Vorgänge hinzu, z. B. Fused-MBConv. Weitere Informationen finden Sie im EfficientNetV2-Artikel.
  • Der NAS-FPN-Suchbereich wird normalerweise für die Objekterkennung verwendet. Eine detaillierte Beschreibung finden Sie in diesem Abschnitt.
  • Zur SpineNet-Familie an Suchbereichen gehören spinenet, spinenet_v2, spinenet_mbconv und spinenet_scaling. Diese werden normalerweise auch für die Objekterkennung verwendet. Eine detaillierte Beschreibung für SpineNet finden Sie in diesem Abschnitt.

    • spinenet ist der Basissuchbereich in dieser Familie, der sowohl Rest- als auch Engpass-Blockkandidaten während der Suche bietet.
    • spinenet_v2 bietet eine kleinere Version von spinenet, die bei der schnelleren Konvergenz nur bei Engpass-Blockkandidaten während der Suche helfen kann.
    • spinenet_mbconv bietet eine Version von spinenet für mobile Plattformen und verwendet mbconv-Blockkandidaten während der Suche.
    • spinenet_scaling wird in der Regel verwendet, nachdem eine gute Architektur über den Suchbereich spinenet gefunden wurde, um sie vertikal oder horizontal zu skalieren und somit die Latenzanforderungen zu erfüllen. Diese Suche wird anhand von Themen wie Bildgröße, Anzahl der Filter, Filtergröße und Anzahl der Blockwiederholungen durchgeführt.
  • Mit den Suchbereichen RandAugment und AutoAugment können Sie nach optimalen Datenerweiterungsvorgängen für die Erkennung bzw. Segmentierung suchen. Hinweis: Die Datenerweiterung wird in der Regel verwendet, nachdem ein gutes Modell bereits gesucht wurde. Eine detaillierte Beschreibung von DataAugmentation finden Sie in diesem Abschnitt.

  • Der Lidar-Suchbereich für 3D-Punktwolken zeigt die End-to-End-Suche für Feuchtigkeit, Backbone, Decoder und Erkennungskopf.

  • Das Beispiel für den Suchbereich der PyDrch 3D-Bildsegmentierung zeigt die Suche im UNet-Encoder und im NetNet-Decoder.

In den meisten Fällen sind diese Standardsuchbereiche ausreichend. Bei Bedarf können Sie diese jedoch anpassen oder mithilfe der PyGlove-Bibliothek eine neue hinzufügen. Verwenden Sie den Beispielcode, um den NAS-FPN-Suchbereich anzugeben.

MNasnet- und EfficientNetV2-Suchbereich

Die MNasNet- und EfficientV2-Suchbereiche definieren verschiedene backbone-Build-Optionen wie ConvOps, KernelSize, ChannelSize. backbone kann für verschiedene Aufgaben wie Klassifizierung und Erkennung verwendet werden.

Die Struktur von EfficientNet.

NAS-FPN-Suchbereich

Der NAS-FPN-Suchbereich definiert den Suchbereich in den FPN-Schichten, die verschiedene Ebenen von Merkmalen für die Objekterkennung verbinden, wie in der folgenden Abbildung dargestellt.

Die Struktur von NAS-FPN.

SpineNet-Suchbereich

Der SpineNet-Suchbereich ermöglicht die Suche nach einem Backbone mit skalenreduzierten Zwischenmerkmalen und skalenübergreifenden Verbindungen, wodurch die modernste Leistung eines einstufigen Objektdetektors auf COCO mit 60 % weniger Rechenaufwand erreicht wird und die Entsprechungen von ResNet-FPN um 6 % AP übertroffen werden. Im Folgenden finden Sie die Verbindungen von Backbone-Ebenen in der durchsuchten SpineNet-49-Architektur.

Die Struktur von SpineNet.

Suchbereich der Datenerweiterung

Nachdem die beste Architektur bereits gesucht wurde, können Sie auch nach einer geeigneten Richtlinie zur Datenerweiterung suchen. Die Datenerweiterung kann die Genauigkeit der zuvor durchsuchten Architektur weiter verbessern.

Die Plattform für die Neural Architecture Search bietet Suchbereiche für die Erweiterung RandAugustment und AutoAugustment für zwei Aufgaben: (a) randaugment_detection für die Objekterkennung und (b) randaugment_segmentation für die Segmentierung. Es wird intern zwischen einer Liste von Erweiterungsvorgängen wie automatischer Kontrast, Scherung oder Rotation ausgewählt, die auf die Trainingsdaten angewendet werden sollen.

RandAugment-Suchbereich

Der RandAugustment-Suchbereich wird durch zwei Parameter konfiguriert: (a) N ist die Anzahl der aufeinanderfolgenden Erweiterungsvorgänge, die auf ein Bild angewendet werden sollen, und (b) M, das die Größe ALL dieser Vorgänge ist. Das folgende Bild zeigt beispielsweise ein Beispiel, bei dem N=2-Vorgänge (Shear und Contrast) mit unterschiedlichen M=Magnitude auf ein Bild angewendet werden.

RandAugment wurde auf ein Image angewendet.

Für einen bestimmten Wert von N wird die Liste der Vorgänge nach dem Zufallsprinzip von der Vorgangsbank ausgewählt. Die Erweiterungssuche ermittelt den besten Wert von N und M für den aktuellen Trainingsjob. Die Suche verwendet keine Proxy-Aufgabe und führt daher die Trainingsjobs bis zum Ende durch.

AutoAugment-Suchbereich

Im AutoAugment-Suchbereich können Sie nach choice-, magnitude- und probability-Vorgängen suchen, um Ihr Modelltraining zu optimieren. Im AutoAugment-Suchbereich können Sie nach den Auswahlmöglichkeiten der Richtlinie suchen, die RandAugment nicht unterstützt.