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:
- Lidar-Suchbereich für 3D-Punktwolken
- Beispiel: Suchbereich der medizinischen 3D-Bildsegmentierung von PyTorch
- Beispiel: PyTorch MnasNet-Suchbereich
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
undspinenet_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 vonspinenet
, die bei der schnelleren Konvergenz nur bei Engpass-Blockkandidaten während der Suche helfen kann.spinenet_mbconv
bietet eine Version vonspinenet
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 Suchbereichspinenet
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.
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.
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.
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.
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.