Trainieren eines Erkennungsmodells für kleine Objekte mit automatisiertem ML

GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

In diesem Artikel erfahren Sie, wie Sie ein Objekterkennungsmodell trainieren, um kleine Objekte in Bildern mit hoher Auflösung mit automatisiertem ML in Azure Machine Learning zu erkennen.

In der Regel funktionieren Modelle des maschinellen Sehens zur Objekterkennung gut für Datasets mit relativ großen Objekten. Aufgrund von Arbeitsspeicher- und Berechnungseinschränkungen sind diese Modelle jedoch tendenziell unzureichend, wenn es um die Erkennung kleiner Objekte in hochauflösenden Bildern geht. Da hochauflösende Bilder in der Regel groß sind, werden sie vor der Eingabe in das Modell verkleinert, was ihre Fähigkeit zur Erkennung kleinerer Objekte im Verhältnis zur ursprünglichen Bildgröße einschränkt.

Um dieses Problem zu lösen, unterstützt das automatisierte ML die Kachelung im Rahmen des maschinellen Sehens. Die Kachelungsfunktion beim automatisierten ML basiert auf den Konzepten unter The Power of Tiling for Small Object Detection (Die Leistungsfähigkeit der Kachelung für die Erkennung kleiner Objekte).

Bei der Kachelung wird jedes Bild in ein Raster von Kacheln unterteilt. Angrenzende Kacheln überlappen sich in Breite und Höhe. Die Kacheln werden, wie in der folgenden Abbildung gezeigt, aus dem Original zugeschnitten.

Diagramm, das zeigt, wie ein Bild in ein Raster aus sich überlappenden Kacheln aufgeteilt wird.

Voraussetzungen

Unterstützte Modelle

Die Erkennung von kleinen Objekten mithilfe der Kachelung wird für alle Modelle unterstützt, die vom automatisierten ML für Bilder für Objekterkennungsaufgaben unterstützt werden.

Aktivieren der Kachelung während des Trainings

Um die Kachelung zu aktivieren, können Sie den tile_grid_size-Parameter auf einen Wert wie „3x2“ festlegen, wobei 3 für die Anzahl der Kacheln in der Breite und 2 für die Anzahl der Kacheln in der Höhe steht. Wenn dieser Parameter auf „3x2“ festgelegt ist, wird jedes Bild in ein Raster von 3 × 2 Kacheln aufgeteilt. Jede Kachel überschneidet sich mit den angrenzenden Kacheln, sodass alle Objekte, die auf den Kachelrand fallen, vollständig in einer der Kacheln enthalten sind. Diese Überlappung wird durch den tile_overlap_ratio-Parameter gesteuert, der standardmäßig auf 25 % eingestellt ist.

Wenn die Kachelung aktiviert ist, werden das gesamte Bild und die daraus erzeugten Kacheln durch das Modell geleitet. Diese Bilder und Kacheln werden vor der Zuführung zum Modell entsprechend den Parametern min_size und max_size skaliert. Die Berechnungszeit erhöht sich proportional durch die Verarbeitung dieser zusätzlichen Daten.

Wenn der tile_grid_size-Parameter z. B. „3x2“ ist, wäre die Berechnungszeit etwa siebenmal höher als ohne Kacheln.

Sie können den Wert für tile_grid_size in Ihren Trainingsparametern als Zeichenfolge angeben.

GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)

training_parameters:
  tile_grid_size: '3x2'

Der Wert des tile_grid_size-Parameters hängt von den Bildabmessungen und der Größe der Objekte im Bild ab. Eine größere Anzahl von Kacheln wäre z. B. hilfreich, wenn sich kleinere Objekte in den Bildern befinden.

Um den optimalen Wert für diesen Parameter für Ihr Dataset zu wählen, können Sie die Hyperparametersuche verwenden. Hierzu können Sie eine Auswahl von Werten für diesen Parameter in Ihrem Hyperparameterbereich angeben.

GILT FÜRAzure CLI ML-Erweiterung v2 (aktuell)

