Freigeben über


ROIPooling

    ROIPooling (input,
                ROIs,
                {ROI output shape}, 
                spatialScale = {spatial scale wrt image (float)})

Der ROI-Pooling-Vorgang berechnet eine neue Matrix, indem sie den maximalen (max. Pooling)-Wert in der Pooling-Eingabe für jede Region von Interesse (ROI) auswählen. Die Interessenbereiche werden als zweite Eingabe des Operators als obere linke und untere rechte Ecke der Regionen in absoluten Pixeln des ursprünglichen Bilds angegeben. Die Poolingeingabe wird pro ROI berechnet, indem die Koordinaten auf die Eingabefeaturezuordnung (erste Eingabe des Operators) und alle überlappenden Positionen berücksichtigt werden. Die Projektion verwendet die "räumliche Skalierung", die das Größenverhältnis der Eingabefeaturezuordnung über die Eingabebildgröße darstellt. Die räumliche Skalierung kann berechnet werden, indem alle Schritte multipliziert werden, die vor dem ROI-Pooling auftreten und das Umgekehrte nehmen, z. B. ein Netzwerk, das vier Pooling-Ebenen mit Stride zwei aufweist, eine räumliche Skalierung von 1/16 haben. Die Breite und Höhe der Ausgabeform werden durch das dritte Argument bestimmt, die Ausgabetiefe (Anzahl der Filter) entspricht der Eingabetiefe.

  • input - Pooling-Eingabe für das gesamte Bild
  • ROIs - ROI-Koordinaten als absolute Pixelkoordinaten (x_min, y_min, x_max, y_max)
  • {roi output shape} - Dimensionen (Breite, Höhe) der ROI-Ausgabe als BrainScript-Vektor, z. B. (4:4).
  • spatialScale - die Skalierung des Operanden aus der ursprünglichen Bildgröße. Der Standardwert ist 1/16, der z. B. AlexNet- und VGG16-Netzwerke entspricht.

Hinweis

Geändert in CNTK Version 2.1.

In CNTK 2.1 wurde der räumliche Skalierungsparameter hinzugefügt und die Koordinaten der ROIs werden jetzt als absolute Pixelwerte statt relativer Werte wie in früheren Versionen übergeben.