search_space:
  - model_name:
      type: choice
      values: ['fasterrcnn_resnet50_fpn']
    tile_grid_size:
      type: choice
      values: ['2x1', '3x2', '5x3']

Kachelung während des Rückschließens

Wenn ein mit Kacheln trainiertes Modell bereitgestellt wird, erfolgt die Kachelung auch während des Rückschließens. Das automatisierte ML verwendet den tile_grid_size-Wert aus dem Training, um die Kacheln während des Rückschließens zu generieren. Das gesamte Bild und die entsprechenden Kacheln werden durch das Modell geleitet, und die Objektvorschläge werden zusammengeführt, um endgültige Vorhersagen zu erstellen, wie im folgenden Bild zu sehen.

Diagramm, das die Objektvorschläge aus Bild und Kacheln zeigt, die zu den endgültigen Vorhersagen zusammengeführt werden.

Hinweis

Es ist möglich, dass dasselbe Objekt von mehreren Kacheln aus erkannt wird. Um solche Duplikate zu entfernen, wird eine Duplikatserkennung durchgeführt.

Die Erkennung von Duplikaten erfolgt, indem NMS auf die Vorschläge aus den Kacheln und dem Bild angewendet wird. Wenn sich mehrere Vorschläge überlappen, wird derjenige mit dem höchsten Score ausgewählt und die anderen werden als Duplikate verworfen. Zwei Vorschläge gelten als überlappend, wenn IoU (Intersection over Union) zwischen ihnen größer ist als der tile_predictions_nms_thresh-Parameter.

Sie haben auch die Möglichkeit, die Kachelung nur während des Rückschließens zu aktivieren, ohne sie im Training zu aktivieren. Legen Sie den tile_grid_size-Parameter daher nur für den Rückschluss, nicht für das Training fest.

Dadurch kann die Leistung für einige Datasets verbessert werden, und es entstehen keine zusätzlichen Kosten, die durch die Kachelung zum Zeitpunkt des Trainings entstehen.

Hyperparameter für die Kachelung

Im Folgenden sind die Parameter aufgeführt, die Sie zur Steuerung des Kachelungsfeatures verwenden können.

Parametername BESCHREIBUNG Standard
tile_grid_size Die Rastergröße, die für die Kachelung der einzelnen Bilder verwendet werden soll. Kann beim Training, bei der Validierung und beim Rückschließen verwendet werden.

Sollte als Zeichenfolge im '3x2'-Format übergeben werden.

Hinweis: Die Einstellung dieses Parameters erhöht die Berechnungszeit proportional, da alle Kacheln und Bilder vom Modell verarbeitet werden.
Kein Standardwert
tile_overlap_ratio Steuert das Überlappungsverhältnis zwischen angrenzenden Kacheln in den einzelnen Dimensionen. Wenn die Objekte, die auf die Kachelgrenze fallen, zu groß sind, um vollständig in eine der Kacheln zu passen, erhöhen Sie den Wert dieses Parameters, sodass die Objekte in mindestens eine der Kacheln vollständig passen.

Muss ein Gleitkommawert in [0, 1] sein.
0,25
tile_predictions_nms_thresh Der IoU-Schwellenwert (Intersection over Union), der verwendet wird, um die nicht maximale Unterdrückung (NMS) bei der Zusammenführung von Vorhersagen aus Kacheln und Bild durchzuführen. Verfügbar während der Validierung und des Rückschließens. Ändern Sie diesen Parameter, wenn in den endgültigen Vorhersagen mehrere Felder pro Objekt erkannt werden.

Muss ein Gleitkommawert in [0, 1] sein.
0,25

Beispielnotebooks

Im Beispielnotebook zur Objekterkennung finden Sie ausführliche Beispiele für die Einrichtung und das Training eines Objekterkennungsmodells.

Hinweis

Alle Bilder in diesem Artikel werden in Übereinstimmung mit dem Abschnitt über die erlaubte Verwendung des MIT-Lizenzvertrags zur Verfügung gestellt. Copyright © 2020 Roboflow, Inc.

Nächste Schritte